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 => new { m.UserId, m.Name }).IsUnique();
|
||||||
modelBuilder.Entity<Member>().HasIndex(m => m.Sid).IsUnique();
|
modelBuilder.Entity<Member>().HasIndex(m => m.Sid).IsUnique();
|
||||||
modelBuilder.Entity<TemporaryKey>().HasIndex(k => k.Key).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.Sid).HasDefaultValueSql("find_free_user_sid()");
|
||||||
modelBuilder.Entity<User>().Property(u => u.Fields).HasColumnType("jsonb");
|
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")
|
b.HasIndex("UserId")
|
||||||
.HasDatabaseName("ix_auth_methods_user_id");
|
.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);
|
b.ToTable("auth_methods", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue