// using System; using FileShare_EFCore.Database; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable namespace FileShare_EFCore.Migrations.MySQL { [DbContext(typeof(MySqlAppDataContext))] [Migration("20260522084325_AddThumbnailMap")] partial class AddThumbnailMap { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.7") .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("FileShare_EFCore.Models.ApiRefreshTokenEntity", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasColumnName("id"); b.Property("CreatedAt") .HasColumnType("datetime(6)") .HasColumnName("created-at"); b.Property("Device") .HasMaxLength(200) .HasColumnType("varchar(200)") .HasColumnName("device"); b.Property("ExpiresAt") .HasColumnType("datetime(6)") .HasColumnName("expires-at"); b.Property("IpAddress") .HasMaxLength(64) .HasColumnType("varchar(64)") .HasColumnName("ip-address"); b.Property("ReplacedByTokenHash") .HasMaxLength(128) .HasColumnType("varchar(128)") .HasColumnName("replaced-by-token-hash"); b.Property("RevokedAt") .HasColumnType("datetime(6)") .HasColumnName("revoked-at"); b.Property("TokenHash") .IsRequired() .HasMaxLength(128) .HasColumnType("varchar(128)") .HasColumnName("token-hash"); b.Property("UserId") .HasColumnType("int") .HasColumnName("user-id"); b.HasKey("Id") .HasName("pk-api-refresh-token"); b.HasIndex("TokenHash") .IsUnique() .HasDatabaseName("idx-api-refresh-token-hash"); b.HasIndex("UserId") .HasDatabaseName("idx-api-refresh-token-user-id"); b.ToTable("api-refresh-token", t => { t.HasComment("API refresh token"); }); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedFileRecord", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int") .HasColumnName("id"); b.Property("AbsolutePath") .IsRequired() .HasMaxLength(2048) .HasColumnType("varchar(2048)") .HasColumnName("absolute-path"); b.Property("ContentType") .IsRequired() .HasMaxLength(100) .HasColumnType("varchar(100)") .HasColumnName("content-type"); b.Property("CreatedAt") .HasColumnType("datetime(6)") .HasColumnName("created-at"); b.Property("Exists") .HasColumnType("tinyint(1)") .HasColumnName("exists"); b.Property("Extension") .IsRequired() .HasMaxLength(32) .HasColumnType("varchar(32)") .HasColumnName("extension"); b.Property("FileName") .IsRequired() .HasMaxLength(260) .HasColumnType("varchar(260)") .HasColumnName("file-name"); b.Property("LastPlayedAt") .HasColumnType("datetime(6)") .HasColumnName("last-played-at"); b.Property("LastSeenAt") .HasColumnType("datetime(6)") .HasColumnName("last-seen-at"); b.Property("LastWriteTimeUtc") .HasColumnType("datetime(6)") .HasColumnName("last-write-time-utc"); b.Property("LibraryRootId") .HasColumnType("int") .HasColumnName("library-root-id"); b.Property("MediaType") .IsRequired() .HasMaxLength(20) .HasColumnType("varchar(20)") .HasColumnName("media-type"); b.Property("RelativePath") .IsRequired() .HasMaxLength(1024) .HasColumnType("varchar(1024)") .HasColumnName("relative-path"); b.Property("SizeBytes") .HasColumnType("bigint") .HasColumnName("size-bytes"); b.Property("ThumbnailId") .HasColumnType("int") .HasColumnName("thumbnail-id"); b.Property("UpdatedAt") .HasColumnType("datetime(6)") .HasColumnName("updated-at"); b.Property("VideoDuration") .HasColumnType("double") .HasColumnName("video-duration"); b.HasKey("Id") .HasName("pk-managed-file-record"); b.HasIndex("AbsolutePath") .IsUnique() .HasDatabaseName("idx-managed-file-record-absolute-path"); b.HasIndex("LastPlayedAt") .HasDatabaseName("idx-managed-file-record-last-played-at"); b.HasIndex("LibraryRootId") .HasDatabaseName("idx-managed-file-record-root-id"); b.HasIndex("ThumbnailId") .HasDatabaseName("idx-managed-file-record-thumbnail-id"); b.HasIndex("MediaType", "Exists") .HasDatabaseName("idx-managed-file-record-media-type-exists"); b.ToTable("managed-file-record", t => { t.HasComment("文件库文件记录"); }); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedLibraryRoot", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int") .HasColumnName("id"); b.Property("CreatedAt") .HasColumnType("datetime(6)") .HasColumnName("created-at"); b.Property("DisplayName") .IsRequired() .HasMaxLength(200) .HasColumnType("varchar(200)") .HasColumnName("display-name"); b.Property("IsAvailable") .ValueGeneratedOnAdd() .HasColumnType("tinyint(1)") .HasDefaultValue(true) .HasColumnName("is-available"); b.Property("IsEnabled") .HasColumnType("tinyint(1)") .HasColumnName("is-enabled"); b.Property("LastScanCompletedAt") .HasColumnType("datetime(6)") .HasColumnName("last-scan-completed-at"); b.Property("LastScanError") .HasMaxLength(2000) .HasColumnType("varchar(2000)") .HasColumnName("last-scan-error"); b.Property("LastScanStartedAt") .HasColumnType("datetime(6)") .HasColumnName("last-scan-started-at"); b.Property("Path") .IsRequired() .HasMaxLength(1024) .HasColumnType("varchar(1024)") .HasColumnName("path"); b.Property("ScanIntervalMinutes") .HasColumnType("int") .HasColumnName("scan-interval-minutes"); b.Property("UpdatedAt") .HasColumnType("datetime(6)") .HasColumnName("updated-at"); b.HasKey("Id") .HasName("pk-managed-library-root"); b.HasIndex("Path") .IsUnique() .HasDatabaseName("idx-managed-library-root-path"); b.ToTable("managed-library-root", t => { t.HasComment("文件库根目录"); }); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedThumbnailMap", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int") .HasColumnName("id"); b.Property("ContentType") .IsRequired() .HasMaxLength(100) .HasColumnType("varchar(100)") .HasColumnName("content-type"); b.Property("CreatedAt") .HasColumnType("datetime(6)") .HasColumnName("created-at"); b.Property("LibraryRootId") .HasColumnType("int") .HasColumnName("library-root-id"); b.Property("RelativePath") .IsRequired() .HasMaxLength(1024) .HasColumnType("varchar(1024)") .HasColumnName("relative-path"); b.Property("UpdatedAt") .HasColumnType("datetime(6)") .HasColumnName("updated-at"); b.HasKey("Id") .HasName("pk-managed-thumbnail-map"); b.HasIndex("LibraryRootId") .HasDatabaseName("idx-managed-thumbnail-map-root-id"); b.HasIndex("RelativePath") .IsUnique() .HasDatabaseName("idx-managed-thumbnail-map-relative-path"); b.ToTable("managed-thumbnail-map", t => { t.HasComment("文件缩略图映射记录"); }); }); modelBuilder.Entity("FileShare_EFCore.Models.UserEntity", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int") .HasColumnName("id") .HasComment("用户主键"); b.Property("CreatedAt") .HasColumnType("datetime(6)") .HasColumnName("created-at") .HasComment("创建时间"); b.Property("Email") .HasMaxLength(200) .HasColumnType("varchar(200)") .HasColumnName("email") .HasComment("用户邮箱"); b.Property("Name") .HasMaxLength(100) .HasColumnType("varchar(100)") .HasColumnName("name") .HasComment("用户名称"); b.Property("PasswordHash") .HasMaxLength(200) .HasColumnType("varchar(200)") .HasColumnName("password-hash") .HasComment("密码哈希值"); b.Property("PhoneNumber") .HasMaxLength(50) .HasColumnType("varchar(50)") .HasColumnName("phone-number") .HasComment("电话号码"); b.Property("UpdatedAt") .HasColumnType("datetime(6)") .HasColumnName("updated-at") .HasComment("更新时间"); b.HasKey("Id") .HasName("pk-user"); b.ToTable("user", t => { t.HasComment("用户实体,演示数据库 CRUD 操作"); }); }); modelBuilder.Entity("FileShare_EFCore.Models.WeatherForecastEntity", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int") .HasColumnName("id") .HasComment("天气预报主键"); b.Property("CreatedAt") .HasColumnType("datetime(6)") .HasColumnName("created-at") .HasComment("创建时间"); b.Property("Date") .HasColumnType("date") .HasColumnName("date") .HasComment("预报日期"); b.Property("Summary") .HasMaxLength(200) .HasColumnType("varchar(200)") .HasColumnName("summary") .HasComment("天气摘要"); b.Property("TemperatureC") .HasColumnType("int") .HasColumnName("temperature-c") .HasComment("摄氏温度"); b.Property("UpdatedAt") .HasColumnType("datetime(6)") .HasColumnName("updated-at") .HasComment("更新时间"); b.HasKey("Id") .HasName("pk-weather-forecast"); b.ToTable("weather-forecast", t => { t.HasComment("天气预报数据实体"); }); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedFileRecord", b => { b.HasOne("FileShare_EFCore.Models.ManagedLibraryRoot", "LibraryRoot") .WithMany("Files") .HasForeignKey("LibraryRootId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("FileShare_EFCore.Models.ManagedThumbnailMap", "Thumbnail") .WithMany("Files") .HasForeignKey("ThumbnailId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("LibraryRoot"); b.Navigation("Thumbnail"); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedThumbnailMap", b => { b.HasOne("FileShare_EFCore.Models.ManagedLibraryRoot", "LibraryRoot") .WithMany("Thumbnails") .HasForeignKey("LibraryRootId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("LibraryRoot"); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedLibraryRoot", b => { b.Navigation("Files"); b.Navigation("Thumbnails"); }); modelBuilder.Entity("FileShare_EFCore.Models.ManagedThumbnailMap", b => { b.Navigation("Files"); }); #pragma warning restore 612, 618 } } }