Add surrogate PK (IDENTITY bigint) to GuildInvite for wire invite_id. Implement InviteAsync, CancelInviteAsync, RejectInviteAsync, ListOutgoingInvitesAsync, ListInvitedGuildsAsync in GuildService. Wire 5 endpoints: invite_user_list, invited_guild_list, invite, cancel_invite, reject_invite in GuildController. Migration: AddGuildInviteSurrogatePk — drops composite PK, adds Id IDENTITY column, adds unique index on (GuildId, InviteeViewerId). 6 integration tests in GuildInviteFlowTests all green. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
1.9 KiB
C#
60 lines
1.9 KiB
C#
using Microsoft.EntityFrameworkCore.Migrations;
|
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
|
|
#nullable disable
|
|
|
|
namespace SVSim.Database.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class AddGuildInviteSurrogatePk : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropPrimaryKey(
|
|
name: "PK_GuildInvites",
|
|
table: "GuildInvites");
|
|
|
|
migrationBuilder.AddColumn<long>(
|
|
name: "Id",
|
|
table: "GuildInvites",
|
|
type: "bigint",
|
|
nullable: false,
|
|
defaultValue: 0L)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
|
|
|
|
migrationBuilder.AddPrimaryKey(
|
|
name: "PK_GuildInvites",
|
|
table: "GuildInvites",
|
|
column: "Id");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GuildInvites_GuildId_InviteeViewerId",
|
|
table: "GuildInvites",
|
|
columns: new[] { "GuildId", "InviteeViewerId" },
|
|
unique: true);
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropPrimaryKey(
|
|
name: "PK_GuildInvites",
|
|
table: "GuildInvites");
|
|
|
|
migrationBuilder.DropIndex(
|
|
name: "IX_GuildInvites_GuildId_InviteeViewerId",
|
|
table: "GuildInvites");
|
|
|
|
migrationBuilder.DropColumn(
|
|
name: "Id",
|
|
table: "GuildInvites");
|
|
|
|
migrationBuilder.AddPrimaryKey(
|
|
name: "PK_GuildInvites",
|
|
table: "GuildInvites",
|
|
columns: new[] { "GuildId", "InviteeViewerId" });
|
|
}
|
|
}
|
|
}
|