using Microsoft.EntityFrameworkCore; namespace HyperBooru.Services; public interface IMediaService { public void SetDescription( Media media, string? shortDescription, string? longDescription); public void SetIngest(Media media, bool ingest); } public class MediaService : IMediaService { private IDbContextFactory dbFactory; public MediaService(IDbContextFactory dbFactory) => this.dbFactory = dbFactory; public void SetIngest(Media media, bool ingest) { using var db = dbFactory.CreateDbContext(); media = db.Media.First(m => m.Guid == media.Guid); var ingestTag = db.TagDefinitions .First(td => td.Guid == HBContext.IngestTag); if(ingest) media.Tags.Add(new(ingestTag)); else media.Tags.RemoveAll(t => t.TagDefinition.Guid == ingestTag.Guid); db.SaveChanges(); } public void SetDescription( Media media, string? shortDescription, string? longDescription) { using var db = dbFactory.CreateDbContext(); var m = db.Media.First(m => m.Guid == media.Guid); shortDescription = shortDescription?.Trim(); longDescription = longDescription?.Trim(); if(string.IsNullOrEmpty(shortDescription)) shortDescription = null; if(string.IsNullOrEmpty(longDescription)) longDescription = null; m.ShortDescription = shortDescription; m.LongDescription = longDescription; db.SaveChanges(); } }