浏览代码

Add indexes for user permissions and preferences

Patrick Barron 4 年之前
父节点
当前提交
3c4187e780
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      Jellyfin.Server.Implementations/JellyfinDb.cs

+ 14 - 0
Jellyfin.Server.Implementations/JellyfinDb.cs

@@ -174,6 +174,7 @@ namespace Jellyfin.Server.Implementations
                 .WithOne()
                 .OnDelete(DeleteBehavior.Cascade);
 
+
             modelBuilder.Entity<DisplayPreferences>()
                 .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client })
                 .IsUnique();
@@ -181,6 +182,19 @@ namespace Jellyfin.Server.Implementations
             modelBuilder.Entity<CustomItemDisplayPreferences>()
                 .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client, entity.Key })
                 .IsUnique();
+
+            // Used to get a user's permissions or a specific permission for a user.
+            // Also prevents multiple values being created for a user.
+            // Filtered over non-null user ids for when other entities (groups, API keys) get permissions
+            modelBuilder.Entity<Permission>()
+                .HasIndex(p => new { p.UserId, p.Kind })
+                .HasFilter("[UserId] IS NOT NULL")
+                .IsUnique();
+
+            modelBuilder.Entity<Preference>()
+                .HasIndex(p => new { p.UserId, p.Kind })
+                .HasFilter("[UserId] IS NOT NULL")
+                .IsUnique();
         }
     }
 }