refactor(migrations): split tickets DDL out of migration 7 into migration 8
Migration 7 originally bundled tickets DDL with pending schema drift, which made it fail against prod (no tickets objects existed there). Split into a stripped migration 7 (no tickets statements) and a new tickets-only migration 8 that creates enum_tickets_* types, ALTER TYPE ADD VALUE for 'tickets' + 'ticket:*' muted-type values, tickets and tickets_activity tables, and the payload_locked_documents_rels.tickets_id column + FK + index. Migration 8's .json snapshot is the new forward baseline for migrate:create (verified via zero-diff probe). Applied to prod: m1-7 baselined as batch 1, m8 applied as batch 2.
This commit is contained in:
parent
10560c1446
commit
0ed8721889
4 changed files with 15677 additions and 108 deletions
|
|
@ -3,9 +3,9 @@ import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
|||
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
||||
await db.execute(sql`
|
||||
CREATE TYPE "public"."enum_game_vehicles_status" AS ENUM('idle', 'assigned', 'in_transit', 'damaged', 'destroyed');
|
||||
CREATE TYPE "public"."enum_game_event_logs_target_collection" AS ENUM('game-structures', 'game-vehicles', 'game-npcs', 'structures', 'resources', 'assets', 'vehicles', 'factions', 'missions', 'campaigns', 'users', 'technologies', 'maps', 'shipments', 'bank-accounts', 'bank-transactions', 'ledger-entries', 'locker-storages', 'loadouts', 'market-listings', 'market-negotiations', 'tickets');
|
||||
CREATE TYPE "public"."enum_users_preferences_notifications_muted_types" AS ENUM('market:offer', 'market:counter', 'market:accept', 'market:reject', 'market:withdrawn', 'market:closed', 'market:sold', 'market:expired', 'account:discord-request', 'finance:deposit', 'finance:withdraw', 'finance:transfer', 'shipment:completed', 'ticket:created', 'ticket:assigned', 'ticket:reply', 'ticket:status');
|
||||
CREATE TYPE "public"."enum_users_preferences_discord_muted_types" AS ENUM('market:offer', 'market:counter', 'market:accept', 'market:reject', 'market:withdrawn', 'market:closed', 'market:sold', 'market:expired', 'account:discord-request', 'finance:deposit', 'finance:withdraw', 'finance:transfer', 'shipment:completed', 'ticket:created', 'ticket:assigned', 'ticket:reply', 'ticket:status');
|
||||
CREATE TYPE "public"."enum_game_event_logs_target_collection" AS ENUM('game-structures', 'game-vehicles', 'game-npcs', 'structures', 'resources', 'assets', 'vehicles', 'factions', 'missions', 'campaigns', 'users', 'technologies', 'maps', 'shipments', 'bank-accounts', 'bank-transactions', 'ledger-entries', 'locker-storages', 'loadouts', 'market-listings', 'market-negotiations');
|
||||
CREATE TYPE "public"."enum_users_preferences_notifications_muted_types" AS ENUM('market:offer', 'market:counter', 'market:accept', 'market:reject', 'market:withdrawn', 'market:closed', 'market:sold', 'market:expired', 'account:discord-request', 'finance:deposit', 'finance:withdraw', 'finance:transfer', 'shipment:completed');
|
||||
CREATE TYPE "public"."enum_users_preferences_discord_muted_types" AS ENUM('market:offer', 'market:counter', 'market:accept', 'market:reject', 'market:withdrawn', 'market:closed', 'market:sold', 'market:expired', 'account:discord-request', 'finance:deposit', 'finance:withdraw', 'finance:transfer', 'shipment:completed');
|
||||
CREATE TYPE "public"."enum_mission_attendances_response" AS ENUM('yes', 'no', 'tentative');
|
||||
CREATE TYPE "public"."enum_technologies_approval_status" AS ENUM('in_progress', 'ready_for_review', 'approved', 'rejected', 'revision_requested');
|
||||
CREATE TYPE "public"."enum_assets_skin_configuration_applies_to_asset_types" AS ENUM('weapon', 'uniform', 'vest', 'backpack', 'helmet');
|
||||
|
|
@ -23,10 +23,6 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
CREATE TYPE "public"."enum_market_negotiations_history_from" AS ENUM('buyer', 'seller');
|
||||
CREATE TYPE "public"."enum_market_negotiations_status" AS ENUM('open', 'accepted', 'rejected', 'closed', 'cancelled', 'expired');
|
||||
CREATE TYPE "public"."enum_market_negotiations_proposed_by" AS ENUM('buyer', 'seller');
|
||||
CREATE TYPE "public"."enum_tickets_activity_type" AS ENUM('system', 'agent_message', 'client_message');
|
||||
CREATE TYPE "public"."enum_tickets_category" AS ENUM('bug_report', 'feature_request', 'support_request', 'other');
|
||||
CREATE TYPE "public"."enum_tickets_priority" AS ENUM('low', 'medium', 'high', 'critical');
|
||||
CREATE TYPE "public"."enum_tickets_status" AS ENUM('open', 'in_review', 'planning', 'in_progress', 'waiting_on_reporter', 'in_testing', 'resolved', 'canceled', 'closed');
|
||||
CREATE TYPE "public"."enum_narrative_events_triggers_type" AS ENUM('manual', 'mission_complete', 'timer', 'condition');
|
||||
ALTER TYPE "public"."enum_users_roles" ADD VALUE 'trusted' BEFORE 'admin';
|
||||
ALTER TYPE "public"."enum_factions_type" ADD VALUE 'playerFaction' BEFORE 'majorFaction';
|
||||
|
|
@ -41,7 +37,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"grid_y" numeric NOT NULL,
|
||||
"rotated" boolean DEFAULT false
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_vehicles_stored_resources" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
|
|
@ -52,7 +48,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"grid_y" numeric NOT NULL,
|
||||
"rotated" boolean DEFAULT false
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_vehicles_void_storage" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
|
|
@ -63,7 +59,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"grid_y" numeric NOT NULL,
|
||||
"rotated" boolean DEFAULT false
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_vehicles" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
|
|
@ -76,7 +72,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_npcs" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
|
|
@ -91,7 +87,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_npcs_rels" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"order" integer,
|
||||
|
|
@ -99,7 +95,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"path" varchar NOT NULL,
|
||||
"assets_id" integer
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_event_logs" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"system" boolean DEFAULT true,
|
||||
|
|
@ -114,21 +110,21 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "users_preferences_notifications_muted_types" (
|
||||
"order" integer NOT NULL,
|
||||
"parent_id" integer NOT NULL,
|
||||
"value" "enum_users_preferences_notifications_muted_types",
|
||||
"id" serial PRIMARY KEY NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "users_preferences_discord_muted_types" (
|
||||
"order" integer NOT NULL,
|
||||
"parent_id" integer NOT NULL,
|
||||
"value" "enum_users_preferences_discord_muted_types",
|
||||
"id" serial PRIMARY KEY NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "user_notifications" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"user_id" integer NOT NULL,
|
||||
|
|
@ -140,7 +136,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "mission_attendances" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"mission_id" integer NOT NULL,
|
||||
|
|
@ -149,7 +145,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "factions_relationships" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
|
|
@ -158,21 +154,21 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"value" numeric DEFAULT 0 NOT NULL,
|
||||
"notes" varchar
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "assets_skin_configuration_applies_to_asset_types" (
|
||||
"order" integer NOT NULL,
|
||||
"parent_id" integer NOT NULL,
|
||||
"value" "enum_assets_skin_configuration_applies_to_asset_types",
|
||||
"id" serial PRIMARY KEY NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "shipments_cargo" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"amount" numeric NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "shipments" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"name" varchar,
|
||||
|
|
@ -192,7 +188,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "shipments_rels" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"order" integer,
|
||||
|
|
@ -202,7 +198,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"assets_id" integer,
|
||||
"vehicles_id" integer
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "bank_accounts" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
|
|
@ -215,7 +211,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "bank_transactions" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"transaction_number" varchar NOT NULL,
|
||||
|
|
@ -232,7 +228,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "ledger_entries" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"account_id" integer NOT NULL,
|
||||
|
|
@ -245,14 +241,14 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "locker_storages_items_equipment_attachments" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" varchar NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"asset_id" integer NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "locker_storages_items" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
|
|
@ -265,7 +261,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"equipment_skin_id" integer,
|
||||
"equipment_custom_name" varchar
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "locker_storages" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"name" varchar DEFAULT 'Personal Locker' NOT NULL,
|
||||
|
|
@ -274,7 +270,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "loadouts" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
|
|
@ -297,7 +293,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "market_listings" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"asset_id" integer NOT NULL,
|
||||
|
|
@ -317,7 +313,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "market_negotiations_history" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
|
|
@ -327,7 +323,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"note" varchar,
|
||||
"at" timestamp(3) with time zone NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "market_negotiations" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"listing_id" integer NOT NULL,
|
||||
|
|
@ -341,31 +337,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE "tickets_activity" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"type" "enum_tickets_activity_type" DEFAULT 'system' NOT NULL,
|
||||
"content" jsonb NOT NULL,
|
||||
"author_id" integer,
|
||||
"created_at" timestamp(3) with time zone
|
||||
);
|
||||
|
||||
CREATE TABLE "tickets" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"title" varchar NOT NULL,
|
||||
"description" jsonb NOT NULL,
|
||||
"category" "enum_tickets_category" DEFAULT 'support_request' NOT NULL,
|
||||
"priority" "enum_tickets_priority" DEFAULT 'medium' NOT NULL,
|
||||
"status" "enum_tickets_status" DEFAULT 'open' NOT NULL,
|
||||
"reporter_id" integer NOT NULL,
|
||||
"assignee_id" integer,
|
||||
"closed_at" timestamp(3) with time zone,
|
||||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE "game_rules_rels" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"order" integer,
|
||||
|
|
@ -373,7 +345,7 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
"path" varchar NOT NULL,
|
||||
"assignments_id" integer
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE "missions" ALTER COLUMN "game_details_game_setup_mission_file_id" DROP NOT NULL;
|
||||
ALTER TABLE "structures_auto_generated_resources" ALTER COLUMN "min_frequency" SET DEFAULT '1';
|
||||
ALTER TABLE "game_structures_stored_resources" ADD COLUMN "grid_x" numeric DEFAULT 0 NOT NULL;
|
||||
|
|
@ -435,7 +407,6 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "loadouts_id" integer;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "market_listings_id" integer;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "market_negotiations_id" integer;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "tickets_id" integer;
|
||||
ALTER TABLE "game_rules" ADD COLUMN "proximity_threshold" numeric DEFAULT 10;
|
||||
ALTER TABLE "game_rules" ADD COLUMN "game_tick_interval_minutes" numeric DEFAULT 10;
|
||||
ALTER TABLE "game_rules" ADD COLUMN "locker_grid_width" numeric DEFAULT 10;
|
||||
|
|
@ -509,10 +480,6 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
ALTER TABLE "market_negotiations_history" ADD CONSTRAINT "market_negotiations_history_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."market_negotiations"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "market_negotiations" ADD CONSTRAINT "market_negotiations_listing_id_market_listings_id_fk" FOREIGN KEY ("listing_id") REFERENCES "public"."market_listings"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "market_negotiations" ADD CONSTRAINT "market_negotiations_buyer_id_users_id_fk" FOREIGN KEY ("buyer_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "tickets_activity" ADD CONSTRAINT "tickets_activity_author_id_users_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "tickets_activity" ADD CONSTRAINT "tickets_activity_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."tickets"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "tickets" ADD CONSTRAINT "tickets_reporter_id_users_id_fk" FOREIGN KEY ("reporter_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "tickets" ADD CONSTRAINT "tickets_assignee_id_users_id_fk" FOREIGN KEY ("assignee_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "game_rules_rels" ADD CONSTRAINT "game_rules_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."game_rules"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "game_rules_rels" ADD CONSTRAINT "game_rules_rels_assignments_fk" FOREIGN KEY ("assignments_id") REFERENCES "public"."assignments"("id") ON DELETE cascade ON UPDATE no action;
|
||||
CREATE INDEX "game_structures_void_storage_order_idx" ON "game_structures_void_storage" USING btree ("_order");
|
||||
|
|
@ -629,16 +596,6 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
CREATE INDEX "market_negotiations_status_idx" ON "market_negotiations" USING btree ("status");
|
||||
CREATE INDEX "market_negotiations_updated_at_idx" ON "market_negotiations" USING btree ("updated_at");
|
||||
CREATE INDEX "market_negotiations_created_at_idx" ON "market_negotiations" USING btree ("created_at");
|
||||
CREATE INDEX "tickets_activity_order_idx" ON "tickets_activity" USING btree ("_order");
|
||||
CREATE INDEX "tickets_activity_parent_id_idx" ON "tickets_activity" USING btree ("_parent_id");
|
||||
CREATE INDEX "tickets_activity_author_idx" ON "tickets_activity" USING btree ("author_id");
|
||||
CREATE INDEX "tickets_category_idx" ON "tickets" USING btree ("category");
|
||||
CREATE INDEX "tickets_priority_idx" ON "tickets" USING btree ("priority");
|
||||
CREATE INDEX "tickets_status_idx" ON "tickets" USING btree ("status");
|
||||
CREATE INDEX "tickets_reporter_idx" ON "tickets" USING btree ("reporter_id");
|
||||
CREATE INDEX "tickets_assignee_idx" ON "tickets" USING btree ("assignee_id");
|
||||
CREATE INDEX "tickets_updated_at_idx" ON "tickets" USING btree ("updated_at");
|
||||
CREATE INDEX "tickets_created_at_idx" ON "tickets" USING btree ("created_at");
|
||||
CREATE INDEX "game_rules_rels_order_idx" ON "game_rules_rels" USING btree ("order");
|
||||
CREATE INDEX "game_rules_rels_parent_idx" ON "game_rules_rels" USING btree ("parent_id");
|
||||
CREATE INDEX "game_rules_rels_path_idx" ON "game_rules_rels" USING btree ("path");
|
||||
|
|
@ -663,7 +620,6 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_loadouts_fk" FOREIGN KEY ("loadouts_id") REFERENCES "public"."loadouts"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_market_listings_fk" FOREIGN KEY ("market_listings_id") REFERENCES "public"."market_listings"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_market_negotiations_fk" FOREIGN KEY ("market_negotiations_id") REFERENCES "public"."market_negotiations"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_tickets_fk" FOREIGN KEY ("tickets_id") REFERENCES "public"."tickets"("id") ON DELETE cascade ON UPDATE no action;
|
||||
CREATE INDEX "game_structures_faction_idx" ON "game_structures" USING btree ("faction_id");
|
||||
CREATE UNIQUE INDEX "users_discord_id_idx" ON "users" USING btree ("discord_id");
|
||||
CREATE INDEX "profiles_rels_qualifications_id_idx" ON "profiles_rels" USING btree ("qualifications_id");
|
||||
|
|
@ -685,7 +641,6 @@ export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|||
CREATE INDEX "payload_locked_documents_rels_loadouts_id_idx" ON "payload_locked_documents_rels" USING btree ("loadouts_id");
|
||||
CREATE INDEX "payload_locked_documents_rels_market_listings_id_idx" ON "payload_locked_documents_rels" USING btree ("market_listings_id");
|
||||
CREATE INDEX "payload_locked_documents_rels_market_negotiations_id_idx" ON "payload_locked_documents_rels" USING btree ("market_negotiations_id");
|
||||
CREATE INDEX "payload_locked_documents_rels_tickets_id_idx" ON "payload_locked_documents_rels" USING btree ("tickets_id");
|
||||
ALTER TABLE "missions_factions_involved" DROP COLUMN "faction_name";`)
|
||||
}
|
||||
|
||||
|
|
@ -717,8 +672,6 @@ export async function down({ db, payload, req }: MigrateDownArgs): Promise<void>
|
|||
ALTER TABLE "market_listings" DISABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE "market_negotiations_history" DISABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE "market_negotiations" DISABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE "tickets_activity" DISABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE "tickets" DISABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE "game_rules_rels" DISABLE ROW LEVEL SECURITY;
|
||||
DROP TABLE "game_structures_void_storage" CASCADE;
|
||||
DROP TABLE "game_vehicles_stored_resources" CASCADE;
|
||||
|
|
@ -746,51 +699,47 @@ export async function down({ db, payload, req }: MigrateDownArgs): Promise<void>
|
|||
DROP TABLE "market_listings" CASCADE;
|
||||
DROP TABLE "market_negotiations_history" CASCADE;
|
||||
DROP TABLE "market_negotiations" CASCADE;
|
||||
DROP TABLE "tickets_activity" CASCADE;
|
||||
DROP TABLE "tickets" CASCADE;
|
||||
DROP TABLE "game_rules_rels" CASCADE;
|
||||
ALTER TABLE "game_structures" DROP CONSTRAINT "game_structures_faction_id_factions_id_fk";
|
||||
|
||||
|
||||
ALTER TABLE "profiles_rels" DROP CONSTRAINT "profiles_rels_qualifications_fk";
|
||||
|
||||
|
||||
ALTER TABLE "missions_factions_involved" DROP CONSTRAINT "missions_factions_involved_faction_id_factions_id_fk";
|
||||
|
||||
|
||||
ALTER TABLE "missions" DROP CONSTRAINT "missions_cover_image_id_media_id_fk";
|
||||
|
||||
|
||||
ALTER TABLE "campaigns" DROP CONSTRAINT "campaigns_cover_image_id_media_id_fk";
|
||||
|
||||
|
||||
ALTER TABLE "factions" DROP CONSTRAINT "factions_cover_image_id_media_id_fk";
|
||||
|
||||
|
||||
ALTER TABLE "vehicles" DROP CONSTRAINT "vehicles_fuel_fuel_type_id_resources_id_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_game_vehicles_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_game_npcs_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_game_event_logs_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_user_notifications_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_mission_attendances_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_shipments_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_bank_accounts_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_bank_transactions_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_ledger_entries_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_locker_storages_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_loadouts_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_market_listings_fk";
|
||||
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_market_negotiations_fk";
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_tickets_fk";
|
||||
|
||||
|
||||
ALTER TABLE "users_roles" ALTER COLUMN "value" SET DATA TYPE text;
|
||||
DROP TYPE "public"."enum_users_roles";
|
||||
CREATE TYPE "public"."enum_users_roles" AS ENUM('guest', 'user', 'admin', 'developer');
|
||||
|
|
@ -828,7 +777,6 @@ export async function down({ db, payload, req }: MigrateDownArgs): Promise<void>
|
|||
DROP INDEX "payload_locked_documents_rels_loadouts_id_idx";
|
||||
DROP INDEX "payload_locked_documents_rels_market_listings_id_idx";
|
||||
DROP INDEX "payload_locked_documents_rels_market_negotiations_id_idx";
|
||||
DROP INDEX "payload_locked_documents_rels_tickets_id_idx";
|
||||
ALTER TABLE "missions" ALTER COLUMN "game_details_game_setup_mission_file_id" SET NOT NULL;
|
||||
ALTER TABLE "structures_auto_generated_resources" ALTER COLUMN "min_frequency" SET DEFAULT 1;
|
||||
ALTER TABLE "missions_factions_involved" ADD COLUMN "faction_name" varchar NOT NULL;
|
||||
|
|
@ -889,7 +837,6 @@ export async function down({ db, payload, req }: MigrateDownArgs): Promise<void>
|
|||
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "loadouts_id";
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "market_listings_id";
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "market_negotiations_id";
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "tickets_id";
|
||||
ALTER TABLE "game_rules" DROP COLUMN "proximity_threshold";
|
||||
ALTER TABLE "game_rules" DROP COLUMN "game_tick_interval_minutes";
|
||||
ALTER TABLE "game_rules" DROP COLUMN "locker_grid_width";
|
||||
|
|
@ -915,9 +862,5 @@ export async function down({ db, payload, req }: MigrateDownArgs): Promise<void>
|
|||
DROP TYPE "public"."enum_market_negotiations_history_from";
|
||||
DROP TYPE "public"."enum_market_negotiations_status";
|
||||
DROP TYPE "public"."enum_market_negotiations_proposed_by";
|
||||
DROP TYPE "public"."enum_tickets_activity_type";
|
||||
DROP TYPE "public"."enum_tickets_category";
|
||||
DROP TYPE "public"."enum_tickets_priority";
|
||||
DROP TYPE "public"."enum_tickets_status";
|
||||
DROP TYPE "public"."enum_narrative_events_triggers_type";`)
|
||||
}
|
||||
|
|
|
|||
15515
src/migrations/20260816_220000.json
Normal file
15515
src/migrations/20260816_220000.json
Normal file
File diff suppressed because it is too large
Load diff
105
src/migrations/20260816_220000.ts
Normal file
105
src/migrations/20260816_220000.ts
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
||||
|
||||
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
||||
await db.execute(sql`
|
||||
CREATE TYPE "public"."enum_tickets_activity_type" AS ENUM('system', 'agent_message', 'client_message');
|
||||
CREATE TYPE "public"."enum_tickets_category" AS ENUM('bug_report', 'feature_request', 'support_request', 'other');
|
||||
CREATE TYPE "public"."enum_tickets_priority" AS ENUM('low', 'medium', 'high', 'critical');
|
||||
CREATE TYPE "public"."enum_tickets_status" AS ENUM('open', 'in_review', 'planning', 'in_progress', 'waiting_on_reporter', 'in_testing', 'resolved', 'canceled', 'closed');
|
||||
|
||||
ALTER TYPE "public"."enum_game_event_logs_target_collection" ADD VALUE 'tickets';
|
||||
|
||||
ALTER TYPE "public"."enum_users_preferences_notifications_muted_types" ADD VALUE 'ticket:created';
|
||||
ALTER TYPE "public"."enum_users_preferences_notifications_muted_types" ADD VALUE 'ticket:assigned';
|
||||
ALTER TYPE "public"."enum_users_preferences_notifications_muted_types" ADD VALUE 'ticket:reply';
|
||||
ALTER TYPE "public"."enum_users_preferences_notifications_muted_types" ADD VALUE 'ticket:status';
|
||||
|
||||
ALTER TYPE "public"."enum_users_preferences_discord_muted_types" ADD VALUE 'ticket:created';
|
||||
ALTER TYPE "public"."enum_users_preferences_discord_muted_types" ADD VALUE 'ticket:assigned';
|
||||
ALTER TYPE "public"."enum_users_preferences_discord_muted_types" ADD VALUE 'ticket:reply';
|
||||
ALTER TYPE "public"."enum_users_preferences_discord_muted_types" ADD VALUE 'ticket:status';
|
||||
|
||||
CREATE TABLE "tickets_activity" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"type" "enum_tickets_activity_type" DEFAULT 'system' NOT NULL,
|
||||
"content" jsonb NOT NULL,
|
||||
"author_id" integer,
|
||||
"created_at" timestamp(3) with time zone
|
||||
);
|
||||
|
||||
CREATE TABLE "tickets" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"title" varchar NOT NULL,
|
||||
"description" jsonb NOT NULL,
|
||||
"category" "enum_tickets_category" DEFAULT 'support_request' NOT NULL,
|
||||
"priority" "enum_tickets_priority" DEFAULT 'medium' NOT NULL,
|
||||
"status" "enum_tickets_status" DEFAULT 'open' NOT NULL,
|
||||
"reporter_id" integer NOT NULL,
|
||||
"assignee_id" integer,
|
||||
"closed_at" timestamp(3) with time zone,
|
||||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "tickets_id" integer;
|
||||
|
||||
ALTER TABLE "tickets_activity" ADD CONSTRAINT "tickets_activity_author_id_users_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "tickets_activity" ADD CONSTRAINT "tickets_activity_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."tickets"("id") ON DELETE cascade ON UPDATE no action;
|
||||
ALTER TABLE "tickets" ADD CONSTRAINT "tickets_reporter_id_users_id_fk" FOREIGN KEY ("reporter_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
ALTER TABLE "tickets" ADD CONSTRAINT "tickets_assignee_id_users_id_fk" FOREIGN KEY ("assignee_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
|
||||
|
||||
CREATE INDEX "tickets_activity_order_idx" ON "tickets_activity" USING btree ("_order");
|
||||
CREATE INDEX "tickets_activity_parent_id_idx" ON "tickets_activity" USING btree ("_parent_id");
|
||||
CREATE INDEX "tickets_activity_author_idx" ON "tickets_activity" USING btree ("author_id");
|
||||
CREATE INDEX "tickets_category_idx" ON "tickets" USING btree ("category");
|
||||
CREATE INDEX "tickets_priority_idx" ON "tickets" USING btree ("priority");
|
||||
CREATE INDEX "tickets_status_idx" ON "tickets" USING btree ("status");
|
||||
CREATE INDEX "tickets_reporter_idx" ON "tickets" USING btree ("reporter_id");
|
||||
CREATE INDEX "tickets_assignee_idx" ON "tickets" USING btree ("assignee_id");
|
||||
CREATE INDEX "tickets_updated_at_idx" ON "tickets" USING btree ("updated_at");
|
||||
CREATE INDEX "tickets_created_at_idx" ON "tickets" USING btree ("created_at");
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_tickets_fk" FOREIGN KEY ("tickets_id") REFERENCES "public"."tickets"("id") ON DELETE cascade ON UPDATE no action;
|
||||
CREATE INDEX "payload_locked_documents_rels_tickets_id_idx" ON "payload_locked_documents_rels" USING btree ("tickets_id");
|
||||
|
||||
ALTER TABLE "tickets_activity" DISABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE "tickets" DISABLE ROW LEVEL SECURITY;`)
|
||||
}
|
||||
|
||||
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
|
||||
await db.execute(sql`
|
||||
DROP INDEX "payload_locked_documents_rels_tickets_id_idx";
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_tickets_fk";
|
||||
|
||||
DROP INDEX "tickets_created_at_idx";
|
||||
DROP INDEX "tickets_updated_at_idx";
|
||||
DROP INDEX "tickets_assignee_idx";
|
||||
DROP INDEX "tickets_reporter_idx";
|
||||
DROP INDEX "tickets_status_idx";
|
||||
DROP INDEX "tickets_priority_idx";
|
||||
DROP INDEX "tickets_category_idx";
|
||||
DROP INDEX "tickets_activity_author_idx";
|
||||
DROP INDEX "tickets_activity_parent_id_idx";
|
||||
DROP INDEX "tickets_activity_order_idx";
|
||||
|
||||
ALTER TABLE "tickets_activity" DROP CONSTRAINT "tickets_activity_author_id_users_id_fk";
|
||||
ALTER TABLE "tickets_activity" DROP CONSTRAINT "tickets_activity_parent_id_fk";
|
||||
ALTER TABLE "tickets" DROP CONSTRAINT "tickets_reporter_id_users_id_fk";
|
||||
ALTER TABLE "tickets" DROP CONSTRAINT "tickets_assignee_id_users_id_fk";
|
||||
|
||||
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "tickets_id";
|
||||
|
||||
DROP TABLE "tickets_activity" CASCADE;
|
||||
DROP TABLE "tickets" CASCADE;
|
||||
|
||||
DROP TYPE "public"."enum_tickets_activity_type";
|
||||
DROP TYPE "public"."enum_tickets_category";
|
||||
DROP TYPE "public"."enum_tickets_priority";
|
||||
DROP TYPE "public"."enum_tickets_status";
|
||||
|
||||
-- Note: the enum values added via ALTER TYPE ... ADD VALUE in up()
|
||||
-- ('tickets', 'ticket:created', 'ticket:assigned', 'ticket:reply', 'ticket:status')
|
||||
-- cannot be removed here: PostgreSQL does not support DROP VALUE.`)
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import * as migration_20251222_200320 from './20251222_200320';
|
|||
import * as migration_20251223_055859 from './20251223_055859';
|
||||
import * as migration_20260109_065519 from './20260109_065519';
|
||||
import * as migration_20260816_213455 from './20260816_213455';
|
||||
import * as migration_20260816_220000 from './20260816_220000';
|
||||
|
||||
export const migrations = [
|
||||
{
|
||||
|
|
@ -40,6 +41,11 @@ export const migrations = [
|
|||
{
|
||||
up: migration_20260816_213455.up,
|
||||
down: migration_20260816_213455.down,
|
||||
name: '20260816_213455'
|
||||
name: '20260816_213455',
|
||||
},
|
||||
{
|
||||
up: migration_20260816_220000.up,
|
||||
down: migration_20260816_220000.down,
|
||||
name: '20260816_220000',
|
||||
},
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in a new issue