using Microsoft.EntityFrameworkCore; using Modules.Library.Database.Database; using Modules.Library.Database.Database.Models.Anime; using System.Linq.Expressions; namespace Modules.Library.Database.Repositories; //public class AnimeTitleRepository(LibraryDbContext context) : RepositoryBase(context) public class AnimeTitleRepository(LibraryDbContext context) { private readonly LibraryDbContext _context = context; internal async Task AddAsync(AnimeTitle animeTitle) { _context.AnimeTitles.Add(animeTitle); await _context.SaveChangesAsync(); return animeTitle.Id; } private IQueryable QueryFullIncludes() => _context.AnimeTitles .Include(q => q.CommonProperties).ThenInclude(q => q.Names) .Include(q => q.CommonProperties).ThenInclude(q => q.Descriptions) .Include(q => q.CommonProperties).ThenInclude(q => q.RelatedContent) .Include(q => q.CommonProperties).ThenInclude(q => q.Genres) .Include(q => q.CommonProperties).ThenInclude(q => q.Preview) .Include(q => q.Items).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Names) .Include(q => q.Items).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Descriptions) .Include(q => q.Items).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.RelatedContent) .Include(q => q.Items).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Genres) .Include(q => q.Items).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Preview) .AsQueryable(); internal async Task> GetAllAsync() => await QueryFullIncludes().ToListAsync(); internal async Task GetFirstWhere(Expression> predicate) => await QueryFullIncludes().FirstAsync(predicate); internal async Task UpdateAsync(AnimeTitle animeTitle) { var dbTitle = await GetFirstWhere(q => q.Id == animeTitle.Id); CommonPropertiesHelper.SyncCommonProperties(dbTitle.CommonProperties, animeTitle.CommonProperties); //NOT UPDATE INNER ITEMS dbTitle.ExpirationTime = animeTitle.ExpirationTime; dbTitle.Completed = animeTitle.Completed; await _context.SaveChangesAsync(); } //protected override async Task SoftDeleteAsync(AnimeTitle entity) //{ // entity.Deleted = true; // return await UpdateAsync(entity); //} /* public async Task AddAsync(Domain.Entities.MediaContent.Items.Anime.AnimeTitle entity, IUser user) => await AddAsync(ToDbConverter.Title(entity)); public Task AnyWhere(Expression> predicate) { var p = predicate. } public Task DeleteAsync(Domain.Entities.MediaContent.Items.Anime.AnimeTitle entity, IUser user) { throw new NotImplementedException(); } public Task GetByIdAsync(string id) { throw new NotImplementedException(); } public Task GetByIdOrDefaultAsync(string id) { throw new NotImplementedException(); } public Task GetFirstOrDefaultWhere(Expression> predicate) { throw new NotImplementedException(); } public Task GetFirstWhere(Expression> predicate) { throw new NotImplementedException(); } public Task> GetRangeByIdsAsync(List ids) { throw new NotImplementedException(); } public Task> GetWhere(Expression> predicate) { throw new NotImplementedException(); } public Task UpdateAsync(Domain.Entities.MediaContent.Items.Anime.AnimeTitle entity, IUser user) { throw new NotImplementedException(); } Task> Application.Gateways.IRepository.GetAllAsync() { throw new NotImplementedException(); } */ }