Продолжение работы над фундаментальным обновлением проекта (всё ещё без сборки)

This commit is contained in:
2025-05-13 01:22:59 +04:00
parent f3d710d7d7
commit 5d2982330d
56 changed files with 1017 additions and 829 deletions
@@ -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();
}
}