1
0
Fork 0

feat(migrations): add production migration for tickets and pending schema drift

Add migration 20260816_213455 covering the Tickets collection plus all schema drift accumulated since 20260109 (banking, market, game vehicles/NPCs, attendance, enum extensions).

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
Jason Fraley 2026-08-16 18:12:59 -04:00
parent 6480b47273
commit 9ec4555200
3 changed files with 16443 additions and 1 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,921 @@
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_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');
CREATE TYPE "public"."enum_assets_approval_status" AS ENUM('in_progress', 'ready_for_review', 'approved', 'rejected', 'revision_requested');
CREATE TYPE "public"."enum_resources_approval_status" AS ENUM('in_progress', 'ready_for_review', 'approved', 'rejected', 'revision_requested');
CREATE TYPE "public"."enum_vehicles_approval_status" AS ENUM('in_progress', 'ready_for_review', 'approved', 'rejected', 'revision_requested');
CREATE TYPE "public"."enum_structures_approval_status" AS ENUM('in_progress', 'ready_for_review', 'approved', 'rejected', 'revision_requested');
CREATE TYPE "public"."enum_shipments_status" AS ENUM('pending', 'dispatched', 'in_transit', 'arrived', 'completed', 'cancelled', 'failed', 'stranded');
CREATE TYPE "public"."enum_bank_accounts_account_type" AS ENUM('treasury', 'faction', 'personal');
CREATE TYPE "public"."enum_bank_accounts_status" AS ENUM('open', 'frozen', 'closed');
CREATE TYPE "public"."enum_bank_transactions_type" AS ENUM('deposit', 'withdrawal', 'transfer', 'payment', 'fee', 'salary', 'adjustment');
CREATE TYPE "public"."enum_bank_transactions_status" AS ENUM('completed', 'reversed');
CREATE TYPE "public"."enum_ledger_entries_type" AS ENUM('deposit', 'withdrawal', 'transfer', 'payment', 'fee', 'salary', 'adjustment');
CREATE TYPE "public"."enum_market_listings_status" AS ENUM('active', 'sold', 'cancelled', 'expired');
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';
ALTER TYPE "public"."enum_assets_asset_type" ADD VALUE 'skin' BEFORE 'miscellaneous';
CREATE TABLE "game_structures_void_storage" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"resource_id" integer NOT NULL,
"amount" numeric NOT NULL,
"grid_x" numeric NOT NULL,
"grid_y" numeric NOT NULL,
"rotated" boolean DEFAULT false
);
CREATE TABLE "game_vehicles_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,
"grid_x" numeric NOT NULL,
"grid_y" numeric NOT NULL,
"rotated" boolean DEFAULT false
);
CREATE TABLE "game_vehicles_void_storage" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"resource_id" integer NOT NULL,
"amount" numeric NOT NULL,
"grid_x" numeric NOT NULL,
"grid_y" numeric NOT NULL,
"rotated" boolean DEFAULT false
);
CREATE TABLE "game_vehicles" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"type_id" integer NOT NULL,
"deployed_at_id" integer,
"faction_id" integer,
"status" "enum_game_vehicles_status" DEFAULT 'idle' NOT NULL,
"current_fuel" numeric DEFAULT 0 NOT NULL,
"current_health" numeric NOT NULL,
"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,
"occupation" varchar,
"location_id" integer,
"faction_id" integer,
"bio" varchar,
"is_generated" boolean DEFAULT false,
"is_in_game" boolean DEFAULT true,
"vendor_enabled" boolean DEFAULT false,
"vendor_price_modifier" numeric DEFAULT 1,
"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,
"parent_id" integer NOT NULL,
"path" varchar NOT NULL,
"assets_id" integer
);
CREATE TABLE "game_event_logs" (
"id" serial PRIMARY KEY NOT NULL,
"system" boolean DEFAULT true,
"timestamp" timestamp(3) with time zone NOT NULL,
"type" varchar NOT NULL,
"message" varchar NOT NULL,
"actor_id" integer,
"structure_id" integer,
"target_collection" "enum_game_event_logs_target_collection",
"target_id" numeric,
"data" jsonb,
"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,
"type" varchar,
"title" varchar NOT NULL,
"message" varchar,
"link" varchar,
"read" boolean DEFAULT false,
"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,
"user_id" integer NOT NULL,
"response" "enum_mission_attendances_response" NOT NULL,
"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,
"id" varchar PRIMARY KEY NOT NULL,
"target_faction_id" integer NOT NULL,
"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,
"origin_id" integer NOT NULL,
"destination_id" integer NOT NULL,
"transport_vehicle_id" integer NOT NULL,
"distance" numeric NOT NULL,
"fuel_cost" numeric NOT NULL,
"fuel_consumed" numeric DEFAULT 0,
"status" "enum_shipments_status" DEFAULT 'pending' NOT NULL,
"dispatched_at" timestamp(3) with time zone,
"estimated_arrival" timestamp(3) with time zone,
"completed_at" timestamp(3) with time zone,
"auto_return" boolean DEFAULT false,
"created_by_id" integer,
"failure_reason" varchar,
"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,
"parent_id" integer NOT NULL,
"path" varchar NOT NULL,
"resources_id" integer,
"assets_id" integer,
"vehicles_id" integer
);
CREATE TABLE "bank_accounts" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"account_type" "enum_bank_accounts_account_type" DEFAULT 'personal' NOT NULL,
"owner_faction_id" integer,
"owner_user_id" integer,
"currency_id" integer NOT NULL,
"balance" numeric DEFAULT 0,
"status" "enum_bank_accounts_status" DEFAULT 'open' NOT NULL,
"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,
"type" "enum_bank_transactions_type" NOT NULL,
"from_account_id" integer,
"to_account_id" integer,
"amount" numeric NOT NULL,
"fee" numeric DEFAULT 0,
"memo" varchar,
"actor_id" integer,
"status" "enum_bank_transactions_status" DEFAULT 'completed' NOT NULL,
"reference_id" integer,
"timestamp" timestamp(3) with time zone NOT NULL,
"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,
"transaction_id" integer NOT NULL,
"type" "enum_ledger_entries_type" NOT NULL,
"amount" numeric NOT NULL,
"balance_after" numeric,
"memo" varchar,
"timestamp" timestamp(3) with time zone NOT NULL,
"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,
"id" varchar PRIMARY KEY NOT NULL,
"asset_id" integer NOT NULL,
"quantity" numeric DEFAULT 1 NOT NULL,
"grid_x" numeric DEFAULT 0 NOT NULL,
"grid_y" numeric DEFAULT 0 NOT NULL,
"rotated" boolean DEFAULT false,
"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,
"owner_user_id" integer NOT NULL,
"item_count" numeric,
"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,
"description" varchar,
"owner_user_id" integer NOT NULL,
"equipped" boolean DEFAULT false,
"slots_primary_id" integer,
"slots_secondary_id" integer,
"slots_launcher_id" integer,
"slots_uniform_id" integer,
"slots_vest_id" integer,
"slots_backpack_id" integer,
"slots_helmet_id" integer,
"slots_facewear_id" integer,
"slots_nvg_id" integer,
"slots_radio_id" integer,
"slots_optic_id" integer,
"slots_muzzle_id" integer,
"slots_bipod_id" integer,
"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,
"seller_id" integer,
"npc_id" integer,
"quantity" numeric DEFAULT 1 NOT NULL,
"price" numeric NOT NULL,
"desired_price" numeric,
"min_price" numeric,
"currency_id" integer,
"status" "enum_market_listings_status" DEFAULT 'active' NOT NULL,
"is_auto_generated" boolean DEFAULT false,
"listed_at" timestamp(3) with time zone NOT NULL,
"expires_at" timestamp(3) with time zone,
"sold_at" timestamp(3) with time zone,
"buyer_id" integer,
"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,
"id" varchar PRIMARY KEY NOT NULL,
"amount" numeric NOT NULL,
"from" "enum_market_negotiations_history_from" NOT NULL,
"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,
"buyer_id" integer NOT NULL,
"status" "enum_market_negotiations_status" DEFAULT 'open' NOT NULL,
"patience" numeric DEFAULT 0,
"quantity" numeric DEFAULT 1,
"amount" numeric NOT NULL,
"proposed_by" "enum_market_negotiations_proposed_by" DEFAULT 'buyer' NOT NULL,
"accepted_price" numeric,
"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,
"parent_id" integer NOT NULL,
"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 NOT NULL;
ALTER TABLE "game_structures_stored_resources" ADD COLUMN "grid_y" numeric NOT NULL;
ALTER TABLE "game_structures_stored_resources" ADD COLUMN "rotated" boolean DEFAULT false;
ALTER TABLE "game_structures" ADD COLUMN "faction_id" integer;
ALTER TABLE "users" ADD COLUMN "discord_id" varchar;
ALTER TABLE "users" ADD COLUMN "preferences_notifications_muted_all" boolean DEFAULT false;
ALTER TABLE "users" ADD COLUMN "preferences_display_show_callsign" boolean DEFAULT false;
ALTER TABLE "users" ADD COLUMN "preferences_discord_enabled" boolean DEFAULT false;
ALTER TABLE "profiles" ADD COLUMN "progression_minigames_flappy_bird_games_played" numeric DEFAULT 0;
ALTER TABLE "profiles" ADD COLUMN "progression_minigames_flappy_bird_total_passes" numeric DEFAULT 0;
ALTER TABLE "profiles" ADD COLUMN "progression_minigames_flappy_bird_best_score" numeric DEFAULT 0;
ALTER TABLE "profiles" ADD COLUMN "progression_minigames_flappy_bird_xp_earned" numeric DEFAULT 0;
ALTER TABLE "profiles_rels" ADD COLUMN "qualifications_id" integer;
ALTER TABLE "awards" ADD COLUMN "ribbon_design" jsonb;
ALTER TABLE "awards" ADD COLUMN "medal_design" jsonb;
ALTER TABLE "missions_factions_involved" ADD COLUMN "faction_id" integer NOT NULL;
ALTER TABLE "missions" ADD COLUMN "discord_message_id" varchar;
ALTER TABLE "missions" ADD COLUMN "discord_attendance_hash" varchar;
ALTER TABLE "missions" ADD COLUMN "cover_image_id" integer;
ALTER TABLE "campaigns" ADD COLUMN "cover_image_id" integer;
ALTER TABLE "factions" ADD COLUMN "reputation" numeric DEFAULT 0;
ALTER TABLE "factions" ADD COLUMN "cover_image_id" integer;
ALTER TABLE "technologies" ADD COLUMN "approval_status" "enum_technologies_approval_status" DEFAULT 'in_progress' NOT NULL;
ALTER TABLE "assets" ADD COLUMN "approval_status" "enum_assets_approval_status" DEFAULT 'in_progress' NOT NULL;
ALTER TABLE "assets" ADD COLUMN "storage_dimensions_grid_width" numeric DEFAULT 1 NOT NULL;
ALTER TABLE "assets" ADD COLUMN "storage_dimensions_grid_height" numeric DEFAULT 1 NOT NULL;
ALTER TABLE "assets" ADD COLUMN "storage_dimensions_stackable" boolean DEFAULT true;
ALTER TABLE "assets" ADD COLUMN "storage_dimensions_max_stack_size" numeric;
ALTER TABLE "assets" ADD COLUMN "storage_dimensions_rotatable" boolean DEFAULT true;
ALTER TABLE "resources" ADD COLUMN "approval_status" "enum_resources_approval_status" DEFAULT 'in_progress' NOT NULL;
ALTER TABLE "resources" ADD COLUMN "grid_width" numeric DEFAULT 1 NOT NULL;
ALTER TABLE "resources" ADD COLUMN "grid_height" numeric DEFAULT 1 NOT NULL;
ALTER TABLE "resources" ADD COLUMN "stackable" boolean DEFAULT true;
ALTER TABLE "resources" ADD COLUMN "max_stack_size" numeric;
ALTER TABLE "resources" ADD COLUMN "rotatable" boolean DEFAULT true;
ALTER TABLE "vehicles" ADD COLUMN "approval_status" "enum_vehicles_approval_status" DEFAULT 'in_progress' NOT NULL;
ALTER TABLE "vehicles" ADD COLUMN "fuel_fuel_type_id" integer NOT NULL;
ALTER TABLE "vehicles" ADD COLUMN "fuel_fuel_capacity" numeric NOT NULL;
ALTER TABLE "vehicles" ADD COLUMN "fuel_fuel_consumption_rate" numeric DEFAULT 1 NOT NULL;
ALTER TABLE "structures" ADD COLUMN "approval_status" "enum_structures_approval_status" DEFAULT 'in_progress' NOT NULL;
ALTER TABLE "structures" ADD COLUMN "restrict_to_allowed" boolean DEFAULT false;
ALTER TABLE "narrative_events" ADD COLUMN "flow_data" jsonb NOT NULL;
ALTER TABLE "narrative_events" ADD COLUMN "triggers_type" "enum_narrative_events_triggers_type" DEFAULT 'manual';
ALTER TABLE "narrative_events" ADD COLUMN "triggers_condition" jsonb;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "game_vehicles_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "game_npcs_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "game_event_logs_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "user_notifications_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "mission_attendances_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "shipments_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "bank_accounts_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "bank_transactions_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "ledger_entries_id" integer;
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "locker_storages_id" integer;
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;
ALTER TABLE "game_rules" ADD COLUMN "locker_grid_height" numeric DEFAULT 6;
ALTER TABLE "game_structures_void_storage" ADD CONSTRAINT "game_structures_void_storage_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_void_storage" ADD CONSTRAINT "game_structures_void_storage_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."game_structures"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "game_vehicles_stored_resources" ADD CONSTRAINT "game_vehicles_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_vehicles_stored_resources" ADD CONSTRAINT "game_vehicles_stored_resources_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."game_vehicles"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "game_vehicles_void_storage" ADD CONSTRAINT "game_vehicles_void_storage_resource_id_resources_id_fk" FOREIGN KEY ("resource_id") REFERENCES "public"."resources"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_vehicles_void_storage" ADD CONSTRAINT "game_vehicles_void_storage_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."game_vehicles"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "game_vehicles" ADD CONSTRAINT "game_vehicles_type_id_vehicles_id_fk" FOREIGN KEY ("type_id") REFERENCES "public"."vehicles"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_vehicles" ADD CONSTRAINT "game_vehicles_deployed_at_id_game_structures_id_fk" FOREIGN KEY ("deployed_at_id") REFERENCES "public"."game_structures"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_vehicles" ADD CONSTRAINT "game_vehicles_faction_id_factions_id_fk" FOREIGN KEY ("faction_id") REFERENCES "public"."factions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_npcs" ADD CONSTRAINT "game_npcs_location_id_game_structures_id_fk" FOREIGN KEY ("location_id") REFERENCES "public"."game_structures"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_npcs" ADD CONSTRAINT "game_npcs_faction_id_factions_id_fk" FOREIGN KEY ("faction_id") REFERENCES "public"."factions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_npcs_rels" ADD CONSTRAINT "game_npcs_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."game_npcs"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "game_npcs_rels" ADD CONSTRAINT "game_npcs_rels_assets_fk" FOREIGN KEY ("assets_id") REFERENCES "public"."assets"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "game_event_logs" ADD CONSTRAINT "game_event_logs_actor_id_users_id_fk" FOREIGN KEY ("actor_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "game_event_logs" ADD CONSTRAINT "game_event_logs_structure_id_game_structures_id_fk" FOREIGN KEY ("structure_id") REFERENCES "public"."game_structures"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "users_preferences_notifications_muted_types" ADD CONSTRAINT "users_preferences_notifications_muted_types_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "users_preferences_discord_muted_types" ADD CONSTRAINT "users_preferences_discord_muted_types_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "mission_attendances" ADD CONSTRAINT "mission_attendances_mission_id_missions_id_fk" FOREIGN KEY ("mission_id") REFERENCES "public"."missions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "mission_attendances" ADD CONSTRAINT "mission_attendances_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "factions_relationships" ADD CONSTRAINT "factions_relationships_target_faction_id_factions_id_fk" FOREIGN KEY ("target_faction_id") REFERENCES "public"."factions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "factions_relationships" ADD CONSTRAINT "factions_relationships_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."factions"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "assets_skin_configuration_applies_to_asset_types" ADD CONSTRAINT "assets_skin_configuration_applies_to_asset_types_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."assets"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "shipments_cargo" ADD CONSTRAINT "shipments_cargo_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."shipments"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "shipments" ADD CONSTRAINT "shipments_origin_id_game_structures_id_fk" FOREIGN KEY ("origin_id") REFERENCES "public"."game_structures"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "shipments" ADD CONSTRAINT "shipments_destination_id_game_structures_id_fk" FOREIGN KEY ("destination_id") REFERENCES "public"."game_structures"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "shipments" ADD CONSTRAINT "shipments_transport_vehicle_id_game_vehicles_id_fk" FOREIGN KEY ("transport_vehicle_id") REFERENCES "public"."game_vehicles"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "shipments" ADD CONSTRAINT "shipments_created_by_id_users_id_fk" FOREIGN KEY ("created_by_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "shipments_rels" ADD CONSTRAINT "shipments_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."shipments"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "shipments_rels" ADD CONSTRAINT "shipments_rels_resources_fk" FOREIGN KEY ("resources_id") REFERENCES "public"."resources"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "shipments_rels" ADD CONSTRAINT "shipments_rels_assets_fk" FOREIGN KEY ("assets_id") REFERENCES "public"."assets"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "shipments_rels" ADD CONSTRAINT "shipments_rels_vehicles_fk" FOREIGN KEY ("vehicles_id") REFERENCES "public"."vehicles"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "bank_accounts" ADD CONSTRAINT "bank_accounts_owner_faction_id_factions_id_fk" FOREIGN KEY ("owner_faction_id") REFERENCES "public"."factions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "bank_accounts" ADD CONSTRAINT "bank_accounts_owner_user_id_users_id_fk" FOREIGN KEY ("owner_user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "bank_accounts" ADD CONSTRAINT "bank_accounts_currency_id_resources_id_fk" FOREIGN KEY ("currency_id") REFERENCES "public"."resources"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "bank_transactions" ADD CONSTRAINT "bank_transactions_from_account_id_bank_accounts_id_fk" FOREIGN KEY ("from_account_id") REFERENCES "public"."bank_accounts"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "bank_transactions" ADD CONSTRAINT "bank_transactions_to_account_id_bank_accounts_id_fk" FOREIGN KEY ("to_account_id") REFERENCES "public"."bank_accounts"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "bank_transactions" ADD CONSTRAINT "bank_transactions_actor_id_users_id_fk" FOREIGN KEY ("actor_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "bank_transactions" ADD CONSTRAINT "bank_transactions_reference_id_bank_transactions_id_fk" FOREIGN KEY ("reference_id") REFERENCES "public"."bank_transactions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "ledger_entries" ADD CONSTRAINT "ledger_entries_account_id_bank_accounts_id_fk" FOREIGN KEY ("account_id") REFERENCES "public"."bank_accounts"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "ledger_entries" ADD CONSTRAINT "ledger_entries_transaction_id_bank_transactions_id_fk" FOREIGN KEY ("transaction_id") REFERENCES "public"."bank_transactions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "locker_storages_items_equipment_attachments" ADD CONSTRAINT "locker_storages_items_equipment_attachments_asset_id_assets_id_fk" FOREIGN KEY ("asset_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "locker_storages_items_equipment_attachments" ADD CONSTRAINT "locker_storages_items_equipment_attachments_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."locker_storages_items"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "locker_storages_items" ADD CONSTRAINT "locker_storages_items_asset_id_assets_id_fk" FOREIGN KEY ("asset_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "locker_storages_items" ADD CONSTRAINT "locker_storages_items_equipment_skin_id_assets_id_fk" FOREIGN KEY ("equipment_skin_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "locker_storages_items" ADD CONSTRAINT "locker_storages_items_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."locker_storages"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "locker_storages" ADD CONSTRAINT "locker_storages_owner_user_id_users_id_fk" FOREIGN KEY ("owner_user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_owner_user_id_users_id_fk" FOREIGN KEY ("owner_user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_primary_id_assets_id_fk" FOREIGN KEY ("slots_primary_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_secondary_id_assets_id_fk" FOREIGN KEY ("slots_secondary_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_launcher_id_assets_id_fk" FOREIGN KEY ("slots_launcher_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_uniform_id_assets_id_fk" FOREIGN KEY ("slots_uniform_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_vest_id_assets_id_fk" FOREIGN KEY ("slots_vest_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_backpack_id_assets_id_fk" FOREIGN KEY ("slots_backpack_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_helmet_id_assets_id_fk" FOREIGN KEY ("slots_helmet_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_facewear_id_assets_id_fk" FOREIGN KEY ("slots_facewear_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_nvg_id_assets_id_fk" FOREIGN KEY ("slots_nvg_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_radio_id_assets_id_fk" FOREIGN KEY ("slots_radio_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_optic_id_assets_id_fk" FOREIGN KEY ("slots_optic_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_muzzle_id_assets_id_fk" FOREIGN KEY ("slots_muzzle_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "loadouts" ADD CONSTRAINT "loadouts_slots_bipod_id_assets_id_fk" FOREIGN KEY ("slots_bipod_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "market_listings" ADD CONSTRAINT "market_listings_asset_id_assets_id_fk" FOREIGN KEY ("asset_id") REFERENCES "public"."assets"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "market_listings" ADD CONSTRAINT "market_listings_seller_id_users_id_fk" FOREIGN KEY ("seller_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "market_listings" ADD CONSTRAINT "market_listings_npc_id_game_npcs_id_fk" FOREIGN KEY ("npc_id") REFERENCES "public"."game_npcs"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "market_listings" ADD CONSTRAINT "market_listings_currency_id_resources_id_fk" FOREIGN KEY ("currency_id") REFERENCES "public"."resources"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "market_listings" ADD CONSTRAINT "market_listings_buyer_id_users_id_fk" FOREIGN KEY ("buyer_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;
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");
CREATE INDEX "game_structures_void_storage_parent_id_idx" ON "game_structures_void_storage" USING btree ("_parent_id");
CREATE INDEX "game_structures_void_storage_resource_idx" ON "game_structures_void_storage" USING btree ("resource_id");
CREATE INDEX "game_vehicles_stored_resources_order_idx" ON "game_vehicles_stored_resources" USING btree ("_order");
CREATE INDEX "game_vehicles_stored_resources_parent_id_idx" ON "game_vehicles_stored_resources" USING btree ("_parent_id");
CREATE INDEX "game_vehicles_stored_resources_resource_idx" ON "game_vehicles_stored_resources" USING btree ("resource_id");
CREATE INDEX "game_vehicles_void_storage_order_idx" ON "game_vehicles_void_storage" USING btree ("_order");
CREATE INDEX "game_vehicles_void_storage_parent_id_idx" ON "game_vehicles_void_storage" USING btree ("_parent_id");
CREATE INDEX "game_vehicles_void_storage_resource_idx" ON "game_vehicles_void_storage" USING btree ("resource_id");
CREATE INDEX "game_vehicles_type_idx" ON "game_vehicles" USING btree ("type_id");
CREATE INDEX "game_vehicles_deployed_at_idx" ON "game_vehicles" USING btree ("deployed_at_id");
CREATE INDEX "game_vehicles_faction_idx" ON "game_vehicles" USING btree ("faction_id");
CREATE INDEX "game_vehicles_updated_at_idx" ON "game_vehicles" USING btree ("updated_at");
CREATE INDEX "game_vehicles_created_at_idx" ON "game_vehicles" USING btree ("created_at");
CREATE INDEX "game_npcs_location_idx" ON "game_npcs" USING btree ("location_id");
CREATE INDEX "game_npcs_faction_idx" ON "game_npcs" USING btree ("faction_id");
CREATE INDEX "game_npcs_updated_at_idx" ON "game_npcs" USING btree ("updated_at");
CREATE INDEX "game_npcs_created_at_idx" ON "game_npcs" USING btree ("created_at");
CREATE INDEX "game_npcs_rels_order_idx" ON "game_npcs_rels" USING btree ("order");
CREATE INDEX "game_npcs_rels_parent_idx" ON "game_npcs_rels" USING btree ("parent_id");
CREATE INDEX "game_npcs_rels_path_idx" ON "game_npcs_rels" USING btree ("path");
CREATE INDEX "game_npcs_rels_assets_id_idx" ON "game_npcs_rels" USING btree ("assets_id");
CREATE INDEX "game_event_logs_type_idx" ON "game_event_logs" USING btree ("type");
CREATE INDEX "game_event_logs_actor_idx" ON "game_event_logs" USING btree ("actor_id");
CREATE INDEX "game_event_logs_structure_idx" ON "game_event_logs" USING btree ("structure_id");
CREATE INDEX "game_event_logs_updated_at_idx" ON "game_event_logs" USING btree ("updated_at");
CREATE INDEX "game_event_logs_created_at_idx" ON "game_event_logs" USING btree ("created_at");
CREATE INDEX "users_preferences_notifications_muted_types_order_idx" ON "users_preferences_notifications_muted_types" USING btree ("order");
CREATE INDEX "users_preferences_notifications_muted_types_parent_idx" ON "users_preferences_notifications_muted_types" USING btree ("parent_id");
CREATE INDEX "users_preferences_discord_muted_types_order_idx" ON "users_preferences_discord_muted_types" USING btree ("order");
CREATE INDEX "users_preferences_discord_muted_types_parent_idx" ON "users_preferences_discord_muted_types" USING btree ("parent_id");
CREATE INDEX "user_notifications_user_idx" ON "user_notifications" USING btree ("user_id");
CREATE INDEX "user_notifications_read_idx" ON "user_notifications" USING btree ("read");
CREATE INDEX "user_notifications_updated_at_idx" ON "user_notifications" USING btree ("updated_at");
CREATE INDEX "user_notifications_created_at_idx" ON "user_notifications" USING btree ("created_at");
CREATE INDEX "mission_attendances_mission_idx" ON "mission_attendances" USING btree ("mission_id");
CREATE INDEX "mission_attendances_user_idx" ON "mission_attendances" USING btree ("user_id");
CREATE INDEX "mission_attendances_updated_at_idx" ON "mission_attendances" USING btree ("updated_at");
CREATE INDEX "mission_attendances_created_at_idx" ON "mission_attendances" USING btree ("created_at");
CREATE INDEX "factions_relationships_order_idx" ON "factions_relationships" USING btree ("_order");
CREATE INDEX "factions_relationships_parent_id_idx" ON "factions_relationships" USING btree ("_parent_id");
CREATE INDEX "factions_relationships_target_faction_idx" ON "factions_relationships" USING btree ("target_faction_id");
CREATE INDEX "assets_skin_configuration_applies_to_asset_types_order_idx" ON "assets_skin_configuration_applies_to_asset_types" USING btree ("order");
CREATE INDEX "assets_skin_configuration_applies_to_asset_types_parent_idx" ON "assets_skin_configuration_applies_to_asset_types" USING btree ("parent_id");
CREATE INDEX "shipments_cargo_order_idx" ON "shipments_cargo" USING btree ("_order");
CREATE INDEX "shipments_cargo_parent_id_idx" ON "shipments_cargo" USING btree ("_parent_id");
CREATE INDEX "shipments_origin_idx" ON "shipments" USING btree ("origin_id");
CREATE INDEX "shipments_destination_idx" ON "shipments" USING btree ("destination_id");
CREATE INDEX "shipments_transport_vehicle_idx" ON "shipments" USING btree ("transport_vehicle_id");
CREATE INDEX "shipments_created_by_idx" ON "shipments" USING btree ("created_by_id");
CREATE INDEX "shipments_updated_at_idx" ON "shipments" USING btree ("updated_at");
CREATE INDEX "shipments_created_at_idx" ON "shipments" USING btree ("created_at");
CREATE INDEX "shipments_rels_order_idx" ON "shipments_rels" USING btree ("order");
CREATE INDEX "shipments_rels_parent_idx" ON "shipments_rels" USING btree ("parent_id");
CREATE INDEX "shipments_rels_path_idx" ON "shipments_rels" USING btree ("path");
CREATE INDEX "shipments_rels_resources_id_idx" ON "shipments_rels" USING btree ("resources_id");
CREATE INDEX "shipments_rels_assets_id_idx" ON "shipments_rels" USING btree ("assets_id");
CREATE INDEX "shipments_rels_vehicles_id_idx" ON "shipments_rels" USING btree ("vehicles_id");
CREATE INDEX "bank_accounts_owner_faction_idx" ON "bank_accounts" USING btree ("owner_faction_id");
CREATE INDEX "bank_accounts_owner_user_idx" ON "bank_accounts" USING btree ("owner_user_id");
CREATE INDEX "bank_accounts_currency_idx" ON "bank_accounts" USING btree ("currency_id");
CREATE INDEX "bank_accounts_updated_at_idx" ON "bank_accounts" USING btree ("updated_at");
CREATE UNIQUE INDEX "bank_transactions_transaction_number_idx" ON "bank_transactions" USING btree ("transaction_number");
CREATE INDEX "bank_transactions_from_account_idx" ON "bank_transactions" USING btree ("from_account_id");
CREATE INDEX "bank_transactions_to_account_idx" ON "bank_transactions" USING btree ("to_account_id");
CREATE INDEX "bank_transactions_actor_idx" ON "bank_transactions" USING btree ("actor_id");
CREATE INDEX "bank_transactions_reference_idx" ON "bank_transactions" USING btree ("reference_id");
CREATE INDEX "bank_transactions_updated_at_idx" ON "bank_transactions" USING btree ("updated_at");
CREATE INDEX "bank_transactions_created_at_idx" ON "bank_transactions" USING btree ("created_at");
CREATE INDEX "ledger_entries_account_idx" ON "ledger_entries" USING btree ("account_id");
CREATE INDEX "ledger_entries_transaction_idx" ON "ledger_entries" USING btree ("transaction_id");
CREATE INDEX "ledger_entries_updated_at_idx" ON "ledger_entries" USING btree ("updated_at");
CREATE INDEX "ledger_entries_created_at_idx" ON "ledger_entries" USING btree ("created_at");
CREATE INDEX "locker_storages_items_equipment_attachments_order_idx" ON "locker_storages_items_equipment_attachments" USING btree ("_order");
CREATE INDEX "locker_storages_items_equipment_attachments_parent_id_idx" ON "locker_storages_items_equipment_attachments" USING btree ("_parent_id");
CREATE INDEX "locker_storages_items_equipment_attachments_asset_idx" ON "locker_storages_items_equipment_attachments" USING btree ("asset_id");
CREATE INDEX "locker_storages_items_order_idx" ON "locker_storages_items" USING btree ("_order");
CREATE INDEX "locker_storages_items_parent_id_idx" ON "locker_storages_items" USING btree ("_parent_id");
CREATE INDEX "locker_storages_items_asset_idx" ON "locker_storages_items" USING btree ("asset_id");
CREATE INDEX "locker_storages_items_equipment_equipment_skin_idx" ON "locker_storages_items" USING btree ("equipment_skin_id");
CREATE INDEX "locker_storages_owner_user_idx" ON "locker_storages" USING btree ("owner_user_id");
CREATE INDEX "locker_storages_updated_at_idx" ON "locker_storages" USING btree ("updated_at");
CREATE INDEX "locker_storages_created_at_idx" ON "locker_storages" USING btree ("created_at");
CREATE INDEX "loadouts_owner_user_idx" ON "loadouts" USING btree ("owner_user_id");
CREATE INDEX "loadouts_slots_slots_primary_idx" ON "loadouts" USING btree ("slots_primary_id");
CREATE INDEX "loadouts_slots_slots_secondary_idx" ON "loadouts" USING btree ("slots_secondary_id");
CREATE INDEX "loadouts_slots_slots_launcher_idx" ON "loadouts" USING btree ("slots_launcher_id");
CREATE INDEX "loadouts_slots_slots_uniform_idx" ON "loadouts" USING btree ("slots_uniform_id");
CREATE INDEX "loadouts_slots_slots_vest_idx" ON "loadouts" USING btree ("slots_vest_id");
CREATE INDEX "loadouts_slots_slots_backpack_idx" ON "loadouts" USING btree ("slots_backpack_id");
CREATE INDEX "loadouts_slots_slots_helmet_idx" ON "loadouts" USING btree ("slots_helmet_id");
CREATE INDEX "loadouts_slots_slots_facewear_idx" ON "loadouts" USING btree ("slots_facewear_id");
CREATE INDEX "loadouts_slots_slots_nvg_idx" ON "loadouts" USING btree ("slots_nvg_id");
CREATE INDEX "loadouts_slots_slots_radio_idx" ON "loadouts" USING btree ("slots_radio_id");
CREATE INDEX "loadouts_slots_slots_optic_idx" ON "loadouts" USING btree ("slots_optic_id");
CREATE INDEX "loadouts_slots_slots_muzzle_idx" ON "loadouts" USING btree ("slots_muzzle_id");
CREATE INDEX "loadouts_slots_slots_bipod_idx" ON "loadouts" USING btree ("slots_bipod_id");
CREATE INDEX "loadouts_updated_at_idx" ON "loadouts" USING btree ("updated_at");
CREATE INDEX "loadouts_created_at_idx" ON "loadouts" USING btree ("created_at");
CREATE INDEX "market_listings_asset_idx" ON "market_listings" USING btree ("asset_id");
CREATE INDEX "market_listings_seller_idx" ON "market_listings" USING btree ("seller_id");
CREATE INDEX "market_listings_npc_idx" ON "market_listings" USING btree ("npc_id");
CREATE INDEX "market_listings_currency_idx" ON "market_listings" USING btree ("currency_id");
CREATE INDEX "market_listings_status_idx" ON "market_listings" USING btree ("status");
CREATE INDEX "market_listings_buyer_idx" ON "market_listings" USING btree ("buyer_id");
CREATE INDEX "market_listings_updated_at_idx" ON "market_listings" USING btree ("updated_at");
CREATE INDEX "market_listings_created_at_idx" ON "market_listings" USING btree ("created_at");
CREATE INDEX "market_negotiations_history_order_idx" ON "market_negotiations_history" USING btree ("_order");
CREATE INDEX "market_negotiations_history_parent_id_idx" ON "market_negotiations_history" USING btree ("_parent_id");
CREATE INDEX "market_negotiations_listing_idx" ON "market_negotiations" USING btree ("listing_id");
CREATE INDEX "market_negotiations_buyer_idx" ON "market_negotiations" USING btree ("buyer_id");
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");
CREATE INDEX "game_rules_rels_assignments_id_idx" ON "game_rules_rels" USING btree ("assignments_id");
ALTER TABLE "game_structures" ADD CONSTRAINT "game_structures_faction_id_factions_id_fk" FOREIGN KEY ("faction_id") REFERENCES "public"."factions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "profiles_rels" ADD CONSTRAINT "profiles_rels_qualifications_fk" FOREIGN KEY ("qualifications_id") REFERENCES "public"."qualifications"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "missions_factions_involved" ADD CONSTRAINT "missions_factions_involved_faction_id_factions_id_fk" FOREIGN KEY ("faction_id") REFERENCES "public"."factions"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "missions" ADD CONSTRAINT "missions_cover_image_id_media_id_fk" FOREIGN KEY ("cover_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "campaigns" ADD CONSTRAINT "campaigns_cover_image_id_media_id_fk" FOREIGN KEY ("cover_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "factions" ADD CONSTRAINT "factions_cover_image_id_media_id_fk" FOREIGN KEY ("cover_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "vehicles" ADD CONSTRAINT "vehicles_fuel_fuel_type_id_resources_id_fk" FOREIGN KEY ("fuel_fuel_type_id") REFERENCES "public"."resources"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_game_vehicles_fk" FOREIGN KEY ("game_vehicles_id") REFERENCES "public"."game_vehicles"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_game_npcs_fk" FOREIGN KEY ("game_npcs_id") REFERENCES "public"."game_npcs"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_game_event_logs_fk" FOREIGN KEY ("game_event_logs_id") REFERENCES "public"."game_event_logs"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_user_notifications_fk" FOREIGN KEY ("user_notifications_id") REFERENCES "public"."user_notifications"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_mission_attendances_fk" FOREIGN KEY ("mission_attendances_id") REFERENCES "public"."mission_attendances"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_shipments_fk" FOREIGN KEY ("shipments_id") REFERENCES "public"."shipments"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_bank_accounts_fk" FOREIGN KEY ("bank_accounts_id") REFERENCES "public"."bank_accounts"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_bank_transactions_fk" FOREIGN KEY ("bank_transactions_id") REFERENCES "public"."bank_transactions"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_ledger_entries_fk" FOREIGN KEY ("ledger_entries_id") REFERENCES "public"."ledger_entries"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_locker_storages_fk" FOREIGN KEY ("locker_storages_id") REFERENCES "public"."locker_storages"("id") ON DELETE cascade ON UPDATE no action;
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");
CREATE INDEX "missions_factions_involved_faction_idx" ON "missions_factions_involved" USING btree ("faction_id");
CREATE INDEX "missions_cover_image_idx" ON "missions" USING btree ("cover_image_id");
CREATE INDEX "campaigns_cover_image_idx" ON "campaigns" USING btree ("cover_image_id");
CREATE INDEX "factions_cover_image_idx" ON "factions" USING btree ("cover_image_id");
CREATE INDEX "vehicles_fuel_fuel_fuel_type_idx" ON "vehicles" USING btree ("fuel_fuel_type_id");
CREATE INDEX "payload_locked_documents_rels_game_vehicles_id_idx" ON "payload_locked_documents_rels" USING btree ("game_vehicles_id");
CREATE INDEX "payload_locked_documents_rels_game_npcs_id_idx" ON "payload_locked_documents_rels" USING btree ("game_npcs_id");
CREATE INDEX "payload_locked_documents_rels_game_event_logs_id_idx" ON "payload_locked_documents_rels" USING btree ("game_event_logs_id");
CREATE INDEX "payload_locked_documents_rels_user_notifications_id_idx" ON "payload_locked_documents_rels" USING btree ("user_notifications_id");
CREATE INDEX "payload_locked_documents_rels_mission_attendances_id_idx" ON "payload_locked_documents_rels" USING btree ("mission_attendances_id");
CREATE INDEX "payload_locked_documents_rels_shipments_id_idx" ON "payload_locked_documents_rels" USING btree ("shipments_id");
CREATE INDEX "payload_locked_documents_rels_bank_accounts_id_idx" ON "payload_locked_documents_rels" USING btree ("bank_accounts_id");
CREATE INDEX "payload_locked_documents_rels_bank_transactions_id_idx" ON "payload_locked_documents_rels" USING btree ("bank_transactions_id");
CREATE INDEX "payload_locked_documents_rels_ledger_entries_id_idx" ON "payload_locked_documents_rels" USING btree ("ledger_entries_id");
CREATE INDEX "payload_locked_documents_rels_locker_storages_id_idx" ON "payload_locked_documents_rels" USING btree ("locker_storages_id");
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";`)
}
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
await db.execute(sql`
ALTER TABLE "game_structures_void_storage" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_vehicles_stored_resources" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_vehicles_void_storage" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_vehicles" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_npcs" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_npcs_rels" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "game_event_logs" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "users_preferences_notifications_muted_types" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "users_preferences_discord_muted_types" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "user_notifications" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "mission_attendances" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "factions_relationships" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "assets_skin_configuration_applies_to_asset_types" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "shipments_cargo" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "shipments" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "shipments_rels" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "bank_accounts" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "bank_transactions" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "ledger_entries" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "locker_storages_items_equipment_attachments" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "locker_storages_items" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "locker_storages" DISABLE ROW LEVEL SECURITY;
ALTER TABLE "loadouts" DISABLE ROW LEVEL SECURITY;
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;
DROP TABLE "game_vehicles_void_storage" CASCADE;
DROP TABLE "game_vehicles" CASCADE;
DROP TABLE "game_npcs" CASCADE;
DROP TABLE "game_npcs_rels" CASCADE;
DROP TABLE "game_event_logs" CASCADE;
DROP TABLE "users_preferences_notifications_muted_types" CASCADE;
DROP TABLE "users_preferences_discord_muted_types" CASCADE;
DROP TABLE "user_notifications" CASCADE;
DROP TABLE "mission_attendances" CASCADE;
DROP TABLE "factions_relationships" CASCADE;
DROP TABLE "assets_skin_configuration_applies_to_asset_types" CASCADE;
DROP TABLE "shipments_cargo" CASCADE;
DROP TABLE "shipments" CASCADE;
DROP TABLE "shipments_rels" CASCADE;
DROP TABLE "bank_accounts" CASCADE;
DROP TABLE "bank_transactions" CASCADE;
DROP TABLE "ledger_entries" CASCADE;
DROP TABLE "locker_storages_items_equipment_attachments" CASCADE;
DROP TABLE "locker_storages_items" CASCADE;
DROP TABLE "locker_storages" CASCADE;
DROP TABLE "loadouts" CASCADE;
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');
ALTER TABLE "users_roles" ALTER COLUMN "value" SET DATA TYPE "public"."enum_users_roles" USING "value"::"public"."enum_users_roles";
ALTER TABLE "factions" ALTER COLUMN "type" SET DATA TYPE text;
ALTER TABLE "factions" ALTER COLUMN "type" SET DEFAULT 'minorFaction'::text;
DROP TYPE "public"."enum_factions_type";
CREATE TYPE "public"."enum_factions_type" AS ENUM('majorFaction', 'minorFaction', 'corporation', 'special');
ALTER TABLE "factions" ALTER COLUMN "type" SET DEFAULT 'minorFaction'::"public"."enum_factions_type";
ALTER TABLE "factions" ALTER COLUMN "type" SET DATA TYPE "public"."enum_factions_type" USING "type"::"public"."enum_factions_type";
ALTER TABLE "assets" ALTER COLUMN "asset_type" SET DATA TYPE text;
ALTER TABLE "assets" ALTER COLUMN "asset_type" SET DEFAULT 'weapon'::text;
DROP TYPE "public"."enum_assets_asset_type";
CREATE TYPE "public"."enum_assets_asset_type" AS ENUM('weapon', 'magazine', 'optic', 'muzzle', 'bipod', 'uniform', 'vest', 'backpack', 'helmet', 'facewear', 'nvg', 'radio', 'medical', 'tool', 'explosive', 'miscellaneous');
ALTER TABLE "assets" ALTER COLUMN "asset_type" SET DEFAULT 'weapon'::"public"."enum_assets_asset_type";
ALTER TABLE "assets" ALTER COLUMN "asset_type" SET DATA TYPE "public"."enum_assets_asset_type" USING "asset_type"::"public"."enum_assets_asset_type";
DROP INDEX "game_structures_faction_idx";
DROP INDEX "users_discord_id_idx";
DROP INDEX "profiles_rels_qualifications_id_idx";
DROP INDEX "missions_factions_involved_faction_idx";
DROP INDEX "missions_cover_image_idx";
DROP INDEX "campaigns_cover_image_idx";
DROP INDEX "factions_cover_image_idx";
DROP INDEX "vehicles_fuel_fuel_fuel_type_idx";
DROP INDEX "payload_locked_documents_rels_game_vehicles_id_idx";
DROP INDEX "payload_locked_documents_rels_game_npcs_id_idx";
DROP INDEX "payload_locked_documents_rels_game_event_logs_id_idx";
DROP INDEX "payload_locked_documents_rels_user_notifications_id_idx";
DROP INDEX "payload_locked_documents_rels_mission_attendances_id_idx";
DROP INDEX "payload_locked_documents_rels_shipments_id_idx";
DROP INDEX "payload_locked_documents_rels_bank_accounts_id_idx";
DROP INDEX "payload_locked_documents_rels_bank_transactions_id_idx";
DROP INDEX "payload_locked_documents_rels_ledger_entries_id_idx";
DROP INDEX "payload_locked_documents_rels_locker_storages_id_idx";
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;
ALTER TABLE "game_structures_stored_resources" DROP COLUMN "grid_x";
ALTER TABLE "game_structures_stored_resources" DROP COLUMN "grid_y";
ALTER TABLE "game_structures_stored_resources" DROP COLUMN "rotated";
ALTER TABLE "game_structures" DROP COLUMN "faction_id";
ALTER TABLE "users" DROP COLUMN "discord_id";
ALTER TABLE "users" DROP COLUMN "preferences_notifications_muted_all";
ALTER TABLE "users" DROP COLUMN "preferences_display_show_callsign";
ALTER TABLE "users" DROP COLUMN "preferences_discord_enabled";
ALTER TABLE "profiles" DROP COLUMN "progression_minigames_flappy_bird_games_played";
ALTER TABLE "profiles" DROP COLUMN "progression_minigames_flappy_bird_total_passes";
ALTER TABLE "profiles" DROP COLUMN "progression_minigames_flappy_bird_best_score";
ALTER TABLE "profiles" DROP COLUMN "progression_minigames_flappy_bird_xp_earned";
ALTER TABLE "profiles_rels" DROP COLUMN "qualifications_id";
ALTER TABLE "awards" DROP COLUMN "ribbon_design";
ALTER TABLE "awards" DROP COLUMN "medal_design";
ALTER TABLE "missions_factions_involved" DROP COLUMN "faction_id";
ALTER TABLE "missions" DROP COLUMN "discord_message_id";
ALTER TABLE "missions" DROP COLUMN "discord_attendance_hash";
ALTER TABLE "missions" DROP COLUMN "cover_image_id";
ALTER TABLE "campaigns" DROP COLUMN "cover_image_id";
ALTER TABLE "factions" DROP COLUMN "reputation";
ALTER TABLE "factions" DROP COLUMN "cover_image_id";
ALTER TABLE "technologies" DROP COLUMN "approval_status";
ALTER TABLE "assets" DROP COLUMN "approval_status";
ALTER TABLE "assets" DROP COLUMN "storage_dimensions_grid_width";
ALTER TABLE "assets" DROP COLUMN "storage_dimensions_grid_height";
ALTER TABLE "assets" DROP COLUMN "storage_dimensions_stackable";
ALTER TABLE "assets" DROP COLUMN "storage_dimensions_max_stack_size";
ALTER TABLE "assets" DROP COLUMN "storage_dimensions_rotatable";
ALTER TABLE "resources" DROP COLUMN "approval_status";
ALTER TABLE "resources" DROP COLUMN "grid_width";
ALTER TABLE "resources" DROP COLUMN "grid_height";
ALTER TABLE "resources" DROP COLUMN "stackable";
ALTER TABLE "resources" DROP COLUMN "max_stack_size";
ALTER TABLE "resources" DROP COLUMN "rotatable";
ALTER TABLE "vehicles" DROP COLUMN "approval_status";
ALTER TABLE "vehicles" DROP COLUMN "fuel_fuel_type_id";
ALTER TABLE "vehicles" DROP COLUMN "fuel_fuel_capacity";
ALTER TABLE "vehicles" DROP COLUMN "fuel_fuel_consumption_rate";
ALTER TABLE "structures" DROP COLUMN "approval_status";
ALTER TABLE "structures" DROP COLUMN "restrict_to_allowed";
ALTER TABLE "narrative_events" DROP COLUMN "flow_data";
ALTER TABLE "narrative_events" DROP COLUMN "triggers_type";
ALTER TABLE "narrative_events" DROP COLUMN "triggers_condition";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "game_vehicles_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "game_npcs_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "game_event_logs_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "user_notifications_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "mission_attendances_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "shipments_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "bank_accounts_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "bank_transactions_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "ledger_entries_id";
ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "locker_storages_id";
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";
ALTER TABLE "game_rules" DROP COLUMN "locker_grid_height";
DROP TYPE "public"."enum_game_vehicles_status";
DROP TYPE "public"."enum_game_event_logs_target_collection";
DROP TYPE "public"."enum_users_preferences_notifications_muted_types";
DROP TYPE "public"."enum_users_preferences_discord_muted_types";
DROP TYPE "public"."enum_mission_attendances_response";
DROP TYPE "public"."enum_technologies_approval_status";
DROP TYPE "public"."enum_assets_skin_configuration_applies_to_asset_types";
DROP TYPE "public"."enum_assets_approval_status";
DROP TYPE "public"."enum_resources_approval_status";
DROP TYPE "public"."enum_vehicles_approval_status";
DROP TYPE "public"."enum_structures_approval_status";
DROP TYPE "public"."enum_shipments_status";
DROP TYPE "public"."enum_bank_accounts_account_type";
DROP TYPE "public"."enum_bank_accounts_status";
DROP TYPE "public"."enum_bank_transactions_type";
DROP TYPE "public"."enum_bank_transactions_status";
DROP TYPE "public"."enum_ledger_entries_type";
DROP TYPE "public"."enum_market_listings_status";
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";`)
}

View file

@ -4,6 +4,7 @@ import * as migration_20251219_061127 from './20251219_061127';
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';
export const migrations = [
{
@ -34,6 +35,11 @@ export const migrations = [
{
up: migration_20260109_065519.up,
down: migration_20260109_065519.down,
name: '20260109_065519'
name: '20260109_065519',
},
{
up: migration_20260816_213455.up,
down: migration_20260816_213455.down,
name: '20260816_213455'
},
];