Finishing to rework repositories

This commit is contained in:
Zoe Roux 2020-08-16 01:11:29 +02:00
parent 76e28d6ac2
commit a258e89080
11 changed files with 26 additions and 31 deletions

View File

@ -96,7 +96,7 @@ namespace Kyoo.Controllers
return await query.ToListAsync();
}
public abstract Task<T> Create(T obj);
public abstract Task<T> Create([NotNull] T obj);
public virtual async Task<T> CreateIfNotExists(T obj)
{

View File

@ -10,11 +10,11 @@ using Microsoft.Extensions.DependencyInjection;
namespace Kyoo.Controllers
{
public class GenreRepository : LocalRepository<Genre>, IGenreRepository
public class GenreRepository : LocalRepository<Genre, GenreDE>, IGenreRepository
{
private readonly DatabaseContext _database;
private readonly Lazy<IShowRepository> _shows;
protected override Expression<Func<Genre, object>> DefaultSort => x => x.Slug;
protected override Expression<Func<GenreDE, object>> DefaultSort => x => x.Slug;
public GenreRepository(DatabaseContext database, IServiceProvider services) : base(database)
@ -42,10 +42,10 @@ namespace Kyoo.Controllers
return await _database.Genres
.Where(genre => EF.Functions.ILike(genre.Name, $"%{query}%"))
.Take(20)
.ToListAsync();
.ToListAsync<Genre>();
}
public override async Task<Genre> Create(Genre obj)
public override async Task<GenreDE> Create(GenreDE obj)
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
@ -55,7 +55,7 @@ namespace Kyoo.Controllers
return obj;
}
public override async Task Delete(Genre obj)
public override async Task Delete(GenreDE obj)
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
@ -73,7 +73,7 @@ namespace Kyoo.Controllers
Pagination limit = default)
{
ICollection<Genre> genres = await ApplyFilters(_database.GenreLinks.Where(x => x.ShowID == showID)
.Select(x => x.Genre),
.Select(x => x.Genre as GenreDE),
where,
sort,
limit);
@ -89,7 +89,7 @@ namespace Kyoo.Controllers
{
ICollection<Genre> genres = await ApplyFilters(_database.GenreLinks
.Where(x => x.Show.Slug == showSlug)
.Select(x => x.Genre),
.Select(x => x.Genre as GenreDE),
where,
sort,
limit);

View File

@ -76,7 +76,7 @@ namespace Kyoo.Controllers
return ApplyFilters(ItemsQuery, where, sort, limit);
}
public override async Task<ICollection<LibraryItem>> Search(string query)
public async Task<ICollection<LibraryItem>> Search(string query)
{
return await ItemsQuery
.Where(x => EF.Functions.ILike(x.Title, $"%{query}%"))

View File

@ -50,11 +50,10 @@ namespace Kyoo.Controllers
.ToListAsync<Library>();
}
public override async Task<Library> Create(Library item)
public override async Task<LibraryDE> Create(LibraryDE obj)
{
if (item == null)
throw new ArgumentNullException(nameof(item));
LibraryDE obj = new LibraryDE(item);
if (obj == null)
throw new ArgumentNullException(nameof(obj));
await Validate(obj);
_database.Entry(obj).State = EntityState.Added;
@ -82,11 +81,10 @@ namespace Kyoo.Controllers
link.Provider = await _providers.CreateIfNotExists(link.Provider);
}
public override async Task Delete(Library item)
public override async Task Delete(LibraryDE obj)
{
if (item == null)
throw new ArgumentNullException(nameof(item));
LibraryDE obj = new LibraryDE(item);
if (obj == null)
throw new ArgumentNullException(nameof(obj));
_database.Entry(obj).State = EntityState.Deleted;
if (obj.ProviderLinks != null)

View File

@ -42,7 +42,7 @@ namespace Kyoo.Controllers
await _shows.Value.DisposeAsync();
}
public override async Task<ICollection<People>> Search(string query)
public async Task<ICollection<People>> Search(string query)
{
return await _database.People
.Where(people => EF.Functions.ILike(people.Name, $"%{query}%"))

View File

@ -4,7 +4,6 @@ using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using Kyoo.Models;
using Kyoo.Models.Exceptions;
using Microsoft.EntityFrameworkCore;
namespace Kyoo.Controllers
@ -20,7 +19,7 @@ namespace Kyoo.Controllers
_database = database;
}
public override async Task<ICollection<ProviderID>> Search(string query)
public async Task<ICollection<ProviderID>> Search(string query)
{
return await _database.Providers
.Where(x => EF.Functions.ILike(x.Name, $"%{query}%"))

View File

@ -70,7 +70,7 @@ namespace Kyoo.Controllers
&& x.SeasonNumber == seasonNumber);
}
public override async Task<ICollection<Season>> Search(string query)
public async Task<ICollection<Season>> Search(string query)
{
return await _database.Seasons
.Where(x => EF.Functions.ILike(x.Title, $"%{query}%"))

View File

@ -86,11 +86,10 @@ namespace Kyoo.Controllers
.ToListAsync<Show>();
}
public override async Task<Show> Create(Show item)
public override async Task<ShowDE> Create(ShowDE obj)
{
if (item == null)
throw new ArgumentNullException(nameof(item));
ShowDE obj = new ShowDE(item);
if (obj == null)
throw new ArgumentNullException(nameof(obj));
await Validate(obj);
_database.Entry(obj).State = EntityState.Added;
@ -148,11 +147,10 @@ namespace Kyoo.Controllers
}
}
public override async Task Delete(Show item)
public override async Task Delete(ShowDE obj)
{
if (item == null)
throw new ArgumentNullException(nameof(item));
ShowDE obj = new ShowDE(item);
if (obj == null)
throw new ArgumentNullException(nameof(obj));
_database.Entry(obj).State = EntityState.Deleted;

View File

@ -20,7 +20,7 @@ namespace Kyoo.Controllers
_database = database;
}
public override async Task<ICollection<Studio>> Search(string query)
public async Task<ICollection<Studio>> Search(string query)
{
return await _database.Studios
.Where(x => EF.Functions.ILike(x.Name, $"%{query}%"))

View File

@ -61,7 +61,7 @@ namespace Kyoo.Controllers
&& x.Language == language
&& x.IsForced == forced);
}
public override Task<ICollection<Track>> Search(string query)
public Task<ICollection<Track>> Search(string query)
{
throw new InvalidOperationException("Tracks do not support the search method.");
}