diff --git a/.gitignore b/.gitignore index b1e845f..9037fa0 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,6 @@ docker/proxy-config.json docker/frontend.env Foxnouns.DataMigrator/apps.json -migration-tools/avatar-proxy/config.json -migration-tools/avatar-migrator/.env out/ build/ diff --git a/Foxnouns.Backend/Database/Migrations/20250410192220_AddAvatarMigrations.Designer.cs b/Foxnouns.Backend/Database/Migrations/20250410192220_AddAvatarMigrations.Designer.cs deleted file mode 100644 index cb9377d..0000000 --- a/Foxnouns.Backend/Database/Migrations/20250410192220_AddAvatarMigrations.Designer.cs +++ /dev/null @@ -1,923 +0,0 @@ -// -using System.Collections.Generic; -using Foxnouns.Backend.Database; -using Foxnouns.Backend.Database.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using NodaTime; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Foxnouns.Backend.Database.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20250410192220_AddAvatarMigrations")] - partial class AddAvatarMigrations - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "9.0.2") - .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("AvatarMigrated") - .HasColumnType("boolean") - .HasColumnName("avatar_migrated"); - - 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.Notice", b => - { - b.Property("Id") - .HasColumnType("bigint") - .HasColumnName("id"); - - b.Property("AuthorId") - .HasColumnType("bigint") - .HasColumnName("author_id"); - - b.Property("EndTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_time"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("StartTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_time"); - - b.HasKey("Id") - .HasName("pk_notices"); - - b.HasIndex("AuthorId") - .HasDatabaseName("ix_notices_author_id"); - - b.ToTable("notices", (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.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("AvatarMigrated") - .HasColumnType("boolean") - .HasColumnName("avatar_migrated"); - - 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.Notice", b => - { - b.HasOne("Foxnouns.Backend.Database.Models.User", "Author") - .WithMany() - .HasForeignKey("AuthorId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_notices_users_author_id"); - - b.Navigation("Author"); - }); - - 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 - } - } -} diff --git a/Foxnouns.Backend/Database/Migrations/20250410192220_AddAvatarMigrations.cs b/Foxnouns.Backend/Database/Migrations/20250410192220_AddAvatarMigrations.cs deleted file mode 100644 index ca88605..0000000 --- a/Foxnouns.Backend/Database/Migrations/20250410192220_AddAvatarMigrations.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Foxnouns.Backend.Database.Migrations -{ - /// - public partial class AddAvatarMigrations : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "avatar_migrated", - table: "users", - type: "boolean", - nullable: false, - defaultValue: false - ); - - migrationBuilder.AddColumn( - name: "avatar_migrated", - table: "members", - type: "boolean", - nullable: false, - defaultValue: false - ); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn(name: "avatar_migrated", table: "users"); - - migrationBuilder.DropColumn(name: "avatar_migrated", table: "members"); - } - } -} diff --git a/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs b/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs index 92db9f9..70b035d 100644 --- a/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs +++ b/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs @@ -241,10 +241,6 @@ namespace Foxnouns.Backend.Database.Migrations .HasColumnType("text") .HasColumnName("avatar"); - b.Property("AvatarMigrated") - .HasColumnType("boolean") - .HasColumnName("avatar_migrated"); - b.Property("Bio") .HasColumnType("text") .HasColumnName("bio"); @@ -569,10 +565,6 @@ namespace Foxnouns.Backend.Database.Migrations .HasColumnType("text") .HasColumnName("avatar"); - b.Property("AvatarMigrated") - .HasColumnType("boolean") - .HasColumnName("avatar_migrated"); - b.Property("Bio") .HasColumnType("text") .HasColumnName("bio"); diff --git a/Foxnouns.Backend/Database/Models/Member.cs b/Foxnouns.Backend/Database/Models/Member.cs index 85b39f3..81a01d8 100644 --- a/Foxnouns.Backend/Database/Models/Member.cs +++ b/Foxnouns.Backend/Database/Models/Member.cs @@ -29,9 +29,6 @@ public class Member : BaseModel public List Pronouns { get; set; } = []; public List Fields { get; set; } = []; - // Only used by avatar-proxy and avatar-migration. - public bool AvatarMigrated { get; set; } = true; - public List ProfileFlags { get; set; } = []; public Snowflake UserId { get; init; } diff --git a/Foxnouns.Backend/Database/Models/User.cs b/Foxnouns.Backend/Database/Models/User.cs index fe97b6c..0e6eb43 100644 --- a/Foxnouns.Backend/Database/Models/User.cs +++ b/Foxnouns.Backend/Database/Models/User.cs @@ -57,9 +57,6 @@ public class User : BaseModel public Instant? DeletedAt { get; set; } public Snowflake? DeletedBy { get; set; } - // Only used by avatar-proxy and avatar-migration. - public bool AvatarMigrated { get; set; } = true; - [NotMapped] public bool? SelfDelete => Deleted ? DeletedBy != null : null; diff --git a/Foxnouns.Backend/Jobs/MemberAvatarUpdateJob.cs b/Foxnouns.Backend/Jobs/MemberAvatarUpdateJob.cs index c1d2df4..907dfc4 100644 --- a/Foxnouns.Backend/Jobs/MemberAvatarUpdateJob.cs +++ b/Foxnouns.Backend/Jobs/MemberAvatarUpdateJob.cs @@ -67,7 +67,6 @@ public class MemberAvatarUpdateJob( await objectStorageService.PutObjectAsync(Path(id, hash), image, "image/webp"); member.Avatar = hash; - member.AvatarMigrated = true; await db.SaveChangesAsync(); if (prevHash != null && prevHash != hash) diff --git a/Foxnouns.Backend/Jobs/UserAvatarUpdateJob.cs b/Foxnouns.Backend/Jobs/UserAvatarUpdateJob.cs index cf7bed0..1ab446c 100644 --- a/Foxnouns.Backend/Jobs/UserAvatarUpdateJob.cs +++ b/Foxnouns.Backend/Jobs/UserAvatarUpdateJob.cs @@ -68,7 +68,6 @@ public class UserAvatarUpdateJob( await objectStorageService.PutObjectAsync(Path(id, hash), image, "image/webp"); user.Avatar = hash; - user.AvatarMigrated = true; await db.SaveChangesAsync(); if (prevHash != null && prevHash != hash) diff --git a/Foxnouns.Frontend/.vscode/settings.json b/Foxnouns.Frontend/.vscode/settings.json index c5d12a5..5703e7f 100644 --- a/Foxnouns.Frontend/.vscode/settings.json +++ b/Foxnouns.Frontend/.vscode/settings.json @@ -4,6 +4,5 @@ "i18n-ally.localesPaths": ["src/lib/i18n", "src/lib/i18n/locales"], "i18n-ally.keystyle": "nested", "explorer.sortOrder": "filesFirst", - "explorer.compactFolders": false, - "eslint.validate": ["javascript", "javascriptreact", "svelte"] + "explorer.compactFolders": false } diff --git a/Foxnouns.Frontend/src/lib/components/GlobalNotice.svelte b/Foxnouns.Frontend/src/lib/components/GlobalNotice.svelte index c8a55f1..3d1c718 100644 --- a/Foxnouns.Frontend/src/lib/components/GlobalNotice.svelte +++ b/Foxnouns.Frontend/src/lib/components/GlobalNotice.svelte @@ -34,7 +34,6 @@ {#if renderNotice}