diff --git a/back/src/Kyoo.Abstractions/Controllers/IRepository.cs b/back/src/Kyoo.Abstractions/Controllers/IRepository.cs index fb00b768..56b9b26b 100644 --- a/back/src/Kyoo.Abstractions/Controllers/IRepository.cs +++ b/back/src/Kyoo.Abstractions/Controllers/IRepository.cs @@ -327,7 +327,7 @@ namespace Kyoo.Abstractions.Controllers /// /// A repository to handle library items (A wrapper around shows and collections). /// - public interface ILibraryItemRepository : IRepository { } + public interface ILibraryItemRepository : IRepository { } /// /// A repository for collections diff --git a/back/src/Kyoo.Abstractions/Models/LibraryItem.cs b/back/src/Kyoo.Abstractions/Models/LibraryItem.cs index 6190bf6f..fb3a24e4 100644 --- a/back/src/Kyoo.Abstractions/Models/LibraryItem.cs +++ b/back/src/Kyoo.Abstractions/Models/LibraryItem.cs @@ -45,7 +45,7 @@ namespace Kyoo.Abstractions.Models Collection } - public class LibraryItem : IResource, ILibraryItem, IThumbnails, IMetadata + public class LibraryItem : IResource, IThumbnails, IMetadata { /// public int Id { get; set; } @@ -124,7 +124,9 @@ namespace Kyoo.Abstractions.Models /// public string? Trailer { get; set; } - /// + /// + /// Is the item a collection, a movie or a show? + /// public ItemKind Kind { get; set; } /// @@ -149,31 +151,4 @@ namespace Kyoo.Abstractions.Models Name = name; } } - - /// - /// A type union between and . - /// This is used to list content put inside a library. - /// - public interface ILibraryItem : IResource - { - /// - /// Is the item a collection, a movie or a show? - /// - public ItemKind Kind { get; } - - /// - /// The title of this show. - /// - public string Name { get; } - - /// - /// The summary of this show. - /// - public string? Overview { get; } - - /// - /// The date this movie aired. - /// - public DateTime? AirDate { get; } - } } diff --git a/back/src/Kyoo.Abstractions/Models/SearchResult.cs b/back/src/Kyoo.Abstractions/Models/SearchResult.cs index 54ff93bf..f10983eb 100644 --- a/back/src/Kyoo.Abstractions/Models/SearchResult.cs +++ b/back/src/Kyoo.Abstractions/Models/SearchResult.cs @@ -38,7 +38,7 @@ namespace Kyoo.Abstractions.Models /// /// The items that matched the search. /// - public ICollection Items { get; init; } + public ICollection Items { get; init; } /// /// The movies that matched the search. diff --git a/back/src/Kyoo.Core/Controllers/LibraryManager.cs b/back/src/Kyoo.Core/Controllers/LibraryManager.cs index 318e7aff..3d3f77bf 100644 --- a/back/src/Kyoo.Core/Controllers/LibraryManager.cs +++ b/back/src/Kyoo.Core/Controllers/LibraryManager.cs @@ -74,7 +74,7 @@ namespace Kyoo.Core.Controllers public LibraryManager(IEnumerable repositories) { _repositories = repositories.ToArray(); - LibraryItemRepository = GetRepository() as ILibraryItemRepository; + LibraryItemRepository = GetRepository() as ILibraryItemRepository; CollectionRepository = GetRepository() as ICollectionRepository; MovieRepository = GetRepository() as IMovieRepository; ShowRepository = GetRepository() as IShowRepository; diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs index 0b5da1e7..1bc010f0 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs @@ -32,7 +32,7 @@ namespace Kyoo.Core.Controllers /// /// A local repository to handle library items. /// - public class LibraryItemRepository : LocalRepository, ILibraryItemRepository + public class LibraryItemRepository : LocalRepository, ILibraryItemRepository { /// /// The database handle @@ -40,7 +40,7 @@ namespace Kyoo.Core.Controllers private readonly DatabaseContext _database; /// - protected override Sort DefaultSort => new Sort.By(x => x.Name); + protected override Sort DefaultSort => new Sort.By(x => x.Name); /// /// Create a new . @@ -54,26 +54,26 @@ namespace Kyoo.Core.Controllers } /// - public override async Task GetOrDefault(int id) + public override async Task GetOrDefault(int id) { return await _database.LibraryItems.SingleOrDefaultAsync(x => x.Id == id).Then(SetBackingImage); } /// - public override async Task GetOrDefault(string slug) + public override async Task GetOrDefault(string slug) { return await _database.LibraryItems.SingleOrDefaultAsync(x => x.Slug == slug).Then(SetBackingImage); } /// - public override async Task GetOrDefault(Expression> where, Sort sortBy = default) + public override async Task GetOrDefault(Expression> where, Sort sortBy = default) { return await Sort(_database.LibraryItems, sortBy).FirstOrDefaultAsync(where).Then(SetBackingImage); } /// - public override async Task> GetAll(Expression> where = null, - Sort sort = default, + public override async Task> GetAll(Expression> where = null, + Sort sort = default, Pagination limit = default) { return (await ApplyFilters(_database.LibraryItems, where, sort, limit)) @@ -81,16 +81,16 @@ namespace Kyoo.Core.Controllers } /// - public override Task GetCount(Expression> where = null) + public override Task GetCount(Expression> where = null) { - IQueryable query = _database.LibraryItems; + IQueryable query = _database.LibraryItems; if (where != null) query = query.Where(where); return query.CountAsync(); } /// - public override async Task> Search(string query) + public override async Task> Search(string query) { return (await Sort( _database.LibraryItems @@ -103,19 +103,19 @@ namespace Kyoo.Core.Controllers } /// - public override Task Create(ILibraryItem obj) + public override Task Create(LibraryItem obj) => throw new InvalidOperationException(); /// - public override Task CreateIfNotExists(ILibraryItem obj) + public override Task CreateIfNotExists(LibraryItem obj) => throw new InvalidOperationException(); /// - public override Task Edit(ILibraryItem edited) + public override Task Edit(LibraryItem edited) => throw new InvalidOperationException(); /// - public override Task Patch(int id, Func> patch) + public override Task Patch(int id, Func> patch) => throw new InvalidOperationException(); /// @@ -127,7 +127,7 @@ namespace Kyoo.Core.Controllers => throw new InvalidOperationException(); /// - public override Task Delete(ILibraryItem obj) + public override Task Delete(LibraryItem obj) => throw new InvalidOperationException(); } } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs index 81f2f57b..1af459b4 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs @@ -237,7 +237,7 @@ namespace Kyoo.Core.Controllers { if (obj is not IThumbnails thumbs) return; - string type = obj is ILibraryItem item + string type = obj is LibraryItem item ? item.Kind.ToString().ToLowerInvariant() : typeof(T).Name.ToLowerInvariant(); diff --git a/back/src/Kyoo.Core/Views/Resources/LibraryItemApi.cs b/back/src/Kyoo.Core/Views/Resources/LibraryItemApi.cs index 8046a942..3c5459b5 100644 --- a/back/src/Kyoo.Core/Views/Resources/LibraryItemApi.cs +++ b/back/src/Kyoo.Core/Views/Resources/LibraryItemApi.cs @@ -77,14 +77,14 @@ namespace Kyoo.Core.Api [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(RequestError))] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task>> GetAll( + public async Task>> GetAll( [FromQuery] string sortBy, [FromQuery] Dictionary where, [FromQuery] Pagination pagination) { - ICollection resources = await _libraryItems.GetAll( - ApiHelper.ParseWhere(where), - Sort.From(sortBy), + ICollection resources = await _libraryItems.GetAll( + ApiHelper.ParseWhere(where), + Sort.From(sortBy), pagination ); diff --git a/back/src/Kyoo.Core/Views/Resources/SearchApi.cs b/back/src/Kyoo.Core/Views/Resources/SearchApi.cs index 4779cb20..fb6fcbc9 100644 --- a/back/src/Kyoo.Core/Views/Resources/SearchApi.cs +++ b/back/src/Kyoo.Core/Views/Resources/SearchApi.cs @@ -76,7 +76,7 @@ namespace Kyoo.Core.Api { Query = query, Collections = await _libraryManager.Search(query), - Items = await _libraryManager.Search(query), + Items = await _libraryManager.Search(query), Movies = await _libraryManager.Search(query), Shows = await _libraryManager.Search(query), Episodes = await _libraryManager.Search(query), @@ -134,9 +134,9 @@ namespace Kyoo.Core.Api [Permission(nameof(Show), Kind.Read)] [ApiDefinition("Items")] [ProducesResponseType(StatusCodes.Status200OK)] - public Task> SearchItems(string query) + public Task> SearchItems(string query) { - return _libraryManager.Search(query); + return _libraryManager.Search(query); } ///