瀏覽代碼

Actually fix profile images

Patrick Barron 5 年之前
父節點
當前提交
3278015444

+ 0 - 1
Jellyfin.Data/Entities/AccessSchedule.cs

@@ -52,7 +52,6 @@ namespace Jellyfin.Data.Entities
         /// </summary>
         [XmlIgnore]
         [Required]
-        [ForeignKey("Id")]
         public Guid UserId { get; protected set; }
 
         /// <summary>

+ 2 - 0
Jellyfin.Data/Entities/ImageInfo.cs

@@ -17,6 +17,8 @@ namespace Jellyfin.Data.Entities
         [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
         public int Id { get; protected set; }
 
+        public Guid? UserId { get; protected set; }
+
         [Required]
         [MaxLength(512)]
         [StringLength(512)]

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

@@ -324,6 +324,7 @@ namespace Jellyfin.Data.Entities
         /// <summary>
         /// Gets or sets the user's profile image. Can be <c>null</c>.
         /// </summary>
+        // [ForeignKey("UserId")]
         public virtual ImageInfo ProfileImage { get; set; }
 
         [Required]

+ 14 - 14
Jellyfin.Server.Implementations/Migrations/20200613155524_AddUsers.Designer.cs → Jellyfin.Server.Implementations/Migrations/20200613202153_AddUsers.Designer.cs

@@ -1,5 +1,4 @@
 #pragma warning disable CS1591
-#pragma warning disable SA1601
 
 // <auto-generated />
 using System;
@@ -12,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 namespace Jellyfin.Server.Implementations.Migrations
 {
     [DbContext(typeof(JellyfinDb))]
-    [Migration("20200613155524_AddUsers")]
+    [Migration("20200613202153_AddUsers")]
     partial class AddUsers
     {
         protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -107,8 +106,14 @@ namespace Jellyfin.Server.Implementations.Migrations
                         .HasColumnType("TEXT")
                         .HasMaxLength(512);
 
+                    b.Property<Guid?>("UserId")
+                        .HasColumnType("TEXT");
+
                     b.HasKey("Id");
 
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
                     b.ToTable("ImageInfos");
                 });
 
@@ -239,9 +244,6 @@ namespace Jellyfin.Server.Implementations.Migrations
                     b.Property<bool>("PlayDefaultAudioTrack")
                         .HasColumnType("INTEGER");
 
-                    b.Property<int?>("ProfileImageId")
-                        .HasColumnType("INTEGER");
-
                     b.Property<bool>("RememberAudioSelections")
                         .HasColumnType("INTEGER");
 
@@ -272,8 +274,6 @@ namespace Jellyfin.Server.Implementations.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("ProfileImageId");
-
                     b.ToTable("Users");
                 });
 
@@ -286,6 +286,13 @@ namespace Jellyfin.Server.Implementations.Migrations
                         .IsRequired();
                 });
 
+            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
+                {
+                    b.HasOne("Jellyfin.Data.Entities.User", null)
+                        .WithOne("ProfileImage")
+                        .HasForeignKey("Jellyfin.Data.Entities.ImageInfo", "UserId");
+                });
+
             modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
                 {
                     b.HasOne("Jellyfin.Data.Entities.User", null)
@@ -299,13 +306,6 @@ namespace Jellyfin.Server.Implementations.Migrations
                         .WithMany("Preferences")
                         .HasForeignKey("Preference_Preferences_Guid");
                 });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.ImageInfo", "ProfileImage")
-                        .WithMany()
-                        .HasForeignKey("ProfileImageId");
-                });
 #pragma warning restore 612, 618
         }
     }

+ 34 - 33
Jellyfin.Server.Implementations/Migrations/20200613155524_AddUsers.cs → Jellyfin.Server.Implementations/Migrations/20200613202153_AddUsers.cs

