MyBookmark/Modules.Library.Database/Repositories/AnimeSeasonRepository.cs
THE_KONDRAT 3294f8d88d title:
non season episode
seasons
2024-12-29 19:41:07 +03:00

118 lines
4.8 KiB
C#

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 AnimeSeasonRepository(AnimeTitleRepository titleRepository, LibraryDbContext context)
{
private readonly LibraryDbContext _context = context;
internal async Task<Guid> AddAsync(Guid animeTitleId, AnimeSeason animeSeason)
{
var dbTitle = await titleRepository.GetFirstWhere(q => q.Id == animeTitleId);
dbTitle.Items.Add(animeSeason);
await _context.SaveChangesAsync();
return animeSeason.Id;
}
private IQueryable<AnimeSeason> QueryFullIncludes() => _context.AnimeSeasons
.Include(q => q.Title)
.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.Episodes).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Names)
.Include(q => q.Episodes).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Descriptions)
.Include(q => q.Episodes).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.RelatedContent)
.Include(q => q.Episodes).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Genres)
.Include(q => q.Episodes).ThenInclude(q => q.CommonProperties).ThenInclude(q => q.Preview)
.AsQueryable();
//internal async Task<IEnumerable<AnimeTitle>> GetAllAsync() => await QueryFullIncludes().ToListAsync();
internal async Task<AnimeSeason> GetFirstWhere(Expression<Func<AnimeSeason, bool>> predicate) =>
await QueryFullIncludes().FirstAsync(predicate);
internal async Task UpdateAsync(Guid titleId, AnimeSeason animeSeason)
{
var dbSeason = await GetFirstWhere(q => q.Title.Id == titleId && q.Id == animeSeason.Id);
CommonPropertiesHelper.SyncCommonProperties(dbSeason.CommonProperties, animeSeason.CommonProperties);
dbSeason.ExpirationTime = animeSeason.ExpirationTime;
dbSeason.Completed = animeSeason.Completed;
dbSeason.Deleted = animeSeason.Deleted;
await _context.SaveChangesAsync();
}
internal async Task DeleteAsync(Guid titleId, Guid animeSeasonId)
{
var dbSeason = await GetFirstWhere(q => q.Title.Id == titleId && q.Id == animeSeasonId);
_context.AnimeSeasons.Remove(dbSeason);
await _context.SaveChangesAsync();
}
//protected override async Task<bool> 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<bool> AnyWhere(Expression<Func<Domain.Entities.MediaContent.Items.Anime.AnimeTitle, bool>> predicate)
{
var p = predicate.
}
public Task<bool> DeleteAsync(Domain.Entities.MediaContent.Items.Anime.AnimeTitle entity, IUser user)
{
throw new NotImplementedException();
}
public Task<Domain.Entities.MediaContent.Items.Anime.AnimeTitle> GetByIdAsync(string id)
{
throw new NotImplementedException();
}
public Task<Domain.Entities.MediaContent.Items.Anime.AnimeTitle?> GetByIdOrDefaultAsync(string id)
{
throw new NotImplementedException();
}
public Task<Domain.Entities.MediaContent.Items.Anime.AnimeTitle?> GetFirstOrDefaultWhere(Expression<Func<Domain.Entities.MediaContent.Items.Anime.AnimeTitle, bool>> predicate)
{
throw new NotImplementedException();
}
public Task<Domain.Entities.MediaContent.Items.Anime.AnimeTitle> GetFirstWhere(Expression<Func<Domain.Entities.MediaContent.Items.Anime.AnimeTitle, bool>> predicate)
{
throw new NotImplementedException();
}
public Task<List<Domain.Entities.MediaContent.Items.Anime.AnimeTitle>> GetRangeByIdsAsync(List<string> ids)
{
throw new NotImplementedException();
}
public Task<List<Domain.Entities.MediaContent.Items.Anime.AnimeTitle>> GetWhere(Expression<Func<Domain.Entities.MediaContent.Items.Anime.AnimeTitle, bool>> predicate)
{
throw new NotImplementedException();
}
public Task<bool> UpdateAsync(Domain.Entities.MediaContent.Items.Anime.AnimeTitle entity, IUser user)
{
throw new NotImplementedException();
}
Task<List<Domain.Entities.MediaContent.Items.Anime.AnimeTitle>> Application.Gateways.IRepository<Domain.Entities.MediaContent.Items.Anime.AnimeTitle, string>.GetAllAsync()
{
throw new NotImplementedException();
}
*/
}