108 lines
4.4 KiB
C#
108 lines
4.4 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 AnimeTitleRepository(LibraryDbContext context) : RepositoryBase<AnimeTitle>(context)
|
|
public class AnimeTitleRepository(LibraryDbContext context)
|
|
{
|
|
private readonly LibraryDbContext _context = context;
|
|
|
|
internal async Task<Guid> AddAsync(AnimeTitle animeTitle)
|
|
{
|
|
_context.AnimeTitles.Add(animeTitle);
|
|
await _context.SaveChangesAsync();
|
|
return animeTitle.Id;
|
|
}
|
|
|
|
private IQueryable<AnimeTitle> 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<IEnumerable<AnimeTitle>> GetAllAsync() => await QueryFullIncludes().ToListAsync();
|
|
|
|
internal async Task<AnimeTitle> GetFirstWhere(Expression<Func<AnimeTitle, bool>> 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<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();
|
|
}
|
|
*/
|
|
} |