// using System.Collections.Generic; using Foxnouns.Backend.Database; using Foxnouns.Backend.Database.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace Foxnouns.Backend.Database.Migrations { [DbContext(typeof(DatabaseContext))] partial class DatabaseContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "9.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "hstore"); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Application", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("ClientId") .IsRequired() .HasColumnType("text") .HasColumnName("client_id"); b.Property("ClientSecret") .IsRequired() .HasColumnType("text") .HasColumnName("client_secret"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("name"); b.PrimitiveCollection("RedirectUris") .IsRequired() .HasColumnType("text[]") .HasColumnName("redirect_uris"); b.PrimitiveCollection("Scopes") .IsRequired() .HasColumnType("text[]") .HasColumnName("scopes"); b.HasKey("Id") .HasName("pk_applications"); b.ToTable("applications", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.AuditLogEntry", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.PrimitiveCollection("ClearedFields") .HasColumnType("text[]") .HasColumnName("cleared_fields"); b.Property("ModeratorId") .HasColumnType("bigint") .HasColumnName("moderator_id"); b.Property("ModeratorUsername") .IsRequired() .HasColumnType("text") .HasColumnName("moderator_username"); b.Property("Reason") .HasColumnType("text") .HasColumnName("reason"); b.Property("ReportId") .HasColumnType("bigint") .HasColumnName("report_id"); b.Property("TargetMemberId") .HasColumnType("bigint") .HasColumnName("target_member_id"); b.Property("TargetMemberName") .HasColumnType("text") .HasColumnName("target_member_name"); b.Property("TargetUserId") .HasColumnType("bigint") .HasColumnName("target_user_id"); b.Property("TargetUsername") .HasColumnType("text") .HasColumnName("target_username"); b.Property("Type") .HasColumnType("integer") .HasColumnName("type"); b.HasKey("Id") .HasName("pk_audit_log"); b.HasIndex("ReportId") .IsUnique() .HasDatabaseName("ix_audit_log_report_id"); b.ToTable("audit_log", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.AuthMethod", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("AuthType") .HasColumnType("integer") .HasColumnName("auth_type"); b.Property("FediverseApplicationId") .HasColumnType("bigint") .HasColumnName("fediverse_application_id"); b.Property("RemoteId") .IsRequired() .HasColumnType("text") .HasColumnName("remote_id"); b.Property("RemoteUsername") .HasColumnType("text") .HasColumnName("remote_username"); b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_auth_methods"); b.HasIndex("FediverseApplicationId") .HasDatabaseName("ix_auth_methods_fediverse_application_id"); b.HasIndex("UserId") .HasDatabaseName("ix_auth_methods_user_id"); b.HasIndex("AuthType", "RemoteId") .IsUnique() .HasDatabaseName("ix_auth_methods_auth_type_remote_id") .HasFilter("fediverse_application_id IS NULL"); b.HasIndex("AuthType", "RemoteId", "FediverseApplicationId") .IsUnique() .HasDatabaseName("ix_auth_methods_auth_type_remote_id_fediverse_application_id") .HasFilter("fediverse_application_id IS NOT NULL"); b.ToTable("auth_methods", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.DataExport", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("Filename") .IsRequired() .HasColumnType("text") .HasColumnName("filename"); b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_data_exports"); b.HasIndex("Filename") .IsUnique() .HasDatabaseName("ix_data_exports_filename"); b.HasIndex("UserId") .HasDatabaseName("ix_data_exports_user_id"); b.ToTable("data_exports", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.FediverseApplication", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("ClientId") .IsRequired() .HasColumnType("text") .HasColumnName("client_id"); b.Property("ClientSecret") .IsRequired() .HasColumnType("text") .HasColumnName("client_secret"); b.Property("Domain") .IsRequired() .HasColumnType("text") .HasColumnName("domain"); b.Property("ForceRefresh") .HasColumnType("boolean") .HasColumnName("force_refresh"); b.Property("InstanceType") .HasColumnType("integer") .HasColumnName("instance_type"); b.HasKey("Id") .HasName("pk_fediverse_applications"); b.ToTable("fediverse_applications", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Member", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("Avatar") .HasColumnType("text") .HasColumnName("avatar"); b.Property("Bio") .HasColumnType("text") .HasColumnName("bio"); b.Property("DisplayName") .HasColumnType("text") .HasColumnName("display_name"); b.Property>("Fields") .IsRequired() .HasColumnType("jsonb") .HasColumnName("fields"); b.Property("LegacyId") .IsRequired() .ValueGeneratedOnAdd() .HasColumnType("text") .HasColumnName("legacy_id") .HasDefaultValueSql("gen_random_uuid()"); b.PrimitiveCollection("Links") .IsRequired() .HasColumnType("text[]") .HasColumnName("links"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("name"); b.Property>("Names") .IsRequired() .HasColumnType("jsonb") .HasColumnName("names"); b.Property>("Pronouns") .IsRequired() .HasColumnType("jsonb") .HasColumnName("pronouns"); b.Property("Sid") .IsRequired() .ValueGeneratedOnAdd() .HasColumnType("text") .HasColumnName("sid") .HasDefaultValueSql("find_free_member_sid()"); b.Property("Unlisted") .HasColumnType("boolean") .HasColumnName("unlisted"); b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_members"); b.HasIndex("LegacyId") .IsUnique() .HasDatabaseName("ix_members_legacy_id"); b.HasIndex("Sid") .IsUnique() .HasDatabaseName("ix_members_sid"); b.HasIndex("UserId", "Name") .IsUnique() .HasDatabaseName("ix_members_user_id_name"); b.ToTable("members", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.MemberFlag", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("MemberId") .HasColumnType("bigint") .HasColumnName("member_id"); b.Property("PrideFlagId") .HasColumnType("bigint") .HasColumnName("pride_flag_id"); b.HasKey("Id") .HasName("pk_member_flags"); b.HasIndex("MemberId") .HasDatabaseName("ix_member_flags_member_id"); b.HasIndex("PrideFlagId") .HasDatabaseName("ix_member_flags_pride_flag_id"); b.ToTable("member_flags", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Notification", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("AcknowledgedAt") .HasColumnType("timestamp with time zone") .HasColumnName("acknowledged_at"); b.Property("LocalizationKey") .HasColumnType("text") .HasColumnName("localization_key"); b.Property>("LocalizationParams") .IsRequired() .HasColumnType("hstore") .HasColumnName("localization_params"); b.Property("Message") .HasColumnType("text") .HasColumnName("message"); b.Property("TargetId") .HasColumnType("bigint") .HasColumnName("target_id"); b.Property("Type") .HasColumnType("integer") .HasColumnName("type"); b.HasKey("Id") .HasName("pk_notifications"); b.HasIndex("TargetId") .HasDatabaseName("ix_notifications_target_id"); b.ToTable("notifications", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.PrideFlag", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("Description") .HasColumnType("text") .HasColumnName("description"); b.Property("Hash") .HasColumnType("text") .HasColumnName("hash"); b.Property("LegacyId") .IsRequired() .ValueGeneratedOnAdd() .HasColumnType("text") .HasColumnName("legacy_id") .HasDefaultValueSql("gen_random_uuid()"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("name"); b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_pride_flags"); b.HasIndex("LegacyId") .IsUnique() .HasDatabaseName("ix_pride_flags_legacy_id"); b.HasIndex("UserId") .HasDatabaseName("ix_pride_flags_user_id"); b.ToTable("pride_flags", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Report", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("Context") .HasColumnType("text") .HasColumnName("context"); b.Property("Reason") .HasColumnType("integer") .HasColumnName("reason"); b.Property("ReporterId") .HasColumnType("bigint") .HasColumnName("reporter_id"); b.Property("Status") .HasColumnType("integer") .HasColumnName("status"); b.Property("TargetMemberId") .HasColumnType("bigint") .HasColumnName("target_member_id"); b.Property("TargetSnapshot") .HasColumnType("text") .HasColumnName("target_snapshot"); b.Property("TargetType") .HasColumnType("integer") .HasColumnName("target_type"); b.Property("TargetUserId") .HasColumnType("bigint") .HasColumnName("target_user_id"); b.HasKey("Id") .HasName("pk_reports"); b.HasIndex("ReporterId") .HasDatabaseName("ix_reports_reporter_id"); b.HasIndex("TargetMemberId") .HasDatabaseName("ix_reports_target_member_id"); b.HasIndex("TargetUserId") .HasDatabaseName("ix_reports_target_user_id"); b.ToTable("reports", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.TemporaryKey", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Expires") .HasColumnType("timestamp with time zone") .HasColumnName("expires"); b.Property("Key") .IsRequired() .HasColumnType("text") .HasColumnName("key"); b.Property("Value") .IsRequired() .HasColumnType("text") .HasColumnName("value"); b.HasKey("Id") .HasName("pk_temporary_keys"); b.HasIndex("Key") .IsUnique() .HasDatabaseName("ix_temporary_keys_key"); b.ToTable("temporary_keys", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Token", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("ApplicationId") .HasColumnType("bigint") .HasColumnName("application_id"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone") .HasColumnName("expires_at"); b.Property("Hash") .IsRequired() .HasColumnType("bytea") .HasColumnName("hash"); b.Property("ManuallyExpired") .HasColumnType("boolean") .HasColumnName("manually_expired"); b.PrimitiveCollection("Scopes") .IsRequired() .HasColumnType("text[]") .HasColumnName("scopes"); b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_tokens"); b.HasIndex("ApplicationId") .HasDatabaseName("ix_tokens_application_id"); b.HasIndex("UserId") .HasDatabaseName("ix_tokens_user_id"); b.ToTable("tokens", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.User", b => { b.Property("Id") .HasColumnType("bigint") .HasColumnName("id"); b.Property("Avatar") .HasColumnType("text") .HasColumnName("avatar"); b.Property("Bio") .HasColumnType("text") .HasColumnName("bio"); b.Property>("CustomPreferences") .IsRequired() .HasColumnType("jsonb") .HasColumnName("custom_preferences"); b.Property("Deleted") .HasColumnType("boolean") .HasColumnName("deleted"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasColumnName("deleted_at"); b.Property("DeletedBy") .HasColumnType("bigint") .HasColumnName("deleted_by"); b.Property("DisplayName") .HasColumnType("text") .HasColumnName("display_name"); b.Property>("Fields") .IsRequired() .HasColumnType("jsonb") .HasColumnName("fields"); b.Property("LastActive") .HasColumnType("timestamp with time zone") .HasColumnName("last_active"); b.Property("LastSidReroll") .HasColumnType("timestamp with time zone") .HasColumnName("last_sid_reroll"); b.Property("LegacyId") .IsRequired() .ValueGeneratedOnAdd() .HasColumnType("text") .HasColumnName("legacy_id") .HasDefaultValueSql("gen_random_uuid()"); b.PrimitiveCollection("Links") .IsRequired() .HasColumnType("text[]") .HasColumnName("links"); b.Property("ListHidden") .HasColumnType("boolean") .HasColumnName("list_hidden"); b.Property("MemberTitle") .HasColumnType("text") .HasColumnName("member_title"); b.Property>("Names") .IsRequired() .HasColumnType("jsonb") .HasColumnName("names"); b.Property("Password") .HasColumnType("text") .HasColumnName("password"); b.Property>("Pronouns") .IsRequired() .HasColumnType("jsonb") .HasColumnName("pronouns"); b.Property("Role") .HasColumnType("integer") .HasColumnName("role"); b.Property("Settings") .IsRequired() .HasColumnType("jsonb") .HasColumnName("settings"); b.Property("Sid") .IsRequired() .ValueGeneratedOnAdd() .HasColumnType("text") .HasColumnName("sid") .HasDefaultValueSql("find_free_user_sid()"); b.Property("Timezone") .HasColumnType("text") .HasColumnName("timezone"); b.Property("Username") .IsRequired() .HasColumnType("text") .HasColumnName("username"); b.HasKey("Id") .HasName("pk_users"); b.HasIndex("LegacyId") .IsUnique() .HasDatabaseName("ix_users_legacy_id"); b.HasIndex("Sid") .IsUnique() .HasDatabaseName("ix_users_sid"); b.HasIndex("Username") .IsUnique() .HasDatabaseName("ix_users_username"); b.ToTable("users", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.UserFlag", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("PrideFlagId") .HasColumnType("bigint") .HasColumnName("pride_flag_id"); b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id"); b.HasKey("Id") .HasName("pk_user_flags"); b.HasIndex("PrideFlagId") .HasDatabaseName("ix_user_flags_pride_flag_id"); b.HasIndex("UserId") .HasDatabaseName("ix_user_flags_user_id"); b.ToTable("user_flags", (string)null); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.AuditLogEntry", b => { b.HasOne("Foxnouns.Backend.Database.Models.Report", "Report") .WithOne("AuditLogEntry") .HasForeignKey("Foxnouns.Backend.Database.Models.AuditLogEntry", "ReportId") .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("fk_audit_log_reports_report_id"); b.Navigation("Report"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.AuthMethod", b => { b.HasOne("Foxnouns.Backend.Database.Models.FediverseApplication", "FediverseApplication") .WithMany() .HasForeignKey("FediverseApplicationId") .HasConstraintName("fk_auth_methods_fediverse_applications_fediverse_application_id"); b.HasOne("Foxnouns.Backend.Database.Models.User", "User") .WithMany("AuthMethods") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_auth_methods_users_user_id"); b.Navigation("FediverseApplication"); b.Navigation("User"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.DataExport", b => { b.HasOne("Foxnouns.Backend.Database.Models.User", "User") .WithMany("DataExports") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_data_exports_users_user_id"); b.Navigation("User"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Member", b => { b.HasOne("Foxnouns.Backend.Database.Models.User", "User") .WithMany("Members") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_members_users_user_id"); b.Navigation("User"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.MemberFlag", b => { b.HasOne("Foxnouns.Backend.Database.Models.Member", null) .WithMany("ProfileFlags") .HasForeignKey("MemberId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_member_flags_members_member_id"); b.HasOne("Foxnouns.Backend.Database.Models.PrideFlag", "PrideFlag") .WithMany() .HasForeignKey("PrideFlagId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_member_flags_pride_flags_pride_flag_id"); b.Navigation("PrideFlag"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Notification", b => { b.HasOne("Foxnouns.Backend.Database.Models.User", "Target") .WithMany() .HasForeignKey("TargetId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_notifications_users_target_id"); b.Navigation("Target"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.PrideFlag", b => { b.HasOne("Foxnouns.Backend.Database.Models.User", null) .WithMany("Flags") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_pride_flags_users_user_id"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Report", b => { b.HasOne("Foxnouns.Backend.Database.Models.User", "Reporter") .WithMany() .HasForeignKey("ReporterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_reports_users_reporter_id"); b.HasOne("Foxnouns.Backend.Database.Models.Member", "TargetMember") .WithMany() .HasForeignKey("TargetMemberId") .HasConstraintName("fk_reports_members_target_member_id"); b.HasOne("Foxnouns.Backend.Database.Models.User", "TargetUser") .WithMany() .HasForeignKey("TargetUserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_reports_users_target_user_id"); b.Navigation("Reporter"); b.Navigation("TargetMember"); b.Navigation("TargetUser"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Token", b => { b.HasOne("Foxnouns.Backend.Database.Models.Application", "Application") .WithMany() .HasForeignKey("ApplicationId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_tokens_applications_application_id"); b.HasOne("Foxnouns.Backend.Database.Models.User", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_tokens_users_user_id"); b.Navigation("Application"); b.Navigation("User"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.UserFlag", b => { b.HasOne("Foxnouns.Backend.Database.Models.PrideFlag", "PrideFlag") .WithMany() .HasForeignKey("PrideFlagId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_user_flags_pride_flags_pride_flag_id"); b.HasOne("Foxnouns.Backend.Database.Models.User", null) .WithMany("ProfileFlags") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_user_flags_users_user_id"); b.Navigation("PrideFlag"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Member", b => { b.Navigation("ProfileFlags"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.Report", b => { b.Navigation("AuditLogEntry"); }); modelBuilder.Entity("Foxnouns.Backend.Database.Models.User", b => { b.Navigation("AuthMethods"); b.Navigation("DataExports"); b.Navigation("Flags"); b.Navigation("Members"); b.Navigation("ProfileFlags"); }); #pragma warning restore 612, 618 } } }