mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-26 07:28:45 -07:00
d471b418b9
Targets Rec Room 2020.03.10 client (also serves 2020.03.06).
Re-import after adding:
- DorkNet.ClientMod/dorknet-clientmod.json.template — config schema
the launcher's manifest-driven patcher renders into UserData/.
- tools/build-patcher-zip.ps1 — produces dorknet-clientpatch-{key}.zip
for v1-march-* Release uploads.
- .github/workflows/release.yml — on tag push publishes both
dorknet-server-march_2020_03_10-win-x64.zip and
dorknet-clientpatch-march_2020_03_10.zip as Release assets.
Same scrub rules as december; tools/build-patcher-zip.ps1 added to
the maintainer-side allow-list so it survives.
48 lines
2.1 KiB
C#
48 lines
2.1 KiB
C#
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
#nullable disable
|
|
|
|
namespace DorkNet.Server.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class ForceDropBytesNotNull : Migration
|
|
{
|
|
// The previous migration (MakeRoomDataBlobBytesNullable) used
|
|
// EF's AlterColumn helper, which on Postgres produced a no-op
|
|
// because EF's diff saw oldType == newType and elided the
|
|
// statement — leaving the column still NOT NULL even though
|
|
// the model said it was nullable.
|
|
//
|
|
// Symptom: backfill UPDATEs failed with 23502 "null value in
|
|
// column Bytes violates not-null constraint" for every row.
|
|
//
|
|
// This migration runs the explicit DROP NOT NULL via raw SQL,
|
|
// gated on the active provider so SQLite (which doesn't speak
|
|
// that syntax and was already correctly fixed by the previous
|
|
// migration's table-rebuild dance) isn't affected. IF NOT
|
|
// EXISTS isn't supported here, but DROP NOT NULL when the
|
|
// column is already nullable is a Postgres no-op — safe to
|
|
// re-run.
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
if (migrationBuilder.ActiveProvider == "Npgsql.EntityFrameworkCore.PostgreSQL")
|
|
{
|
|
migrationBuilder.Sql(@"ALTER TABLE ""RoomDataBlobs"" ALTER COLUMN ""Bytes"" DROP NOT NULL;");
|
|
}
|
|
}
|
|
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
if (migrationBuilder.ActiveProvider == "Npgsql.EntityFrameworkCore.PostgreSQL")
|
|
{
|
|
// Re-tightening would fail if any rows had been nulled
|
|
// by the backfill — defensive UPDATE first puts them
|
|
// back to empty BYTEA, then the constraint can be
|
|
// re-applied. Rolling back this far is unusual.
|
|
migrationBuilder.Sql(@"UPDATE ""RoomDataBlobs"" SET ""Bytes"" = ''::bytea WHERE ""Bytes"" IS NULL;");
|
|
migrationBuilder.Sql(@"ALTER TABLE ""RoomDataBlobs"" ALTER COLUMN ""Bytes"" SET NOT NULL;");
|
|
}
|
|
}
|
|
}
|
|
}
|