1
0
Fork 0

chore: add migration for GameStructures and altered Structure fields

This commit is contained in:
Jason Fraley 2025-12-19 01:33:49 -05:00
parent 2e00220808
commit c1360da9c2
3 changed files with 8939 additions and 1 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,69 @@
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
await db.execute(sql`
CREATE TABLE "game_structures_stored_resources" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"resource_id" integer NOT NULL,
"amount" numeric NOT NULL
);
CREATE TABLE "game_structures" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"type_id" integer NOT NULL,
"coordinates" geometry(Point),
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "payload_kv" (
"id" serial PRIMARY KEY NOT NULL,
"key" varchar NOT NULL,
"data" jsonb NOT NULL
);
ALTER TABLE "structures_auto_generated_resources" RENAME COLUMN "amount" TO "min_amount";
ALTER TABLE "structures_auto_generated_resources" RENAME COLUMN "frequency" TO "min_frequency";
ALTER TABLE "structures_auto_generated_resources" ALTER COLUMN "resource_id" SET NOT NULL;
ALTER TABLE "structures_auto_generated_resources" ADD COLUMN "max_amount" numeric;
ALTER TABLE "structures_auto_generated_resources" ADD COLUMN "max_frequency" varchar;
ALTER TABLE "structures_auto_generated_resources" ADD COLUMN "produce_chance" numeric DEFAULT 100;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "game_structures_id" integer;
ALTER TABLE "game_structures_stored_resources" ADD CONSTRAINT "game_structures_stored_resources_resource_id_resources_id_fk" FOREIGN KEY ("resource_id") REFERENCES "public"."resources"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_structures_stored_resources" ADD CONSTRAINT "game_structures_stored_resources_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."game_structures"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "game_structures" ADD CONSTRAINT "game_structures_type_id_structures_id_fk" FOREIGN KEY ("type_id") REFERENCES "public"."structures"("id") ON DELETE set null ON UPDATE no action;
CREATE INDEX "game_structures_stored_resources_order_idx" ON "game_structures_stored_resources" USING btree ("_order");
CREATE INDEX "game_structures_stored_resources_parent_id_idx" ON "game_structures_stored_resources" USING btree ("_parent_id");
CREATE INDEX "game_structures_stored_resources_resource_idx" ON "game_structures_stored_resources" USING btree ("resource_id");
CREATE INDEX "game_structures_type_idx" ON "game_structures" USING btree ("type_id");
CREATE INDEX "game_structures_updated_at_idx" ON "game_structures" USING btree ("updated_at");
CREATE INDEX "game_structures_created_at_idx" ON "game_structures" USING btree ("created_at");
CREATE UNIQUE INDEX "payload_kv_key_idx" ON "payload_kv" USING btree ("key");
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_game_structures_fk" FOREIGN KEY ("game_structures_id") REFERENCES "public"."game_structures"("id") ON DELETE cascade ON UPDATE no action;
CREATE INDEX "payload_locked_documents_rels_game_structures_id_idx" ON "payload_locked_documents_rels" USING btree ("game_structures_id");`)
}
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
await db.execute(sql`
ALTER TABLE "game_structures_stored_resources" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_structures" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "payload_kv" DISABLE ROW LEVEL SECURITY;
DROP TABLE "game_structures_stored_resources" CASCADE;
DROP TABLE "game_structures" CASCADE;
DROP TABLE "payload_kv" CASCADE;
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_game_structures_fk";
DROP INDEX "payload_locked_documents_rels_game_structures_id_idx";
ALTER TABLE "structures_auto_generated_resources" ALTER COLUMN "resource_id" DROP NOT NULL;
ALTER TABLE "structures_auto_generated_resources" ADD COLUMN "amount" numeric;
ALTER TABLE "structures_auto_generated_resources" ADD COLUMN "frequency" varchar;
ALTER TABLE "structures_auto_generated_resources" DROP COLUMN "min_amount";
ALTER TABLE "structures_auto_generated_resources" DROP COLUMN "max_amount";
ALTER TABLE "structures_auto_generated_resources" DROP COLUMN "min_frequency";
ALTER TABLE "structures_auto_generated_resources" DROP COLUMN "max_frequency";
ALTER TABLE "structures_auto_generated_resources" DROP COLUMN "produce_chance";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "game_structures_id";`)
}

View file

@ -1,5 +1,6 @@
import * as migration_20251206_065831 from './20251206_065831';
import * as migration_20251212_183607 from './20251212_183607';
import * as migration_20251219_061127 from './20251219_061127';
export const migrations = [
{
@ -10,6 +11,11 @@ export const migrations = [
{
up: migration_20251212_183607.up,
down: migration_20251212_183607.down,
name: '20251212_183607'
name: '20251212_183607',
},
{
up: migration_20251219_061127.up,
down: migration_20251219_061127.down,
name: '20251219_061127'
},
];