using System.Linq;
using System.Threading;
using Pf2e.Database;
using Slugify;
namespace Pf2e.Scrapper.Helpers;
///
/// Класс предоставляет методы для работы с базой данных.
///
public class DatabaseHelper
{
///
/// Context для доступа к базе данных.
///
public Pf2eDbContext Context { get; } = new();
///
/// Сервис для работы с URL-Slug. Используется для преобразования названий в URL-friendly формат.
///
public SlugHelper Slugger { get; }
///
/// Последний найденный идентификатор сущности.
/// Используется для генерации новых ID сущностей.
///
private int _id;
///
/// Генерирует новый уникальный идентификатор сущности. и возвращает его.
///
public int NextEntityId => ++_id;
///
/// Блокировщик для генерации идентификаторов сущностей.
///
public Lock IdLock { get; } = new();
///
/// Конструктор класса
///
/// [DI] Сервис для работы с URL-Slug
public DatabaseHelper(SlugHelper slugHelper)
{
Slugger = slugHelper;
_id = Context.Entities.Any() ? Context.Entities.Max(e => e.Id) : 0;
}
///
/// Генерирует slug из названия.
///
public string GenerateSlug(string name)
{
return Slugger.GenerateSlug(name);
}
}