Продолжение работы над фундаментальным обновлением проекта (всё ещё без сборки)
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using Pf2eModel;
|
||||
using Slugify;
|
||||
|
||||
namespace Pf2eDataScrapper.Helpers;
|
||||
|
||||
/// <summary>
|
||||
/// Класс предоставляет методы для работы с базой данных.
|
||||
/// </summary>
|
||||
public class DatabaseHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Последний найденный идентификатор сущности.
|
||||
/// Используется для генерации новых ID сущностей.
|
||||
/// </summary>
|
||||
private int _id;
|
||||
|
||||
/// <summary>
|
||||
/// Генерирует новый уникальный идентификатор сущности. и возвращает его.
|
||||
/// </summary>
|
||||
public int NextEntityId => ++_id;
|
||||
|
||||
/// <summary>
|
||||
/// Сервис для работы с URL-Slug. Используется для преобразования названий в URL-friendly формат.
|
||||
/// </summary>
|
||||
public readonly SlugHelper Slugger = new();
|
||||
|
||||
/// <summary>
|
||||
/// Context для доступа к базе данных.
|
||||
/// </summary>
|
||||
public readonly Pf2eDbContext Context = new();
|
||||
|
||||
private DatabaseHelper()
|
||||
{
|
||||
_id = Context.Entities.Any() ? Context.Entities.Max(e => e.Id) : 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Генерирует slug из названия.
|
||||
/// </summary>
|
||||
public string GenerateSlug(string name)
|
||||
{
|
||||
return Slugger.GenerateSlug(name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает singleton-инстанцию класса <see cref="DatabaseHelper"/>.
|
||||
/// </summary>
|
||||
public static readonly DatabaseHelper Instance = new();
|
||||
|
||||
/// <summary>
|
||||
/// Контекст для доступа к базе данных.
|
||||
/// </summary>
|
||||
public static Pf2eDbContext DbContext => Instance.Context;
|
||||
|
||||
/// <summary>
|
||||
/// Обновляет контекст и сохраняет изменения в базе данных.
|
||||
/// </summary>
|
||||
public static void ResetContext()
|
||||
{
|
||||
Instance.Context.SaveChanges();
|
||||
// Instance.Context.Dispose();
|
||||
// Instance.Context = new();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user