// Kyoo - A portable and vast media library solution. // Copyright (c) Kyoo. // // See AUTHORS.md and LICENSE file in the project root for full license information. // // Kyoo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // Kyoo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . using System.Linq; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models; namespace Kyoo.Core.Controllers { /// /// An class to interact with the database. Every repository is mapped through here. /// public class LibraryManager : ILibraryManager { private readonly IBaseRepository[] _repositories; public LibraryManager( IRepository libraryItemRepository, IRepository newsRepository, IWatchStatusRepository watchStatusRepository, IRepository collectionRepository, IRepository movieRepository, IRepository showRepository, IRepository seasonRepository, IRepository episodeRepository, IRepository peopleRepository, IRepository studioRepository, IRepository userRepository ) { LibraryItems = libraryItemRepository; News = newsRepository; WatchStatus = watchStatusRepository; Collections = collectionRepository; Movies = movieRepository; Shows = showRepository; Seasons = seasonRepository; Episodes = episodeRepository; People = peopleRepository; Studios = studioRepository; Users = userRepository; _repositories = new IBaseRepository[] { LibraryItems, News, Collections, Movies, Shows, Seasons, Episodes, People, Studios, Users }; } /// public IRepository LibraryItems { get; } /// public IRepository News { get; } /// public IWatchStatusRepository WatchStatus { get; } /// public IRepository Collections { get; } /// public IRepository Movies { get; } /// public IRepository Shows { get; } /// public IRepository Seasons { get; } /// public IRepository Episodes { get; } /// public IRepository People { get; } /// public IRepository Studios { get; } /// public IRepository Users { get; } public IRepository Repository() where T : IResource, IQuery { return (IRepository)_repositories.First(x => x.RepositoryType == typeof(T)); } } }