Files
SVSimServer/SVSim.Database/Migrations/20260627171751_AddGuildInviteSurrogatePk.cs
gamer147 1b7fa2d525 feat(guild): invite state machine
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>
2026-06-27 13:21:57 -04:00

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" });
}
}
}