소스 검색

Make adjustments to display preference entities.

Patrick Barron 4 년 전
부모
커밋
592d2480ca
3개의 변경된 파일143개의 추가작업 그리고 54개의 파일을 삭제
  1. 12 53
      Jellyfin.Data/Entities/DisplayPreferences.cs
  2. 120 0
      Jellyfin.Data/Entities/LibraryDisplayPreferences.cs
  3. 11 1
      Jellyfin.Data/Entities/User.cs

+ 12 - 53
Jellyfin.Data/Entities/DisplayPreferences.cs

@@ -14,14 +14,18 @@ namespace Jellyfin.Data.Entities
         /// <summary>
         /// Initializes a new instance of the <see cref="DisplayPreferences"/> class.
         /// </summary>
-        /// <param name="client">The client string.</param>
         /// <param name="userId">The user's id.</param>
-        public DisplayPreferences(string client, Guid userId)
+        /// <param name="client">The client string.</param>
+        public DisplayPreferences(Guid userId, string client)
         {
-            RememberIndexing = false;
-            ShowBackdrop = true;
-            Client = client;
             UserId = userId;
+            Client = client;
+            ShowSidebar = false;
+            ShowBackdrop = true;
+            SkipForwardLength = 30000;
+            SkipBackwardLength = 10000;
+            ScrollDirection = ScrollDirection.Horizontal;
+            ChromecastVersion = ChromecastVersion.Stable;
 
             HomeSections = new HashSet<HomeSection>();
         }
@@ -50,50 +54,17 @@ namespace Jellyfin.Data.Entities
         /// </remarks>
         public Guid UserId { get; set; }
 
-        /// <summary>
-        /// Gets or sets the id of the associated item.
-        /// </summary>
-        /// <remarks>
-        /// This is currently unused. In the future, this will allow us to have users set
-        /// display preferences per item.
-        /// </remarks>
-        public Guid? ItemId { get; set; }
-
         /// <summary>
         /// Gets or sets the client string.
         /// </summary>
         /// <remarks>
-        /// Required. Max Length = 64.
+        /// Required. Max Length = 32.
         /// </remarks>
         [Required]
-        [MaxLength(64)]
-        [StringLength(64)]
+        [MaxLength(32)]
+        [StringLength(32)]
         public string Client { get; set; }
 
-        /// <summary>
-        /// Gets or sets a value indicating whether the indexing should be remembered.
-        /// </summary>
-        /// <remarks>
-        /// Required.
-        /// </remarks>
-        public bool RememberIndexing { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether the sorting type should be remembered.
-        /// </summary>
-        /// <remarks>
-        /// Required.
-        /// </remarks>
-        public bool RememberSorting { get; set; }
-
-        /// <summary>
-        /// Gets or sets the sort order.
-        /// </summary>
-        /// <remarks>
-        /// Required.
-        /// </remarks>
-        public SortOrder SortOrder { get; set; }
-
         /// <summary>
         /// Gets or sets a value indicating whether to show the sidebar.
         /// </summary>
@@ -110,18 +81,6 @@ namespace Jellyfin.Data.Entities
         /// </remarks>
         public bool ShowBackdrop { get; set; }
 
-        /// <summary>
-        /// Gets or sets what the view should be sorted by.
-        /// </summary>
-        [MaxLength(64)]
-        [StringLength(64)]
-        public string SortBy { get; set; }
-
-        /// <summary>
-        /// Gets or sets the view type.
-        /// </summary>
-        public ViewType? ViewType { get; set; }
-
         /// <summary>
         /// Gets or sets the scroll direction.
         /// </summary>

+ 120 - 0
Jellyfin.Data/Entities/LibraryDisplayPreferences.cs

@@ -0,0 +1,120 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Jellyfin.Data.Enums;
+
+namespace Jellyfin.Data.Entities
+{
+    public class LibraryDisplayPreferences
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="LibraryDisplayPreferences"/> class.
+        /// </summary>
+        /// <param name="userId">The user id.</param>
+        /// <param name="itemId">The item id.</param>
+        /// <param name="client">The client.</param>
+        public LibraryDisplayPreferences(Guid userId, Guid itemId, string client)
+        {
+            UserId = userId;
+            ItemId = itemId;
+            Client = client;
+
+            SortBy = "SortName";
+            ViewType = ViewType.Poster;
+            SortOrder = SortOrder.Ascending;
+            RememberSorting = false;
+            RememberIndexing = false;
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="LibraryDisplayPreferences"/> class.
+        /// </summary>
+        protected LibraryDisplayPreferences()
+        {
+        }
+
+        /// <summary>
+        /// Gets or sets the Id.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+        public int Id { get; protected set; }
+
+        /// <summary>
+        /// Gets or sets the user Id.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        public Guid UserId { get; set; }
+
+        /// <summary>
+        /// Gets or sets the id of the associated item.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        public Guid ItemId { get; set; }
+
+        /// <summary>
+        /// Gets or sets the client string.
+        /// </summary>
+        /// <remarks>
+        /// Required. Max Length = 32.
+        /// </remarks>
+        [Required]
+        [MaxLength(32)]
+        [StringLength(32)]
+        public string Client { get; set; }
+
+        /// <summary>
+        /// Gets or sets the view type.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        public ViewType ViewType { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether the indexing should be remembered.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        public bool RememberIndexing { get; set; }
+
+        /// <summary>
+        /// Gets or sets what the view should be indexed by.
+        /// </summary>
+        public IndexingKind? IndexBy { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether the sorting type should be remembered.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        public bool RememberSorting { get; set; }
+
+        /// <summary>
+        /// Gets or sets what the view should be sorted by.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        [Required]
+        [MaxLength(64)]
+        [StringLength(64)]
+        public string SortBy { get; set; }
+
+        /// <summary>
+        /// Gets or sets the sort order.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        public SortOrder SortOrder { get; set; }
+    }
+}

+ 11 - 1
Jellyfin.Data/Entities/User.cs

@@ -48,6 +48,7 @@ namespace Jellyfin.Data.Entities
             PasswordResetProviderId = passwordResetProviderId;
 
             AccessSchedules = new HashSet<AccessSchedule>();
+            LibraryDisplayPreferences = new HashSet<LibraryDisplayPreferences>();
             // Groups = new HashSet<Group>();
             Permissions = new HashSet<Permission>();
             Preferences = new HashSet<Preference>();
@@ -327,6 +328,15 @@ namespace Jellyfin.Data.Entities
         // [ForeignKey("UserId")]
         public virtual ImageInfo ProfileImage { get; set; }
 
+        /// <summary>
+        /// Gets or sets the user's display preferences.
+        /// </summary>
+        /// <remarks>
+        /// Required.
+        /// </remarks>
+        [Required]
+        public virtual DisplayPreferences DisplayPreferences { get; set; }
+
         [Required]
         public SyncPlayAccess SyncPlayAccess { get; set; }
 
@@ -352,7 +362,7 @@ namespace Jellyfin.Data.Entities
         /// <summary>
         /// Gets or sets the list of item display preferences.
         /// </summary>
-        public virtual ICollection<DisplayPreferences> DisplayPreferences { get; protected set; }
+        public virtual ICollection<LibraryDisplayPreferences> LibraryDisplayPreferences { get; protected set; }
 
         /*
         /// <summary>