chore: add migration for GameStructures and altered Structure fields
This commit is contained in:
parent
2e00220808
commit
c1360da9c2
3 changed files with 8939 additions and 1 deletions
8863
src/migrations/20251219_061127.json
Normal file
8863
src/migrations/20251219_061127.json
Normal file
File diff suppressed because it is too large
Load diff
69
src/migrations/20251219_061127.ts
Normal file
69
src/migrations/20251219_061127.ts
Normal 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";`)
|
||||
}
|
||||
|
|
@ -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'
|
||||
},
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in a new issue