mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-27 07:58:45 -07:00
Import march-2020-03-10 from private repo (scrubbed 2026-05-27)
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.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DorkNet.Server.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class MakeRoomDataBlobBytesNullable : Migration
|
||||
{
|
||||
// CRITICAL: this migration must NOT drop or recreate the Bytes
|
||||
// column. The column physically exists on every prod DB and
|
||||
// holds the legacy bytes that haven't been backfilled to S3
|
||||
// yet. A DropColumn here would obliterate every pre-cutover
|
||||
// room save. We only flip NOT NULL -> NULL so new inserts
|
||||
// (which leave the property null because writers go S3-only
|
||||
// now) don't crash on the constraint. Run the
|
||||
// /api/admin/v1/storage/backfill admin endpoint to copy the
|
||||
// bytes from this column into S3 row-by-row; a follow-up
|
||||
// migration drops the column once every row has been moved.
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<byte[]>(
|
||||
name: "Bytes",
|
||||
table: "RoomDataBlobs",
|
||||
type: "BLOB",
|
||||
nullable: true,
|
||||
oldClrType: typeof(byte[]),
|
||||
oldType: "BLOB");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
// Re-tighten to NOT NULL. Any rows that became NULL during
|
||||
// the backfill won't pass this constraint — caller's
|
||||
// responsibility to repopulate or delete those rows
|
||||
// before rolling back. Defaulting to empty BLOB keeps
|
||||
// the constraint satisfiable.
|
||||
migrationBuilder.AlterColumn<byte[]>(
|
||||
name: "Bytes",
|
||||
table: "RoomDataBlobs",
|
||||
type: "BLOB",
|
||||
nullable: false,
|
||||
defaultValue: new byte[0],
|
||||
oldClrType: typeof(byte[]),
|
||||
oldType: "BLOB",
|
||||
oldNullable: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user