@@ -10,21 +10,6 @@ namespace Jellyfin.Server.Implementations.Migrations
     {
         protected override void Up(MigrationBuilder migrationBuilder)
         {
-            migrationBuilder.CreateTable(
-                name: "ImageInfos",
-                schema: "jellyfin",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Sqlite:Autoincrement", true),
-                    Path = table.Column<string>(maxLength: 512, nullable: false),
-                    LastModified = table.Column<DateTime>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ImageInfos", x => x.Id);
-                });
-
             migrationBuilder.CreateTable(
                 name: "Users",
                 schema: "jellyfin",
@@ -57,20 +42,12 @@ namespace Jellyfin.Server.Implementations.Migrations
                     MaxParentalAgeRating = table.Column<int>(nullable: true),
                     RemoteClientBitrateLimit = table.Column<int>(nullable: true),
                     InternalId = table.Column<long>(nullable: false),
-                    ProfileImageId = table.Column<int>(nullable: true),
                     SyncPlayAccess = table.Column<int>(nullable: false),
                     RowVersion = table.Column<uint>(nullable: false)
                 },
                 constraints: table =>
                 {
                     table.PrimaryKey("PK_Users", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Users_ImageInfos_ProfileImageId",
-                        column: x => x.ProfileImageId,
-                        principalSchema: "jellyfin",
-                        principalTable: "ImageInfos",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
                 });
 
             migrationBuilder.CreateTable(
@@ -97,6 +74,29 @@ namespace Jellyfin.Server.Implementations.Migrations
                         onDelete: ReferentialAction.Cascade);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "ImageInfos",
+                schema: "jellyfin",
+                columns: table => new
+                {
+                    Id = table.Column<int>(nullable: false)
+                        .Annotation("Sqlite:Autoincrement", true),
+                    UserId = table.Column<Guid>(nullable: true),
+                    Path = table.Column<string>(maxLength: 512, nullable: false),
+                    LastModified = table.Column<DateTime>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ImageInfos", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_ImageInfos_Users_UserId",
+                        column: x => x.UserId,
+                        principalSchema: "jellyfin",
+                        principalTable: "Users",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Restrict);
+                });
+
             migrationBuilder.CreateTable(
                 name: "Permissions",
                 schema: "jellyfin",
@@ -151,6 +151,13 @@ namespace Jellyfin.Server.Implementations.Migrations
                 table: "AccessSchedules",
                 column: "UserId");
 
+            migrationBuilder.CreateIndex(
+                name: "IX_ImageInfos_UserId",
+                schema: "jellyfin",
+                table: "ImageInfos",
+                column: "UserId",
+                unique: true);
+
             migrationBuilder.CreateIndex(
                 name: "IX_Permissions_Permission_Permissions_Guid",
                 schema: "jellyfin",
@@ -162,12 +169,6 @@ namespace Jellyfin.Server.Implementations.Migrations
                 schema: "jellyfin",
                 table: "Preferences",
                 column: "Preference_Preferences_Guid");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Users_ProfileImageId",
-                schema: "jellyfin",
-                table: "Users",
-                column: "ProfileImageId");
         }
 
         protected override void Down(MigrationBuilder migrationBuilder)
@@ -177,19 +178,19 @@ namespace Jellyfin.Server.Implementations.Migrations
                 schema: "jellyfin");
 
             migrationBuilder.DropTable(
-                name: "Permissions",
+                name: "ImageInfos",
                 schema: "jellyfin");
 
             migrationBuilder.DropTable(
-                name: "Preferences",
+                name: "Permissions",
                 schema: "jellyfin");
 
             migrationBuilder.DropTable(
-                name: "Users",
+                name: "Preferences",
                 schema: "jellyfin");
 
             migrationBuilder.DropTable(
-                name: "ImageInfos",
+                name: "Users",
                 schema: "jellyfin");
         }
     }

+ 13 - 12
Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs

@@ -102,8 +102,14 @@ namespace Jellyfin.Server.Implementations.Migrations
                         .HasColumnType("TEXT")
                         .HasMaxLength(512);
 
+                    b.Property<Guid?>("UserId")
+                        .HasColumnType("TEXT");
+
                     b.HasKey("Id");
 
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
                     b.ToTable("ImageInfos");
                 });
 
@@ -234,9 +240,6 @@ namespace Jellyfin.Server.Implementations.Migrations
                     b.Property<bool>("PlayDefaultAudioTrack")
                         .HasColumnType("INTEGER");
 
-                    b.Property<int?>("ProfileImageId")
-                        .HasColumnType("INTEGER");
-
                     b.Property<bool>("RememberAudioSelections")
                         .HasColumnType("INTEGER");
 
@@ -267,8 +270,6 @@ namespace Jellyfin.Server.Implementations.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("ProfileImageId");
-
                     b.ToTable("Users");
                 });
 
@@ -281,6 +282,13 @@ namespace Jellyfin.Server.Implementations.Migrations
                         .IsRequired();
                 });
 
+            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
+                {
+                    b.HasOne("Jellyfin.Data.Entities.User", null)
+                        .WithOne("ProfileImage")
+                        .HasForeignKey("Jellyfin.Data.Entities.ImageInfo", "UserId");
+                });
+
             modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
                 {
                     b.HasOne("Jellyfin.Data.Entities.User", null)
@@ -294,13 +302,6 @@ namespace Jellyfin.Server.Implementations.Migrations
                         .WithMany("Preferences")
                         .HasForeignKey("Preference_Preferences_Guid");
                 });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.ImageInfo", "ProfileImage")
-                        .WithMany()
-                        .HasForeignKey("ProfileImageId");
-                });
 #pragma warning restore 612, 618
         }
     }

+ 1 - 1
Jellyfin.Server.Implementations/Users/UserManager.cs

@@ -671,7 +671,7 @@ namespace Jellyfin.Server.Implementations.Users
         public void ClearProfileImage(User user)
         {
             var dbContext = _dbProvider.CreateContext();
-            dbContext.ImageInfos.Remove(user.ProfileImage);
+            dbContext.Remove(user.ProfileImage);
             dbContext.SaveChanges();
         }