aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Persistence
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Persistence')
-rw-r--r--MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs49
-rw-r--r--MediaBrowser.Controller/Persistence/IItemRepository.cs159
-rw-r--r--MediaBrowser.Controller/Persistence/IRepository.cs16
-rw-r--r--MediaBrowser.Controller/Persistence/IUserDataRepository.cs50
-rw-r--r--MediaBrowser.Controller/Persistence/IUserRepository.cs29
-rw-r--r--MediaBrowser.Controller/Persistence/MediaStreamQuery.cs26
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&lt;Guid&gt;.</returns>
+ QueryResult<Guid> GetItemIds(InternalItemsQuery query);
+ /// <summary>
+ /// Gets the items.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <returns>QueryResult&lt;BaseItem&gt;.</returns>
+ QueryResult<BaseItem> GetItems(InternalItemsQuery query);
+
+ /// <summary>
+ /// Gets the item ids list.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <returns>List&lt;Guid&gt;.</returns>
+ List<Guid> GetItemIdsList(InternalItemsQuery query);
+
+ /// <summary>
+ /// Gets the people.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <returns>List&lt;PersonInfo&gt;.</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&lt;System.String&gt;.</returns>
+ List<string> GetPeopleNames(InternalPeopleQuery query);
+
+ /// <summary>
+ /// Gets the item ids with path.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <returns>QueryResult&lt;Tuple&lt;Guid, System.String&gt;&gt;.</returns>
+ List<Tuple<Guid, string>> GetItemIdsWithPath(InternalItemsQuery query);
+
+ /// <summary>
+ /// Gets the item list.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <returns>List&lt;BaseItem&gt;.</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; }
+ }
+}