diff --git a/Kyoo.CommonAPI/LocalRepository.cs b/Kyoo.CommonAPI/LocalRepository.cs index f35eb3a9..742c1a2e 100644 --- a/Kyoo.CommonAPI/LocalRepository.cs +++ b/Kyoo.CommonAPI/LocalRepository.cs @@ -96,7 +96,7 @@ namespace Kyoo.Controllers return await query.ToListAsync(); } - public abstract Task Create(T obj); + public abstract Task Create([NotNull] T obj); public virtual async Task CreateIfNotExists(T obj) { diff --git a/Kyoo/Controllers/Repositories/GenreRepository.cs b/Kyoo/Controllers/Repositories/GenreRepository.cs index 4f35c06a..5a33204b 100644 --- a/Kyoo/Controllers/Repositories/GenreRepository.cs +++ b/Kyoo/Controllers/Repositories/GenreRepository.cs @@ -10,11 +10,11 @@ using Microsoft.Extensions.DependencyInjection; namespace Kyoo.Controllers { - public class GenreRepository : LocalRepository, IGenreRepository + public class GenreRepository : LocalRepository, IGenreRepository { private readonly DatabaseContext _database; private readonly Lazy _shows; - protected override Expression> DefaultSort => x => x.Slug; + protected override Expression> 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(); } - public override async Task Create(Genre obj) + public override async Task 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 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 genres = await ApplyFilters(_database.GenreLinks .Where(x => x.Show.Slug == showSlug) - .Select(x => x.Genre), + .Select(x => x.Genre as GenreDE), where, sort, limit); diff --git a/Kyoo/Controllers/Repositories/LibraryItemRepository.cs b/Kyoo/Controllers/Repositories/LibraryItemRepository.cs index 92a029a2..1298a421 100644 --- a/Kyoo/Controllers/Repositories/LibraryItemRepository.cs +++ b/Kyoo/Controllers/Repositories/LibraryItemRepository.cs @@ -76,7 +76,7 @@ namespace Kyoo.Controllers return ApplyFilters(ItemsQuery, where, sort, limit); } - public override async Task> Search(string query) + public async Task> Search(string query) { return await ItemsQuery .Where(x => EF.Functions.ILike(x.Title, $"%{query}%")) diff --git a/Kyoo/Controllers/Repositories/LibraryRepository.cs b/Kyoo/Controllers/Repositories/LibraryRepository.cs index d9a7c937..a2b9dd10 100644 --- a/Kyoo/Controllers/Repositories/LibraryRepository.cs +++ b/Kyoo/Controllers/Repositories/LibraryRepository.cs @@ -50,11 +50,10 @@ namespace Kyoo.Controllers .ToListAsync(); } - public override async Task Create(Library item) + public override async Task 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) diff --git a/Kyoo/Controllers/Repositories/PeopleRepository.cs b/Kyoo/Controllers/Repositories/PeopleRepository.cs index fc5bf2ae..3dc863fd 100644 --- a/Kyoo/Controllers/Repositories/PeopleRepository.cs +++ b/Kyoo/Controllers/Repositories/PeopleRepository.cs @@ -42,7 +42,7 @@ namespace Kyoo.Controllers await _shows.Value.DisposeAsync(); } - public override async Task> Search(string query) + public async Task> Search(string query) { return await _database.People .Where(people => EF.Functions.ILike(people.Name, $"%{query}%")) diff --git a/Kyoo/Controllers/Repositories/ProviderRepository.cs b/Kyoo/Controllers/Repositories/ProviderRepository.cs index bb0534a2..a86960ce 100644 --- a/Kyoo/Controllers/Repositories/ProviderRepository.cs +++ b/Kyoo/Controllers/Repositories/ProviderRepository.cs @@ -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> Search(string query) + public async Task> Search(string query) { return await _database.Providers .Where(x => EF.Functions.ILike(x.Name, $"%{query}%")) diff --git a/Kyoo/Controllers/Repositories/SeasonRepository.cs b/Kyoo/Controllers/Repositories/SeasonRepository.cs index 4b6bf1bb..4d61d34a 100644 --- a/Kyoo/Controllers/Repositories/SeasonRepository.cs +++ b/Kyoo/Controllers/Repositories/SeasonRepository.cs @@ -70,7 +70,7 @@ namespace Kyoo.Controllers && x.SeasonNumber == seasonNumber); } - public override async Task> Search(string query) + public async Task> Search(string query) { return await _database.Seasons .Where(x => EF.Functions.ILike(x.Title, $"%{query}%")) diff --git a/Kyoo/Controllers/Repositories/ShowRepository.cs b/Kyoo/Controllers/Repositories/ShowRepository.cs index fe0994b9..2810d641 100644 --- a/Kyoo/Controllers/Repositories/ShowRepository.cs +++ b/Kyoo/Controllers/Repositories/ShowRepository.cs @@ -86,11 +86,10 @@ namespace Kyoo.Controllers .ToListAsync(); } - public override async Task Create(Show item) + public override async Task 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; diff --git a/Kyoo/Controllers/Repositories/StudioRepository.cs b/Kyoo/Controllers/Repositories/StudioRepository.cs index 30dd1b1f..f9329d89 100644 --- a/Kyoo/Controllers/Repositories/StudioRepository.cs +++ b/Kyoo/Controllers/Repositories/StudioRepository.cs @@ -20,7 +20,7 @@ namespace Kyoo.Controllers _database = database; } - public override async Task> Search(string query) + public async Task> Search(string query) { return await _database.Studios .Where(x => EF.Functions.ILike(x.Name, $"%{query}%")) diff --git a/Kyoo/Controllers/Repositories/TrackRepository.cs b/Kyoo/Controllers/Repositories/TrackRepository.cs index f6c81f70..60c25fe7 100644 --- a/Kyoo/Controllers/Repositories/TrackRepository.cs +++ b/Kyoo/Controllers/Repositories/TrackRepository.cs @@ -61,7 +61,7 @@ namespace Kyoo.Controllers && x.Language == language && x.IsForced == forced); } - public override Task> Search(string query) + public Task> Search(string query) { throw new InvalidOperationException("Tracks do not support the search method."); } diff --git a/Kyoo.Common/Models/ProviderLink.cs b/Kyoo/Models/Links/ProviderLink.cs similarity index 100% rename from Kyoo.Common/Models/ProviderLink.cs rename to Kyoo/Models/Links/ProviderLink.cs