diff options
Diffstat (limited to 'MediaBrowser.Controller/Persistence')
6 files changed, 329 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs b/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs new file mode 100644 index 000000000..25aba6bd9 --- /dev/null +++ b/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs @@ -0,0 +1,49 @@ +using System.Collections.Generic; +using MediaBrowser.Model.Entities; +using System; +using System.Threading; + +namespace MediaBrowser.Controller.Persistence +{ + /// <summary> + /// Interface IDisplayPreferencesRepository + /// </summary> + public interface IDisplayPreferencesRepository : IRepository + { + /// <summary> + /// Saves display preferences for an item + /// </summary> + /// <param name="displayPreferences">The display preferences.</param> + /// <param name="userId">The user id.</param> + /// <param name="client">The client.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + void SaveDisplayPreferences(DisplayPreferences displayPreferences, string userId, string client, + CancellationToken cancellationToken); + + /// <summary> + /// Saves all display preferences for a user + /// </summary> + /// <param name="displayPreferences">The display preferences.</param> + /// <param name="userId">The user id.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + void SaveAllDisplayPreferences(IEnumerable<DisplayPreferences> displayPreferences, Guid userId, + CancellationToken cancellationToken); + /// <summary> + /// Gets the display preferences. + /// </summary> + /// <param name="displayPreferencesId">The display preferences id.</param> + /// <param name="userId">The user id.</param> + /// <param name="client">The client.</param> + /// <returns>Task{DisplayPreferences}.</returns> + DisplayPreferences GetDisplayPreferences(string displayPreferencesId, string userId, string client); + + /// <summary> + /// Gets all display preferences for the given user. + /// </summary> + /// <param name="userId">The user id.</param> + /// <returns>Task{DisplayPreferences}.</returns> + IEnumerable<DisplayPreferences> GetAllDisplayPreferences(Guid userId); + } +} diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs new file mode 100644 index 000000000..7905ea1aa --- /dev/null +++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs @@ -0,0 +1,159 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; +using System.Threading; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; + +namespace MediaBrowser.Controller.Persistence +{ + /// <summary> + /// Provides an interface to implement an Item repository + /// </summary> + public interface IItemRepository : IRepository + { + /// <summary> + /// Saves an item + /// </summary> + /// <param name="item">The item.</param> + /// <param name="cancellationToken">The cancellation token.</param> + void SaveItem(BaseItem item, CancellationToken cancellationToken); + + /// <summary> + /// Deletes the item. + /// </summary> + /// <param name="id">The identifier.</param> + /// <param name="cancellationToken">The cancellation token.</param> + void DeleteItem(Guid id, CancellationToken cancellationToken); + + /// <summary> + /// Saves the items. + /// </summary> + /// <param name="items">The items.</param> + /// <param name="cancellationToken">The cancellation token.</param> + void SaveItems(List<BaseItem> items, CancellationToken cancellationToken); + + void SaveImages(BaseItem item); + + /// <summary> + /// Retrieves the item. + /// </summary> + /// <param name="id">The id.</param> + /// <returns>BaseItem.</returns> + BaseItem RetrieveItem(Guid id); + + /// <summary> + /// Gets chapters for an item + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + List<ChapterInfo> GetChapters(BaseItem id); + + /// <summary> + /// Gets a single chapter for an item + /// </summary> + /// <param name="id"></param> + /// <param name="index"></param> + /// <returns></returns> + ChapterInfo GetChapter(BaseItem id, int index); + + /// <summary> + /// Saves the chapters. + /// </summary> + void SaveChapters(Guid id, List<ChapterInfo> chapters); + + /// <summary> + /// Gets the media streams. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>IEnumerable{MediaStream}.</returns> + List<MediaStream> GetMediaStreams(MediaStreamQuery query); + + /// <summary> + /// Saves the media streams. + /// </summary> + /// <param name="id">The identifier.</param> + /// <param name="streams">The streams.</param> + /// <param name="cancellationToken">The cancellation token.</param> + void SaveMediaStreams(Guid id, List<MediaStream> streams, CancellationToken cancellationToken); + + /// <summary> + /// Gets the item ids. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>IEnumerable<Guid>.</returns> + QueryResult<Guid> GetItemIds(InternalItemsQuery query); + /// <summary> + /// Gets the items. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>QueryResult<BaseItem>.</returns> + QueryResult<BaseItem> GetItems(InternalItemsQuery query); + + /// <summary> + /// Gets the item ids list. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<Guid>.</returns> + List<Guid> GetItemIdsList(InternalItemsQuery query); + + /// <summary> + /// Gets the people. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<PersonInfo>.</returns> + List<PersonInfo> GetPeople(InternalPeopleQuery query); + + /// <summary> + /// Updates the people. + /// </summary> + /// <param name="itemId">The item identifier.</param> + /// <param name="people">The people.</param> + void UpdatePeople(Guid itemId, List<PersonInfo> people); + + /// <summary> + /// Gets the people names. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<System.String>.</returns> + List<string> GetPeopleNames(InternalPeopleQuery query); + + /// <summary> + /// Gets the item ids with path. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>QueryResult<Tuple<Guid, System.String>>.</returns> + List<Tuple<Guid, string>> GetItemIdsWithPath(InternalItemsQuery query); + + /// <summary> + /// Gets the item list. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<BaseItem>.</returns> + List<BaseItem> GetItemList(InternalItemsQuery query); + + /// <summary> + /// Updates the inherited values. + /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> + void UpdateInheritedValues(CancellationToken cancellationToken); + + int GetCount(InternalItemsQuery query); + + QueryResult<Tuple<BaseItem, ItemCounts>> GetGenres(InternalItemsQuery query); + QueryResult<Tuple<BaseItem, ItemCounts>> GetMusicGenres(InternalItemsQuery query); + QueryResult<Tuple<BaseItem, ItemCounts>> GetGameGenres(InternalItemsQuery query); + QueryResult<Tuple<BaseItem, ItemCounts>> GetStudios(InternalItemsQuery query); + QueryResult<Tuple<BaseItem, ItemCounts>> GetArtists(InternalItemsQuery query); + QueryResult<Tuple<BaseItem, ItemCounts>> GetAlbumArtists(InternalItemsQuery query); + QueryResult<Tuple<BaseItem, ItemCounts>> GetAllArtists(InternalItemsQuery query); + + List<string> GetGameGenreNames(); + List<string> GetMusicGenreNames(); + List<string> GetStudioNames(); + List<string> GetGenreNames(); + List<string> GetAllArtistNames(); + } +} + diff --git a/MediaBrowser.Controller/Persistence/IRepository.cs b/MediaBrowser.Controller/Persistence/IRepository.cs new file mode 100644 index 000000000..2340ca646 --- /dev/null +++ b/MediaBrowser.Controller/Persistence/IRepository.cs @@ -0,0 +1,16 @@ +using System; + +namespace MediaBrowser.Controller.Persistence +{ + /// <summary> + /// Provides a base interface for all the repository interfaces + /// </summary> + public interface IRepository : IDisposable + { + /// <summary> + /// Gets the name of the repository + /// </summary> + /// <value>The name.</value> + string Name { get; } + } +} diff --git a/MediaBrowser.Controller/Persistence/IUserDataRepository.cs b/MediaBrowser.Controller/Persistence/IUserDataRepository.cs new file mode 100644 index 000000000..5ab3f0943 --- /dev/null +++ b/MediaBrowser.Controller/Persistence/IUserDataRepository.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using MediaBrowser.Controller.Entities; +using System; +using System.Threading; + +namespace MediaBrowser.Controller.Persistence +{ + /// <summary> + /// Provides an interface to implement a UserData repository + /// </summary> + public interface IUserDataRepository : IRepository + { + /// <summary> + /// Saves the user data. + /// </summary> + /// <param name="userId">The user id.</param> + /// <param name="key">The key.</param> + /// <param name="userData">The user data.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + void SaveUserData(long userId, string key, UserItemData userData, CancellationToken cancellationToken); + + /// <summary> + /// Gets the user data. + /// </summary> + /// <param name="userId">The user id.</param> + /// <param name="key">The key.</param> + /// <returns>Task{UserItemData}.</returns> + UserItemData GetUserData(long userId, string key); + + UserItemData GetUserData(long userId, List<string> keys); + + /// <summary> + /// Return all user data associated with the given user + /// </summary> + /// <param name="userId"></param> + /// <returns></returns> + List<UserItemData> GetAllUserData(long userId); + + /// <summary> + /// Save all user data associated with the given user + /// </summary> + /// <param name="userId"></param> + /// <param name="userData"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + void SaveAllUserData(long userId, UserItemData[] userData, CancellationToken cancellationToken); + + } +} diff --git a/MediaBrowser.Controller/Persistence/IUserRepository.cs b/MediaBrowser.Controller/Persistence/IUserRepository.cs new file mode 100644 index 000000000..2817c4255 --- /dev/null +++ b/MediaBrowser.Controller/Persistence/IUserRepository.cs @@ -0,0 +1,29 @@ +using MediaBrowser.Controller.Entities; +using System.Collections.Generic; +using System.Threading; + +namespace MediaBrowser.Controller.Persistence +{ + /// <summary> + /// Provides an interface to implement a User repository + /// </summary> + public interface IUserRepository : IRepository + { + /// <summary> + /// Deletes the user. + /// </summary> + /// <param name="user">The user.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + void DeleteUser(User user); + + /// <summary> + /// Retrieves all users. + /// </summary> + /// <returns>IEnumerable{User}.</returns> + List<User> RetrieveAllUsers(); + + void CreateUser(User user); + void UpdateUser(User user); + } +} diff --git a/MediaBrowser.Controller/Persistence/MediaStreamQuery.cs b/MediaBrowser.Controller/Persistence/MediaStreamQuery.cs new file mode 100644 index 000000000..10985f57d --- /dev/null +++ b/MediaBrowser.Controller/Persistence/MediaStreamQuery.cs @@ -0,0 +1,26 @@ +using MediaBrowser.Model.Entities; +using System; + +namespace MediaBrowser.Controller.Persistence +{ + public class MediaStreamQuery + { + /// <summary> + /// Gets or sets the type. + /// </summary> + /// <value>The type.</value> + public MediaStreamType? Type { get; set; } + + /// <summary> + /// Gets or sets the index. + /// </summary> + /// <value>The index.</value> + public int? Index { get; set; } + + /// <summary> + /// Gets or sets the item identifier. + /// </summary> + /// <value>The item identifier.</value> + public Guid ItemId { get; set; } + } +} |
