2
0
Эх сурвалжийг харах

Add ApiKey entity and associated relationships

Patrick Barron 4 жил өмнө
parent
commit
1c501b17d7

+ 50 - 0
Jellyfin.Data/Entities/Security/ApiKey.cs

@@ -0,0 +1,50 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Jellyfin.Data.Entities.Security
+{
+    /// <summary>
+    /// An entity representing an API key.
+    /// </summary>
+    public class ApiKey
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ApiKey"/> class.
+        /// </summary>
+        /// <param name="name">The name.</param>
+        public ApiKey(string name)
+        {
+            Name = name;
+
+            AccessToken = Guid.NewGuid();
+            DateCreated = DateTime.UtcNow;
+        }
+
+        /// <summary>
+        /// Gets the id.
+        /// </summary>
+        /// <remarks>
+        /// Identity, Indexed, Required.
+        /// </remarks>
+        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+        public int Id { get; private set; }
+
+        /// <summary>
+        /// Gets the date created.
+        /// </summary>
+        public DateTime DateCreated { get; private set; }
+
+        /// <summary>
+        /// Gets or sets the name.
+        /// </summary>
+        [MaxLength(64)]
+        [StringLength(64)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// Gets or sets the access token.
+        /// </summary>
+        public Guid AccessToken { get; set; }
+    }
+}

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

@@ -4,6 +4,7 @@
 using System;
 using System;
 using System.Linq;
 using System.Linq;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Entities;
+using Jellyfin.Data.Entities.Security;
 using Jellyfin.Data.Interfaces;
 using Jellyfin.Data.Interfaces;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore;
 
 
@@ -29,6 +30,8 @@ namespace Jellyfin.Server.Implementations
 
 
         public virtual DbSet<ActivityLog> ActivityLogs { get; set; }
         public virtual DbSet<ActivityLog> ActivityLogs { get; set; }
 
 
+        public virtual DbSet<ApiKey> ApiKeys { get; set; }
+
         public virtual DbSet<DisplayPreferences> DisplayPreferences { get; set; }
         public virtual DbSet<DisplayPreferences> DisplayPreferences { get; set; }
 
 
         public virtual DbSet<ImageInfo> ImageInfos { get; set; }
         public virtual DbSet<ImageInfo> ImageInfos { get; set; }
@@ -196,6 +199,10 @@ namespace Jellyfin.Server.Implementations
 
 
             // Indexes
             // Indexes
 
 
+            modelBuilder.Entity<ApiKey>()
+                .HasIndex(entity => entity.AccessToken)
+                .IsUnique();
+
             modelBuilder.Entity<User>()
             modelBuilder.Entity<User>()
                 .HasIndex(entity => entity.Username)
                 .HasIndex(entity => entity.Username)
                 .IsUnique();
                 .IsUnique();