fix(backend): add unique index to auth methods
This commit is contained in:
		
							parent
							
								
									8b1d5b2c1b
								
							
						
					
					
						commit
						4780be3019
					
				
					 3 changed files with 73 additions and 0 deletions
				
			
		|  | @ -71,6 +71,22 @@ public class DatabaseContext(DbContextOptions options) : DbContext(options) | |||
|         modelBuilder.Entity<Member>().HasIndex(m => new { m.UserId, m.Name }).IsUnique(); | ||||
|         modelBuilder.Entity<Member>().HasIndex(m => m.Sid).IsUnique(); | ||||
|         modelBuilder.Entity<TemporaryKey>().HasIndex(k => k.Key).IsUnique(); | ||||
|         modelBuilder | ||||
|             .Entity<AuthMethod>() | ||||
|             .HasIndex(m => new | ||||
|             { | ||||
|                 m.AuthType, | ||||
|                 m.RemoteId, | ||||
|                 m.FediverseApplicationId, | ||||
|             }) | ||||
|             .HasFilter("fediverse_application_id IS NOT NULL") | ||||
|             .IsUnique(); | ||||
| 
 | ||||
|         modelBuilder | ||||
|             .Entity<AuthMethod>() | ||||
|             .HasIndex(m => new { m.AuthType, m.RemoteId }) | ||||
|             .HasFilter("fediverse_application_id IS NULL") | ||||
|             .IsUnique(); | ||||
| 
 | ||||
|         modelBuilder.Entity<User>().Property(u => u.Sid).HasDefaultValueSql("find_free_user_sid()"); | ||||
|         modelBuilder.Entity<User>().Property(u => u.Fields).HasColumnType("jsonb"); | ||||
|  |  | |||
|  | @ -0,0 +1,47 @@ | |||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| 
 | ||||
| #nullable disable | ||||
| 
 | ||||
| namespace Foxnouns.Backend.Database.Migrations | ||||
| { | ||||
|     /// <inheritdoc /> | ||||
|     [DbContext(typeof(DatabaseContext))] | ||||
|     [Migration("20241128202508_AddAuthMethodUniqueIndex")] | ||||
|     public partial class AddAuthMethodUniqueIndex : Migration | ||||
|     { | ||||
|         /// <inheritdoc /> | ||||
|         protected override void Up(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.CreateIndex( | ||||
|                 name: "ix_auth_methods_auth_type_remote_id", | ||||
|                 table: "auth_methods", | ||||
|                 columns: new[] { "auth_type", "remote_id" }, | ||||
|                 unique: true, | ||||
|                 filter: "fediverse_application_id IS NULL" | ||||
|             ); | ||||
| 
 | ||||
|             migrationBuilder.CreateIndex( | ||||
|                 name: "ix_auth_methods_auth_type_remote_id_fediverse_application_id", | ||||
|                 table: "auth_methods", | ||||
|                 columns: new[] { "auth_type", "remote_id", "fediverse_application_id" }, | ||||
|                 unique: true, | ||||
|                 filter: "fediverse_application_id IS NOT NULL" | ||||
|             ); | ||||
|         } | ||||
| 
 | ||||
|         /// <inheritdoc /> | ||||
|         protected override void Down(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.DropIndex( | ||||
|                 name: "ix_auth_methods_auth_type_remote_id", | ||||
|                 table: "auth_methods" | ||||
|             ); | ||||
| 
 | ||||
|             migrationBuilder.DropIndex( | ||||
|                 name: "ix_auth_methods_auth_type_remote_id_fediverse_application_id", | ||||
|                 table: "auth_methods" | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -98,6 +98,16 @@ namespace Foxnouns.Backend.Database.Migrations | |||
|                     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); | ||||
|                 }); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue