Add ApiKey entity and associated relationships

This commit is contained in:
Patrick Barron 2021-04-01 11:08:39 -04:00 committed by Patrick Barron
parent 16ca8c7536
commit 1c501b17d7
2 changed files with 57 additions and 0 deletions

View file

@ -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; }
}
}

View file

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