// using System; using System.Collections.Generic; using Cleanuparr.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable namespace Cleanuparr.Persistence.Migrations.Users { [DbContext(typeof(UsersContext))] partial class UsersContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "10.0.1"); modelBuilder.Entity("Cleanuparr.Persistence.Models.Auth.RecoveryCode", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("CodeHash") .IsRequired() .HasColumnType("TEXT") .HasColumnName("code_hash"); b.Property("IsUsed") .HasColumnType("INTEGER") .HasColumnName("is_used"); b.Property("UsedAt") .HasColumnType("TEXT") .HasColumnName("used_at"); b.Property("UserId") .HasColumnType("TEXT") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_recovery_codes"); b.HasIndex("UserId") .HasDatabaseName("ix_recovery_codes_user_id"); b.ToTable("recovery_codes", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Auth.RefreshToken", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("CreatedAt") .HasColumnType("TEXT") .HasColumnName("created_at"); b.Property("ExpiresAt") .HasColumnType("TEXT") .HasColumnName("expires_at"); b.Property("RevokedAt") .HasColumnType("TEXT") .HasColumnName("revoked_at"); b.Property("TokenHash") .IsRequired() .HasColumnType("TEXT") .HasColumnName("token_hash"); b.Property("UserId") .HasColumnType("TEXT") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_refresh_tokens"); b.HasIndex("TokenHash") .IsUnique() .HasDatabaseName("ix_refresh_tokens_token_hash"); b.HasIndex("UserId") .HasDatabaseName("ix_refresh_tokens_user_id"); b.ToTable("refresh_tokens", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Auth.User", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("ApiKey") .IsRequired() .HasColumnType("TEXT") .HasColumnName("api_key"); b.Property("CreatedAt") .HasColumnType("TEXT") .HasColumnName("created_at"); b.Property("FailedLoginAttempts") .HasColumnType("INTEGER") .HasColumnName("failed_login_attempts"); b.Property("LockoutEnd") .HasColumnType("TEXT") .HasColumnName("lockout_end"); b.Property("PasswordHash") .IsRequired() .HasColumnType("TEXT") .HasColumnName("password_hash"); b.Property("PlexAccountId") .HasMaxLength(100) .HasColumnType("TEXT") .HasColumnName("plex_account_id"); b.Property("PlexAuthToken") .HasColumnType("TEXT") .HasColumnName("plex_auth_token"); b.Property("PlexEmail") .HasMaxLength(200) .HasColumnType("TEXT") .HasColumnName("plex_email"); b.Property("PlexUsername") .HasMaxLength(100) .HasColumnType("TEXT") .HasColumnName("plex_username"); b.Property("SetupCompleted") .HasColumnType("INTEGER") .HasColumnName("setup_completed"); b.Property("TotpEnabled") .HasColumnType("INTEGER") .HasColumnName("totp_enabled"); b.Property("TotpSecret") .IsRequired() .HasColumnType("TEXT") .HasColumnName("totp_secret"); b.Property("UpdatedAt") .HasColumnType("TEXT") .HasColumnName("updated_at"); b.Property("Username") .IsRequired() .HasMaxLength(50) .HasColumnType("TEXT") .HasColumnName("username"); b.ComplexProperty(typeof(Dictionary), "Oidc", "Cleanuparr.Persistence.Models.Auth.User.Oidc#OidcConfig", b1 => { b1.IsRequired(); b1.Property("AuthorizedSubject") .IsRequired() .HasMaxLength(500) .HasColumnType("TEXT") .HasColumnName("oidc_authorized_subject"); b1.Property("ClientId") .IsRequired() .HasMaxLength(200) .HasColumnType("TEXT") .HasColumnName("oidc_client_id"); b1.Property("ClientSecret") .IsRequired() .HasMaxLength(500) .HasColumnType("TEXT") .HasColumnName("oidc_client_secret"); b1.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("oidc_enabled"); b1.Property("ExclusiveMode") .HasColumnType("INTEGER") .HasColumnName("oidc_exclusive_mode"); b1.Property("IssuerUrl") .IsRequired() .HasMaxLength(500) .HasColumnType("TEXT") .HasColumnName("oidc_issuer_url"); b1.Property("ProviderName") .IsRequired() .HasMaxLength(100) .HasColumnType("TEXT") .HasColumnName("oidc_provider_name"); b1.Property("RedirectUrl") .IsRequired() .HasMaxLength(500) .HasColumnType("TEXT") .HasColumnName("oidc_redirect_url"); b1.Property("Scopes") .IsRequired() .HasMaxLength(500) .HasColumnType("TEXT") .HasColumnName("oidc_scopes"); }); b.HasKey("Id") .HasName("pk_users"); b.HasIndex("ApiKey") .IsUnique() .HasDatabaseName("ix_users_api_key"); b.HasIndex("Username") .IsUnique() .HasDatabaseName("ix_users_username"); b.ToTable("users", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Auth.RecoveryCode", b => { b.HasOne("Cleanuparr.Persistence.Models.Auth.User", "User") .WithMany("RecoveryCodes") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_recovery_codes_users_user_id"); b.Navigation("User"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Auth.RefreshToken", b => { b.HasOne("Cleanuparr.Persistence.Models.Auth.User", "User") .WithMany("RefreshTokens") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_refresh_tokens_users_user_id"); b.Navigation("User"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Auth.User", b => { b.Navigation("RecoveryCodes"); b.Navigation("RefreshTokens"); }); #pragma warning restore 612, 618 } } }