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); } }