aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Barron <barronpm@gmail.com>2020-05-04 16:00:41 -0400
committerPatrick Barron <barronpm@gmail.com>2020-05-04 16:00:41 -0400
commita78184ef4423be8e320f642eb7b0155810d86cbd (patch)
treebf652f7fbbc5b778855f7d2b9391593fc453dfe0
parent75e0d58c2d1b11dc06fe9b1a438f813d8add6b7b (diff)
Add the user data to the schema
-rw-r--r--Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj2
-rw-r--r--Jellyfin.Server.Implementations/JellyfinDb.cs12
-rw-r--r--Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.Designer.cs324
-rw-r--r--Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.cs219
-rw-r--r--Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs251
5 files changed, 802 insertions, 6 deletions
diff --git a/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj b/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
index a31f28f64..7ff978698 100644
--- a/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
+++ b/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
@@ -23,6 +23,8 @@
<Compile Include="..\SharedVersion.cs" />
<Compile Remove="Migrations\20200430214405_InitialSchema.cs" />
<Compile Remove="Migrations\20200430214405_InitialSchema.Designer.cs" />
+ <Compile Remove="Migrations\20200504195424_UserSchema.cs" />
+ <Compile Remove="Migrations\20200504195424_UserSchema.Designer.cs" />
</ItemGroup>
<ItemGroup>
diff --git a/Jellyfin.Server.Implementations/JellyfinDb.cs b/Jellyfin.Server.Implementations/JellyfinDb.cs
index 6fc8d251b..8b6b7cacc 100644
--- a/Jellyfin.Server.Implementations/JellyfinDb.cs
+++ b/Jellyfin.Server.Implementations/JellyfinDb.cs
@@ -16,6 +16,11 @@ namespace Jellyfin.Server.Implementations
public partial class JellyfinDb : DbContext
{
public virtual DbSet<ActivityLog> ActivityLogs { get; set; }
+ public virtual DbSet<Group> Groups { get; set; }
+ public virtual DbSet<Permission> Permissions { get; set; }
+ public virtual DbSet<Preference> Preferences { get; set; }
+ public virtual DbSet<ProviderMapping> ProviderMappings { get; set; }
+ public virtual DbSet<User> Users { get; set; }
/*public virtual DbSet<Artwork> Artwork { get; set; }
public virtual DbSet<Book> Books { get; set; }
public virtual DbSet<BookMetadata> BookMetadata { get; set; }
@@ -29,7 +34,6 @@ namespace Jellyfin.Server.Implementations
public virtual DbSet<Episode> Episodes { get; set; }
public virtual DbSet<EpisodeMetadata> EpisodeMetadata { get; set; }
public virtual DbSet<Genre> Genres { get; set; }
- public virtual DbSet<Group> Groups { get; set; }
public virtual DbSet<Library> Libraries { get; set; }
public virtual DbSet<LibraryItem> LibraryItems { get; set; }
public virtual DbSet<LibraryRoot> LibraryRoot { get; set; }
@@ -42,13 +46,10 @@ namespace Jellyfin.Server.Implementations
public virtual DbSet<MovieMetadata> MovieMetadata { get; set; }
public virtual DbSet<MusicAlbum> MusicAlbums { get; set; }
public virtual DbSet<MusicAlbumMetadata> MusicAlbumMetadata { get; set; }
- public virtual DbSet<Permission> Permissions { get; set; }
public virtual DbSet<Person> People { get; set; }
public virtual DbSet<PersonRole> PersonRoles { get; set; }
public virtual DbSet<Photo> Photo { get; set; }
public virtual DbSet<PhotoMetadata> PhotoMetadata { get; set; }
- public virtual DbSet<Preference> Preferences { get; set; }
- public virtual DbSet<ProviderMapping> ProviderMappings { get; set; }
public virtual DbSet<Rating> Ratings { get; set; }
/// <summary>
@@ -62,8 +63,7 @@ namespace Jellyfin.Server.Implementations
public virtual DbSet<Series> Series { get; set; }
public virtual DbSet<SeriesMetadata> SeriesMetadata { get; set; }
public virtual DbSet<Track> Tracks { get; set; }
- public virtual DbSet<TrackMetadata> TrackMetadata { get; set; }
- public virtual DbSet<User> Users { get; set; } */
+ public virtual DbSet<TrackMetadata> TrackMetadata { get; set; } */
/// <summary>
/// Gets or sets the default connection string.
diff --git a/Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.Designer.cs b/Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.Designer.cs
new file mode 100644
index 000000000..8313c6a3b
--- /dev/null
+++ b/Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.Designer.cs
@@ -0,0 +1,324 @@
+#pragma warning disable CS1591
+#pragma warning disable SA1601
+
+// <auto-generated />
+using System;
+using Jellyfin.Server.Implementations;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+namespace Jellyfin.Server.Implementations.Migrations
+{
+ [DbContext(typeof(JellyfinDb))]
+ [Migration("20200504195702_UserSchema")]
+ partial class UserSchema
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("jellyfin")
+ .HasAnnotation("ProductVersion", "3.1.3");
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.ActivityLog", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<DateTime>("DateCreated")
+ .HasColumnType("TEXT");
+
+ b.Property<string>("ItemId")
+ .HasColumnType("TEXT")
+ .HasMaxLength(256);
+
+ b.Property<int>("LogSeverity")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(512);
+
+ b.Property<string>("Overview")
+ .HasColumnType("TEXT")
+ .HasMaxLength(512);
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("ShortOverview")
+ .HasColumnType("TEXT")
+ .HasMaxLength(512);
+
+ b.Property<string>("Type")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(256);
+
+ b.Property<Guid>("UserId")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("ActivityLog");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Group", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Group_Groups_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Group_Groups_Id");
+
+ b.ToTable("Group");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<int>("Kind")
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Permission_GroupPermissions_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Permission_Permissions_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<bool>("Value")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Permission_GroupPermissions_Id");
+
+ b.HasIndex("Permission_Permissions_Id");
+
+ b.ToTable("Permission");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<int>("Kind")
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Preference_Preferences_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("Value")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.HasKey("Id");
+
+ b.HasIndex("Preference_Preferences_Id");
+
+ b.ToTable("Preference");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.ProviderMapping", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("ProviderData")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<int?>("ProviderMapping_ProviderMappings_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("ProviderName")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("ProviderSecrets")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ProviderMapping_ProviderMappings_Id");
+
+ b.ToTable("ProviderMapping");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("AudioLanguagePreference")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("AuthenticationProviderId")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<bool?>("DisplayCollectionsView")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("DisplayMissingEpisodes")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("EnableNextEpisodeAutoPlay")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("EnableUserPreferenceAccess")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("GroupedFolders")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<bool?>("HidePlayedInLatest")
+ .HasColumnType("INTEGER");
+
+ b.Property<int>("InvalidLoginAttemptCount")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("LatestItemExcludes")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<int?>("LoginAttemptsBeforeLockout")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool>("MustUpdatePassword")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("MyMediaExcludes")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<string>("OrderedViews")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<string>("Password")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<bool>("PlayDefaultAudioTrack")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("RememberAudioSelections")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("RememberSubtitleSelections")
+ .HasColumnType("INTEGER");
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("SubtitleLanguagePrefernce")
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("SubtitleMode")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("Username")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.HasKey("Id");
+
+ b.ToTable("User");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Group", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("Groups")
+ .HasForeignKey("Group_Groups_Id");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.Group", null)
+ .WithMany("GroupPermissions")
+ .HasForeignKey("Permission_GroupPermissions_Id");
+
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("Permissions")
+ .HasForeignKey("Permission_Permissions_Id");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.Group", null)
+ .WithMany("Preferences")
+ .HasForeignKey("Preference_Preferences_Id");
+
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("Preferences")
+ .HasForeignKey("Preference_Preferences_Id");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.ProviderMapping", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.Group", null)
+ .WithMany("ProviderMappings")
+ .HasForeignKey("ProviderMapping_ProviderMappings_Id");
+
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("ProviderMappings")
+ .HasForeignKey("ProviderMapping_ProviderMappings_Id");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.cs b/Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.cs
new file mode 100644
index 000000000..f24ccccbf
--- /dev/null
+++ b/Jellyfin.Server.Implementations/Migrations/20200504195702_UserSchema.cs
@@ -0,0 +1,219 @@
+#pragma warning disable CS1591
+#pragma warning disable SA1601
+
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace Jellyfin.Server.Implementations.Migrations
+{
+ public partial class UserSchema : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "User",
+ schema: "jellyfin",
+ columns: table => new
+ {
+ Id = table.Column<int>(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Username = table.Column<string>(maxLength: 255, nullable: false),
+ Password = table.Column<string>(maxLength: 65535, nullable: true),
+ MustUpdatePassword = table.Column<bool>(nullable: false),
+ AudioLanguagePreference = table.Column<string>(maxLength: 255, nullable: false),
+ AuthenticationProviderId = table.Column<string>(maxLength: 255, nullable: false),
+ GroupedFolders = table.Column<string>(maxLength: 65535, nullable: true),
+ InvalidLoginAttemptCount = table.Column<int>(nullable: false),
+ LatestItemExcludes = table.Column<string>(maxLength: 65535, nullable: true),
+ LoginAttemptsBeforeLockout = table.Column<int>(nullable: true),
+ MyMediaExcludes = table.Column<string>(maxLength: 65535, nullable: true),
+ OrderedViews = table.Column<string>(maxLength: 65535, nullable: true),
+ SubtitleMode = table.Column<string>(maxLength: 255, nullable: false),
+ PlayDefaultAudioTrack = table.Column<bool>(nullable: false),
+ SubtitleLanguagePrefernce = table.Column<string>(maxLength: 255, nullable: true),
+ DisplayMissingEpisodes = table.Column<bool>(nullable: true),
+ DisplayCollectionsView = table.Column<bool>(nullable: true),
+ HidePlayedInLatest = table.Column<bool>(nullable: true),
+ RememberAudioSelections = table.Column<bool>(nullable: true),
+ RememberSubtitleSelections = table.Column<bool>(nullable: true),
+ EnableNextEpisodeAutoPlay = table.Column<bool>(nullable: true),
+ EnableUserPreferenceAccess = table.Column<bool>(nullable: true),
+ RowVersion = table.Column<uint>(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_User", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Group",
+ schema: "jellyfin",
+ columns: table => new
+ {
+ Id = table.Column<int>(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Name = table.Column<string>(maxLength: 255, nullable: false),
+ RowVersion = table.Column<uint>(nullable: false),
+ Group_Groups_Id = table.Column<int>(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Group", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Group_User_Group_Groups_Id",
+ column: x => x.Group_Groups_Id,
+ principalSchema: "jellyfin",
+ principalTable: "User",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Permission",
+ schema: "jellyfin",
+ columns: table => new
+ {
+ Id = table.Column<int>(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Kind = table.Column<int>(nullable: false),
+ Value = table.Column<bool>(nullable: false),
+ RowVersion = table.Column<uint>(nullable: false),
+ Permission_GroupPermissions_Id = table.Column<int>(nullable: true),
+ Permission_Permissions_Id = table.Column<int>(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Permission", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Permission_Group_Permission_GroupPermissions_Id",
+ column: x => x.Permission_GroupPermissions_Id,
+ principalSchema: "jellyfin",
+ principalTable: "Group",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ table.ForeignKey(
+ name: "FK_Permission_User_Permission_Permissions_Id",
+ column: x => x.Permission_Permissions_Id,
+ principalSchema: "jellyfin",
+ principalTable: "User",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Preference",
+ schema: "jellyfin",
+ columns: table => new
+ {
+ Id = table.Column<int>(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Kind = table.Column<int>(nullable: false),
+ Value = table.Column<string>(maxLength: 65535, nullable: false),
+ RowVersion = table.Column<uint>(nullable: false),
+ Preference_Preferences_Id = table.Column<int>(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Preference", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Preference_Group_Preference_Preferences_Id",
+ column: x => x.Preference_Preferences_Id,
+ principalSchema: "jellyfin",
+ principalTable: "Group",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ table.ForeignKey(
+ name: "FK_Preference_User_Preference_Preferences_Id",
+ column: x => x.Preference_Preferences_Id,
+ principalSchema: "jellyfin",
+ principalTable: "User",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "ProviderMapping",
+ schema: "jellyfin",
+ columns: table => new
+ {
+ Id = table.Column<int>(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ ProviderName = table.Column<string>(maxLength: 255, nullable: false),
+ ProviderSecrets = table.Column<string>(maxLength: 65535, nullable: false),
+ ProviderData = table.Column<string>(maxLength: 65535, nullable: false),
+ RowVersion = table.Column<uint>(nullable: false),
+ ProviderMapping_ProviderMappings_Id = table.Column<int>(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ProviderMapping", x => x.Id);
+ table.ForeignKey(
+ name: "FK_ProviderMapping_Group_ProviderMapping_ProviderMappings_Id",
+ column: x => x.ProviderMapping_ProviderMappings_Id,
+ principalSchema: "jellyfin",
+ principalTable: "Group",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ table.ForeignKey(
+ name: "FK_ProviderMapping_User_ProviderMapping_ProviderMappings_Id",
+ column: x => x.ProviderMapping_ProviderMappings_Id,
+ principalSchema: "jellyfin",
+ principalTable: "User",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Group_Group_Groups_Id",
+ schema: "jellyfin",
+ table: "Group",
+ column: "Group_Groups_Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Permission_Permission_GroupPermissions_Id",
+ schema: "jellyfin",
+ table: "Permission",
+ column: "Permission_GroupPermissions_Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Permission_Permission_Permissions_Id",
+ schema: "jellyfin",
+ table: "Permission",
+ column: "Permission_Permissions_Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Preference_Preference_Preferences_Id",
+ schema: "jellyfin",
+ table: "Preference",
+ column: "Preference_Preferences_Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_ProviderMapping_ProviderMapping_ProviderMappings_Id",
+ schema: "jellyfin",
+ table: "ProviderMapping",
+ column: "ProviderMapping_ProviderMappings_Id");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Permission",
+ schema: "jellyfin");
+
+ migrationBuilder.DropTable(
+ name: "Preference",
+ schema: "jellyfin");
+
+ migrationBuilder.DropTable(
+ name: "ProviderMapping",
+ schema: "jellyfin");
+
+ migrationBuilder.DropTable(
+ name: "Group",
+ schema: "jellyfin");
+
+ migrationBuilder.DropTable(
+ name: "User",
+ schema: "jellyfin");
+ }
+ }
+}
diff --git a/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs b/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs
index 27f5fe24b..d3a7ed333 100644
--- a/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs
+++ b/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs
@@ -62,6 +62,257 @@ namespace Jellyfin.Server.Implementations.Migrations
b.ToTable("ActivityLog");
});
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Group", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Group_Groups_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Group_Groups_Id");
+
+ b.ToTable("Group");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<int>("Kind")
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Permission_GroupPermissions_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Permission_Permissions_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<bool>("Value")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Permission_GroupPermissions_Id");
+
+ b.HasIndex("Permission_Permissions_Id");
+
+ b.ToTable("Permission");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<int>("Kind")
+ .HasColumnType("INTEGER");
+
+ b.Property<int?>("Preference_Preferences_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("Value")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.HasKey("Id");
+
+ b.HasIndex("Preference_Preferences_Id");
+
+ b.ToTable("Preference");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.ProviderMapping", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("ProviderData")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<int?>("ProviderMapping_ProviderMappings_Id")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("ProviderName")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("ProviderSecrets")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ProviderMapping_ProviderMappings_Id");
+
+ b.ToTable("ProviderMapping");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("AudioLanguagePreference")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("AuthenticationProviderId")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<bool?>("DisplayCollectionsView")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("DisplayMissingEpisodes")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("EnableNextEpisodeAutoPlay")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("EnableUserPreferenceAccess")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("GroupedFolders")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<bool?>("HidePlayedInLatest")
+ .HasColumnType("INTEGER");
+
+ b.Property<int>("InvalidLoginAttemptCount")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("LatestItemExcludes")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<int?>("LoginAttemptsBeforeLockout")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool>("MustUpdatePassword")
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("MyMediaExcludes")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<string>("OrderedViews")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<string>("Password")
+ .HasColumnType("TEXT")
+ .HasMaxLength(65535);
+
+ b.Property<bool>("PlayDefaultAudioTrack")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("RememberAudioSelections")
+ .HasColumnType("INTEGER");
+
+ b.Property<bool?>("RememberSubtitleSelections")
+ .HasColumnType("INTEGER");
+
+ b.Property<uint>("RowVersion")
+ .IsConcurrencyToken()
+ .HasColumnType("INTEGER");
+
+ b.Property<string>("SubtitleLanguagePrefernce")
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("SubtitleMode")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.Property<string>("Username")
+ .IsRequired()
+ .HasColumnType("TEXT")
+ .HasMaxLength(255);
+
+ b.HasKey("Id");
+
+ b.ToTable("User");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Group", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("Groups")
+ .HasForeignKey("Group_Groups_Id");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.Group", null)
+ .WithMany("GroupPermissions")
+ .HasForeignKey("Permission_GroupPermissions_Id");
+
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("Permissions")
+ .HasForeignKey("Permission_Permissions_Id");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.Group", null)
+ .WithMany("Preferences")
+ .HasForeignKey("Preference_Preferences_Id");
+
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("Preferences")
+ .HasForeignKey("Preference_Preferences_Id");
+ });
+
+ modelBuilder.Entity("Jellyfin.Data.Entities.ProviderMapping", b =>
+ {
+ b.HasOne("Jellyfin.Data.Entities.Group", null)
+ .WithMany("ProviderMappings")
+ .HasForeignKey("ProviderMapping_ProviderMappings_Id");
+
+ b.HasOne("Jellyfin.Data.Entities.User", null)
+ .WithMany("ProviderMappings")
+ .HasForeignKey("ProviderMapping_ProviderMappings_Id");
+ });
#pragma warning restore 612, 618
}
}