/* tslint:disable */ /* eslint-disable */ /** * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:db-schema` to regenerate this file. */ import type {} from "@payloadcms/db-postgres"; import { pgTable, index, uniqueIndex, foreignKey, serial, varchar, timestamp, numeric, jsonb, integer, boolean, type AnyPgColumn, pgEnum, } from "@payloadcms/db-postgres/drizzle/pg-core"; import { sql, relations } from "@payloadcms/db-postgres/drizzle"; import { geometryColumn } from "@payloadcms/db-postgres"; export const enum_game_vehicles_status = pgEnum("enum_game_vehicles_status", [ "idle", "assigned", "in_transit", "damaged", "destroyed", ]); export const enum_game_event_logs_target_collection = pgEnum( "enum_game_event_logs_target_collection", [ "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", "evaluations", "tickets", "game-servers", "assignment-transfers", ], ); export const enum_users_roles = pgEnum("enum_users_roles", [ "guest", "user", "trusted", "admin", "developer", ]); export const enum_users_preferences_notifications_muted_types = pgEnum( "enum_users_preferences_notifications_muted_types", [ "market:offer", "market:counter", "market:accept", "market:reject", "market:withdrawn", "market:closed", "market:sold", "market:expired", "award:granted", "account:discord-request", "finance:deposit", "finance:withdraw", "finance:transfer", "shipment:completed", "ticket:created", "ticket:assigned", "ticket:reply", "ticket:status", ], ); export const enum_users_preferences_discord_muted_types = pgEnum( "enum_users_preferences_discord_muted_types", [ "market:offer", "market:counter", "market:accept", "market:reject", "market:withdrawn", "market:closed", "market:sold", "market:expired", "award:granted", "account:discord-request", "finance:deposit", "finance:withdraw", "finance:transfer", "shipment:completed", "ticket:created", "ticket:assigned", "ticket:reply", "ticket:status", ], ); export const enum_users_preferences_display_lead_or_actual = pgEnum( "enum_users_preferences_display_lead_or_actual", ["lead", "actual"], ); export const enum_roles_permissions = pgEnum("enum_roles_permissions", [ "system:admin-access", "media:create", "media:read", "media:update", "media:delete", "admin:media:manage", "users:create", "users:read", "users:update", "users:delete", "users:unlock", "users:assign-roles", "admin:users:manage", "roles:create", "roles:read", "roles:update", "roles:delete", "admin:roles:manage", "ranks:create", "ranks:read", "ranks:update", "ranks:delete", "admin:ranks:manage", "profiles:create", "profiles:read", "profiles:update", "profiles:delete", "admin:profiles:manage", "awards:create", "awards:read", "awards:update", "awards:delete", "admin:awards:manage", "qualifications:create", "qualifications:read", "qualifications:update", "qualifications:delete", "admin:qualifications:manage", "assignments:create", "assignments:read", "assignments:update", "assignments:delete", "admin:assignments:manage", "assignment-transfers:create", "assignment-transfers:read", "assignment-transfers:update", "assignment-transfers:delete", "admin:assignment-transfers:manage", "experience:create", "experience:read", "experience:update", "experience:delete", "admin:experience:manage", "user-notifications:create", "user-notifications:read", "user-notifications:update", "user-notifications:delete", "admin:user-notifications:manage", "evaluations:create", "evaluations:read", "evaluations:update", "evaluations:delete", "admin:evaluations:manage", "missions:create", "missions:read", "missions:update", "missions:delete", "missions:read-sensitive", "admin:missions:manage", "mission-attendances:create", "mission-attendances:read", "mission-attendances:update", "mission-attendances:delete", "admin:mission-attendances:manage", "campaigns:create", "campaigns:read", "campaigns:update", "campaigns:delete", "admin:campaigns:manage", "campaigns:manage", "factions:create", "factions:read", "factions:update", "factions:delete", "admin:factions:manage", "technologies:create", "technologies:read", "technologies:update", "technologies:delete", "admin:technologies:manage", "assets:create", "assets:read", "assets:update", "assets:delete", "admin:assets:manage", "resources:create", "resources:read", "resources:update", "resources:delete", "admin:resources:manage", "vehicles:create", "vehicles:read", "vehicles:update", "vehicles:delete", "admin:vehicles:manage", "structures:create", "structures:read", "structures:update", "structures:delete", "admin:structures:manage", "shipments:create", "shipments:read", "shipments:update", "shipments:delete", "admin:shipments:manage", "bank-accounts:create", "bank-accounts:read", "bank-accounts:update", "bank-accounts:delete", "admin:bank-accounts:manage", "bank-transactions:create", "bank-transactions:read", "bank-transactions:update", "bank-transactions:delete", "admin:bank-transactions:manage", "ledger-entries:create", "ledger-entries:read", "ledger-entries:update", "ledger-entries:delete", "admin:ledger-entries:manage", "locker-storages:create", "locker-storages:read", "locker-storages:update", "locker-storages:delete", "admin:locker-storages:manage", "loadouts:create", "loadouts:read", "loadouts:update", "loadouts:delete", "admin:loadouts:manage", "market-listings:create", "market-listings:read", "market-listings:update", "market-listings:delete", "admin:market-listings:manage", "market-negotiations:create", "market-negotiations:read", "market-negotiations:update", "market-negotiations:delete", "admin:market-negotiations:manage", "projects:create", "projects:read", "projects:update", "projects:delete", "admin:projects:manage", "labels:create", "labels:read", "labels:update", "labels:delete", "admin:labels:manage", "sprints:create", "sprints:read", "sprints:update", "sprints:delete", "admin:sprints:manage", "releases:create", "releases:read", "releases:update", "releases:delete", "admin:releases:manage", "tickets:create", "tickets:read", "tickets:update", "tickets:delete", "admin:tickets:manage", "ticket-votes:create", "ticket-votes:read", "ticket-votes:update", "ticket-votes:delete", "admin:ticket-votes:manage", "game-structures:create", "game-structures:read", "game-structures:update", "game-structures:delete", "admin:game-structures:manage", "game-vehicles:create", "game-vehicles:read", "game-vehicles:update", "game-vehicles:delete", "admin:game-vehicles:manage", "game-npcs:create", "game-npcs:read", "game-npcs:update", "game-npcs:delete", "admin:game-npcs:manage", "game-hard-resources:create", "game-hard-resources:read", "game-hard-resources:update", "game-hard-resources:delete", "admin:game-hard-resources:manage", "game-event-logs:create", "game-event-logs:read", "game-event-logs:update", "game-event-logs:delete", "admin:game-event-logs:manage", "maps:create", "maps:read", "maps:update", "maps:delete", "admin:maps:manage", "narrative-events:create", "narrative-events:read", "narrative-events:update", "narrative-events:delete", "admin:narrative-events:manage", "mission-files:create", "mission-files:read", "mission-files:update", "mission-files:delete", "admin:mission-files:manage", "mod-lists:create", "mod-lists:read", "mod-lists:update", "mod-lists:delete", "admin:mod-lists:manage", "game-servers:create", "game-servers:read", "game-servers:update", "game-servers:delete", "admin:game-servers:manage", "arma-sync-events:create", "arma-sync-events:read", "arma-sync-events:update", "arma-sync-events:delete", "admin:arma-sync-events:manage", "arma-commands:create", "arma-commands:read", "arma-commands:update", "arma-commands:delete", "admin:arma-commands:manage", "game-rules:read", "game-rules:update", "shims:read", "shims:update", "logistics:manage", "intelligence:manage", "profiles:intel_excerpt:update", "banking:manage", "tickets:staff", "discord:staff", "discord:announce", ]); export const enum_awards_grant_config_allowed_grantor_assignment_types = pgEnum( "enum_awards_grant_config_allowed_grantor_assignment_types", ["division", "squad", "team", "special"], ); export const enum_awards_type = pgEnum("enum_awards_type", ["commendation", "ribbon", "medal"]); export const enum_awards_grant_config_recipient_scope = pgEnum( "enum_awards_grant_config_recipient_scope", ["same_command", "whitelist", "anyone"], ); export const enum_assignments_type = pgEnum("enum_assignments_type", [ "division", "squad", "team", "special", ]); export const enum_assignment_transfers_status = pgEnum("enum_assignment_transfers_status", [ "pending", "rejected", "awaiting_superuser", "completed", "cancelled", "denied", ]); export const enum_assignment_transfers_escalation_reason = pgEnum( "enum_assignment_transfers_escalation_reason", ["no_leaders", "appeal", "leader_changed"], ); export const enum_assignment_transfers_from_leader_decision = pgEnum( "enum_assignment_transfers_from_leader_decision", ["pending", "approved", "rejected", "not_required"], ); export const enum_assignment_transfers_to_leader_decision = pgEnum( "enum_assignment_transfers_to_leader_decision", ["pending", "approved", "rejected", "not_required"], ); export const enum_evaluations_kind = pgEnum("enum_evaluations_kind", [ "leader-direct", "leader-indirect", "subordinate", ]); export const enum_evaluations_level = pgEnum("enum_evaluations_level", [ "exceptional", "excellent", "proficient", "adequate", "moderate", "under-review", ]); export const enum_missions_factions_involved_threat_level = pgEnum( "enum_missions_factions_involved_threat_level", ["ally", "friendly", "neutral", "hostile"], ); export const enum_missions_logistics_and_support_insertion = pgEnum( "enum_missions_logistics_and_support_insertion", ["helicopter", "aircraft", "paradrop", "boat", "car", "onFoot"], ); export const enum_missions_logistics_and_support_extraction = pgEnum( "enum_missions_logistics_and_support_extraction", ["helicopter", "aircraft", "paradrop", "boat", "car", "onFoot"], ); export const enum_missions_operation_type = pgEnum("enum_missions_operation_type", [ "main", "side", "external", ]); export const enum_missions_classification_mission_type = pgEnum( "enum_missions_classification_mission_type", ["Zeus", "PvE", "PvP", "PvPvE", "Training", "Special"], ); export const enum_missions_ownership_and_status_status = pgEnum( "enum_missions_ownership_and_status_status", ["Concept", "Planning", "Ready", "Scheduled", "Active", "Completed", "Cancelled"], ); export const enum_missions_ownership_and_status_visibility = pgEnum( "enum_missions_ownership_and_status_visibility", ["unit", "leadership", "intel", "private"], ); export const enum_missions_civilian_presence = pgEnum("enum_missions_civilian_presence", [ "None", "Low", "Medium", "High", ]); export const enum_mission_attendances_response = pgEnum("enum_mission_attendances_response", [ "yes", "no", "tentative", ]); export const enum_campaigns_status = pgEnum("enum_campaigns_status", [ "concept", "inProgress", "completed", ]); export const enum_campaigns_campaign_mode = pgEnum("enum_campaigns_campaign_mode", [ "official", "custom", ]); export const enum_factions_type = pgEnum("enum_factions_type", [ "playerFaction", "majorFaction", "minorFaction", "corporation", "special", ]); export const enum_technologies_approval_status = pgEnum("enum_technologies_approval_status", [ "in_progress", "ready_for_review", "approved", "rejected", "revision_requested", ]); export const enum_technologies_type = pgEnum("enum_technologies_type", ["asset", "upgrade"]); export const enum_assets_skin_configuration_applies_to_asset_types = pgEnum( "enum_assets_skin_configuration_applies_to_asset_types", ["weapon", "uniform", "vest", "backpack", "helmet"], ); export const enum_assets_approval_status = pgEnum("enum_assets_approval_status", [ "in_progress", "ready_for_review", "approved", "rejected", "revision_requested", ]); export const enum_assets_asset_type = pgEnum("enum_assets_asset_type", [ "weapon", "magazine", "optic", "muzzle", "bipod", "uniform", "vest", "backpack", "helmet", "facewear", "nvg", "radio", "medical", "tool", "explosive", "skin", "miscellaneous", ]); export const enum_assets_weapon_configuration_slot_type = pgEnum( "enum_assets_weapon_configuration_slot_type", ["primary", "secondary", "launcher"], ); export const enum_assets_nightvision_configuration_nvg_generation = pgEnum( "enum_assets_nightvision_configuration_nvg_generation", ["gen1", "gen2", "gen3"], ); export const enum_assets_market_trading_rarity = pgEnum("enum_assets_market_trading_rarity", [ "basic", "common", "uncommon", "rare", "veryRare", "epic", "legendary", "unique", ]); export const enum_resources_approval_status = pgEnum("enum_resources_approval_status", [ "in_progress", "ready_for_review", "approved", "rejected", "revision_requested", ]); export const enum_resources_type = pgEnum("enum_resources_type", [ "physical", "fluid", "energy", "abstract", ]); export const enum_resources_rarity = pgEnum("enum_resources_rarity", [ "common", "uncommon", "rare", "epic", "legendary", "exotic", "unique", ]); export const enum_vehicles_category = pgEnum("enum_vehicles_category", [ "civilian", "utility", "transport", "weaponized", "military", ]); export const enum_vehicles_pylons_pylon_type = pgEnum("enum_vehicles_pylons_pylon_type", [ "mountedWeapon", "pylon", ]); export const enum_vehicles_approval_status = pgEnum("enum_vehicles_approval_status", [ "in_progress", "ready_for_review", "approved", "rejected", "revision_requested", ]); export const enum_vehicles_armor_rating = pgEnum("enum_vehicles_armor_rating", [ "none", "light", "medium", "heavy", "composite", ]); export const enum_structures_approval_status = pgEnum("enum_structures_approval_status", [ "in_progress", "ready_for_review", "approved", "rejected", "revision_requested", ]); export const enum_structures_category = pgEnum("enum_structures_category", [ "logistics", "military", "civilian", ]); export const enum_structures_terrain_type = pgEnum("enum_structures_terrain_type", [ "land", "water", ]); export const enum_structures_function_type = pgEnum("enum_structures_function_type", [ "producer", "storage", "sensor", "converter", "defense", "miscellaneous", ]); export const enum_shipments_status = pgEnum("enum_shipments_status", [ "pending", "dispatched", "in_transit", "arrived", "completed", "cancelled", "failed", "stranded", ]); export const enum_bank_accounts_account_type = pgEnum("enum_bank_accounts_account_type", [ "treasury", "faction", "personal", ]); export const enum_bank_accounts_status = pgEnum("enum_bank_accounts_status", [ "open", "frozen", "closed", ]); export const enum_bank_transactions_type = pgEnum("enum_bank_transactions_type", [ "deposit", "withdrawal", "transfer", "payment", "fee", "salary", "adjustment", ]); export const enum_bank_transactions_status = pgEnum("enum_bank_transactions_status", [ "completed", "reversed", ]); export const enum_ledger_entries_type = pgEnum("enum_ledger_entries_type", [ "deposit", "withdrawal", "transfer", "payment", "fee", "salary", "adjustment", ]); export const enum_market_listings_status = pgEnum("enum_market_listings_status", [ "active", "sold", "cancelled", "expired", ]); export const enum_market_negotiations_history_from = pgEnum( "enum_market_negotiations_history_from", ["buyer", "seller"], ); export const enum_market_negotiations_status = pgEnum("enum_market_negotiations_status", [ "open", "accepted", "rejected", "closed", "cancelled", "expired", ]); export const enum_market_negotiations_proposed_by = pgEnum("enum_market_negotiations_proposed_by", [ "buyer", "seller", ]); export const enum_tickets_activity_type = pgEnum("enum_tickets_activity_type", [ "system", "agent_message", "client_message", ]); export const enum_tickets_category = pgEnum("enum_tickets_category", [ "bug_report", "feature_request", "support_request", "other", ]); export const enum_tickets_priority = pgEnum("enum_tickets_priority", [ "low", "medium", "high", "critical", ]); export const enum_tickets_status = pgEnum("enum_tickets_status", [ "open", "in_review", "planning", "in_progress", "waiting_on_reporter", "in_testing", "resolved", "canceled", "closed", ]); export const enum_tickets_type = pgEnum("enum_tickets_type", [ "task", "bug", "story", "epic", "improvement", ]); export const enum_tickets_resolution = pgEnum("enum_tickets_resolution", [ "fixed", "wontfix", "duplicate", "invalid", ]); export const enum_projects_status = pgEnum("enum_projects_status", ["active", "archived"]); export const enum_sprints_status = pgEnum("enum_sprints_status", [ "planning", "active", "completed", ]); export const enum_releases_status = pgEnum("enum_releases_status", [ "draft", "in_progress", "released", ]); export const enum_narrative_events_triggers_type = pgEnum("enum_narrative_events_triggers_type", [ "manual", "mission_complete", "timer", "condition", ]); export const enum_game_servers_status = pgEnum("enum_game_servers_status", ["online", "offline"]); export const enum_arma_commands_status = pgEnum("enum_arma_commands_status", [ "queued", "delivered", "succeeded", "failed", ]); export const enum_plugin_ai_instructions_field_type = pgEnum( "enum_plugin_ai_instructions_field_type", ["text", "textarea", "upload", "richText"], ); export const enum_plugin_ai_instructions_model_id = pgEnum("enum_plugin_ai_instructions_model_id", [ "unsloth-text", ]); export const enum_shims_shims_targeting_roles = pgEnum("enum_shims_shims_targeting_roles", [ "guest", "user", "trusted", "admin", "developer", ]); export const enum_shims_shims_type = pgEnum("enum_shims_shims_type", ["css", "js"]); export const enum_shims_shims_targeting_audience = pgEnum("enum_shims_shims_targeting_audience", [ "all", "percentage", "users", "roles", ]); export const enum_shims_shims_paths_match_type = pgEnum("enum_shims_shims_paths_match_type", [ "all", "include", "exclude", ]); export const media = pgTable( "media", { id: serial("id").primaryKey(), alt: varchar("alt"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), url: varchar("url"), thumbnailURL: varchar("thumbnail_u_r_l"), filename: varchar("filename"), mimeType: varchar("mime_type"), filesize: numeric("filesize", { mode: "number" }), width: numeric("width", { mode: "number" }), height: numeric("height", { mode: "number" }), focalX: numeric("focal_x", { mode: "number" }), focalY: numeric("focal_y", { mode: "number" }), }, (columns) => [ index("media_updated_at_idx").on(columns.updatedAt), index("media_created_at_idx").on(columns.createdAt), uniqueIndex("media_filename_idx").on(columns.filename), ], ); export const game_hard_resources = pgTable( "game_hard_resources", { id: serial("id").primaryKey(), name: varchar("name").notNull(), amount: numeric("amount", { mode: "number" }).notNull().default(0), description: jsonb("description").notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("game_hard_resources_name_idx").on(columns.name), index("game_hard_resources_updated_at_idx").on(columns.updatedAt), index("game_hard_resources_created_at_idx").on(columns.createdAt), ], ); export const game_structures_stored_resources = pgTable( "game_structures_stored_resources", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).notNull(), gridX: numeric("grid_x", { mode: "number" }).notNull(), gridY: numeric("grid_y", { mode: "number" }).notNull(), rotated: boolean("rotated").default(false), }, (columns) => [ index("game_structures_stored_resources_order_idx").on(columns._order), index("game_structures_stored_resources_parent_id_idx").on(columns._parentID), index("game_structures_stored_resources_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [game_structures.id], name: "game_structures_stored_resources_parent_id_fk", }).onDelete("cascade"), ], ); export const game_structures_void_storage = pgTable( "game_structures_void_storage", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).notNull(), gridX: numeric("grid_x", { mode: "number" }).notNull(), gridY: numeric("grid_y", { mode: "number" }).notNull(), rotated: boolean("rotated").default(false), }, (columns) => [ index("game_structures_void_storage_order_idx").on(columns._order), index("game_structures_void_storage_parent_id_idx").on(columns._parentID), index("game_structures_void_storage_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [game_structures.id], name: "game_structures_void_storage_parent_id_fk", }).onDelete("cascade"), ], ); export const game_structures = pgTable( "game_structures", { id: serial("id").primaryKey(), name: varchar("name").notNull(), type: integer("type_id") .notNull() .references(() => structures.id, { onDelete: "set null", }), faction: integer("faction_id").references(() => factions.id, { onDelete: "set null", }), coordinates: geometryColumn("coordinates"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("game_structures_type_idx").on(columns.type), index("game_structures_faction_idx").on(columns.faction), index("game_structures_updated_at_idx").on(columns.updatedAt), index("game_structures_created_at_idx").on(columns.createdAt), ], ); export const game_vehicles_stored_resources = pgTable( "game_vehicles_stored_resources", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).notNull(), gridX: numeric("grid_x", { mode: "number" }).notNull(), gridY: numeric("grid_y", { mode: "number" }).notNull(), rotated: boolean("rotated").default(false), }, (columns) => [ index("game_vehicles_stored_resources_order_idx").on(columns._order), index("game_vehicles_stored_resources_parent_id_idx").on(columns._parentID), index("game_vehicles_stored_resources_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [game_vehicles.id], name: "game_vehicles_stored_resources_parent_id_fk", }).onDelete("cascade"), ], ); export const game_vehicles_void_storage = pgTable( "game_vehicles_void_storage", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).notNull(), gridX: numeric("grid_x", { mode: "number" }).notNull(), gridY: numeric("grid_y", { mode: "number" }).notNull(), rotated: boolean("rotated").default(false), }, (columns) => [ index("game_vehicles_void_storage_order_idx").on(columns._order), index("game_vehicles_void_storage_parent_id_idx").on(columns._parentID), index("game_vehicles_void_storage_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [game_vehicles.id], name: "game_vehicles_void_storage_parent_id_fk", }).onDelete("cascade"), ], ); export const game_vehicles = pgTable( "game_vehicles", { id: serial("id").primaryKey(), name: varchar("name").notNull(), type: integer("type_id") .notNull() .references(() => vehicles.id, { onDelete: "set null", }), deployedAt: integer("deployed_at_id").references(() => game_structures.id, { onDelete: "set null", }), faction: integer("faction_id").references(() => factions.id, { onDelete: "set null", }), status: enum_game_vehicles_status("status").notNull().default("idle"), currentFuel: numeric("current_fuel", { mode: "number" }).notNull().default(0), currentHealth: numeric("current_health", { mode: "number" }).notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("game_vehicles_type_idx").on(columns.type), index("game_vehicles_deployed_at_idx").on(columns.deployedAt), index("game_vehicles_faction_idx").on(columns.faction), index("game_vehicles_updated_at_idx").on(columns.updatedAt), index("game_vehicles_created_at_idx").on(columns.createdAt), ], ); export const game_npcs = pgTable( "game_npcs", { id: serial("id").primaryKey(), name: varchar("name").notNull(), occupation: varchar("occupation"), location: integer("location_id").references(() => game_structures.id, { onDelete: "set null", }), faction: integer("faction_id").references(() => factions.id, { onDelete: "set null", }), bio: varchar("bio"), isGenerated: boolean("is_generated").default(false), isInGame: boolean("is_in_game").default(true), vendor_enabled: boolean("vendor_enabled").default(false), vendor_priceModifier: numeric("vendor_price_modifier", { mode: "number" }).default(1), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("game_npcs_location_idx").on(columns.location), index("game_npcs_faction_idx").on(columns.faction), index("game_npcs_updated_at_idx").on(columns.updatedAt), index("game_npcs_created_at_idx").on(columns.createdAt), ], ); export const game_npcs_rels = pgTable( "game_npcs_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), assetsID: integer("assets_id"), }, (columns) => [ index("game_npcs_rels_order_idx").on(columns.order), index("game_npcs_rels_parent_idx").on(columns.parent), index("game_npcs_rels_path_idx").on(columns.path), index("game_npcs_rels_assets_id_idx").on(columns.assetsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [game_npcs.id], name: "game_npcs_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assetsID"]], foreignColumns: [assets.id], name: "game_npcs_rels_assets_fk", }).onDelete("cascade"), ], ); export const game_event_logs = pgTable( "game_event_logs", { id: serial("id").primaryKey(), system: boolean("system").default(true), timestamp: timestamp("timestamp", { mode: "string", withTimezone: true, precision: 3, }).notNull(), type: varchar("type").notNull(), message: varchar("message").notNull(), actor: integer("actor_id").references(() => users.id, { onDelete: "set null", }), structure: integer("structure_id").references(() => game_structures.id, { onDelete: "set null", }), targetCollection: enum_game_event_logs_target_collection("target_collection"), targetId: numeric("target_id", { mode: "number" }), data: jsonb("data"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("game_event_logs_type_idx").on(columns.type), index("game_event_logs_actor_idx").on(columns.actor), index("game_event_logs_structure_idx").on(columns.structure), index("game_event_logs_updated_at_idx").on(columns.updatedAt), index("game_event_logs_created_at_idx").on(columns.createdAt), ], ); export const users_roles = pgTable( "users_roles", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_users_roles("value"), id: serial("id").primaryKey(), }, (columns) => [ index("users_roles_order_idx").on(columns.order), index("users_roles_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [users.id], name: "users_roles_parent_fk", }).onDelete("cascade"), ], ); export const users_preferences_notifications_muted_types = pgTable( "users_preferences_notifications_muted_types", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_users_preferences_notifications_muted_types("value"), id: serial("id").primaryKey(), }, (columns) => [ index("users_preferences_notifications_muted_types_order_idx").on(columns.order), index("users_preferences_notifications_muted_types_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [users.id], name: "users_preferences_notifications_muted_types_parent_fk", }).onDelete("cascade"), ], ); export const users_preferences_discord_muted_types = pgTable( "users_preferences_discord_muted_types", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_users_preferences_discord_muted_types("value"), id: serial("id").primaryKey(), }, (columns) => [ index("users_preferences_discord_muted_types_order_idx").on(columns.order), index("users_preferences_discord_muted_types_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [users.id], name: "users_preferences_discord_muted_types_parent_fk", }).onDelete("cascade"), ], ); export const users_sessions = pgTable( "users_sessions", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }), expiresAt: timestamp("expires_at", { mode: "string", withTimezone: true, precision: 3, }).notNull(), }, (columns) => [ index("users_sessions_order_idx").on(columns._order), index("users_sessions_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [users.id], name: "users_sessions_parent_id_fk", }).onDelete("cascade"), ], ); export const users = pgTable( "users", { id: serial("id").primaryKey(), discordUsername: varchar("discord_username").notNull(), discordId: varchar("discord_id"), displayName: varchar("display_name").notNull(), payloadDisplayName: varchar("payload_display_name"), steamId: varchar("steam_id").notNull(), preferences_notifications_mutedAll: boolean("preferences_notifications_muted_all").default( false, ), preferences_display_showCallsign: boolean("preferences_display_show_callsign").default(false), preferences_display_leadOrActual: enum_users_preferences_display_lead_or_actual( "preferences_display_lead_or_actual", ).default("lead"), preferences_display_showVersionOverlay: boolean( "preferences_display_show_version_overlay", ).default(true), preferences_display_xpDisplayMini: boolean("preferences_display_xp_display_mini").default( false, ), preferences_display_showBackgroundTexture: boolean( "preferences_display_show_background_texture", ).default(true), preferences_discord_enabled: boolean("preferences_discord_enabled").default(false), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), email: varchar("email"), username: varchar("username").notNull(), resetPasswordToken: varchar("reset_password_token"), resetPasswordExpiration: timestamp("reset_password_expiration", { mode: "string", withTimezone: true, precision: 3, }), salt: varchar("salt"), hash: varchar("hash"), loginAttempts: numeric("login_attempts", { mode: "number" }).default(0), lockUntil: timestamp("lock_until", { mode: "string", withTimezone: true, precision: 3 }), }, (columns) => [ uniqueIndex("users_discord_username_idx").on(columns.discordUsername), uniqueIndex("users_discord_id_idx").on(columns.discordId), index("users_updated_at_idx").on(columns.updatedAt), index("users_created_at_idx").on(columns.createdAt), uniqueIndex("users_username_idx").on(columns.username), ], ); export const users_rels = pgTable( "users_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), rolesID: integer("roles_id"), }, (columns) => [ index("users_rels_order_idx").on(columns.order), index("users_rels_parent_idx").on(columns.parent), index("users_rels_path_idx").on(columns.path), index("users_rels_roles_id_idx").on(columns.rolesID), foreignKey({ columns: [columns["parent"]], foreignColumns: [users.id], name: "users_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["rolesID"]], foreignColumns: [roles.id], name: "users_rels_roles_fk", }).onDelete("cascade"), ], ); export const roles_permissions = pgTable( "roles_permissions", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_roles_permissions("value"), id: serial("id").primaryKey(), }, (columns) => [ index("roles_permissions_order_idx").on(columns.order), index("roles_permissions_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [roles.id], name: "roles_permissions_parent_fk", }).onDelete("cascade"), ], ); export const roles = pgTable( "roles", { id: serial("id").primaryKey(), name: varchar("name").notNull(), slug: varchar("slug").notNull(), description: varchar("description"), isSystem: boolean("is_system").default(false), isSuperuser: boolean("is_superuser").default(false), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("roles_name_idx").on(columns.name), uniqueIndex("roles_slug_idx").on(columns.slug), index("roles_updated_at_idx").on(columns.updatedAt), index("roles_created_at_idx").on(columns.createdAt), ], ); export const roles_rels = pgTable( "roles_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), rolesID: integer("roles_id"), }, (columns) => [ index("roles_rels_order_idx").on(columns.order), index("roles_rels_parent_idx").on(columns.parent), index("roles_rels_path_idx").on(columns.path), index("roles_rels_roles_id_idx").on(columns.rolesID), foreignKey({ columns: [columns["parent"]], foreignColumns: [roles.id], name: "roles_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["rolesID"]], foreignColumns: [roles.id], name: "roles_rels_roles_fk", }).onDelete("cascade"), ], ); export const ranks = pgTable( "ranks", { id: serial("id").primaryKey(), _order: varchar("_order"), name: varchar("name").notNull(), abbreviation: varchar("abbreviation").notNull(), description: varchar("description").notNull(), insignia: integer("insignia_id").references(() => media.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("ranks__order_idx").on(columns._order), uniqueIndex("ranks_name_idx").on(columns.name), uniqueIndex("ranks_abbreviation_idx").on(columns.abbreviation), index("ranks_insignia_idx").on(columns.insignia), index("ranks_updated_at_idx").on(columns.updatedAt), index("ranks_created_at_idx").on(columns.createdAt), ], ); export const profiles_progression_awards = pgTable( "profiles_progression_awards", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), award: integer("award_id") .notNull() .references(() => awards.id, { onDelete: "set null", }), awardedBy: integer("awarded_by_id").references(() => profiles.id, { onDelete: "set null", }), awardedAt: timestamp("awarded_at", { mode: "string", withTimezone: true, precision: 3, }).notNull(), awardReason: varchar("award_reason"), }, (columns) => [ index("profiles_progression_awards_order_idx").on(columns._order), index("profiles_progression_awards_parent_id_idx").on(columns._parentID), index("profiles_progression_awards_award_idx").on(columns.award), index("profiles_progression_awards_awarded_by_idx").on(columns.awardedBy), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [profiles.id], name: "profiles_progression_awards_parent_id_fk", }).onDelete("cascade"), ], ); export const profiles = pgTable( "profiles", { id: serial("id").primaryKey(), user: integer("user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), rank: integer("rank_id") .notNull() .references(() => ranks.id, { onDelete: "set null", }), dossier_enlistmentDate: timestamp("dossier_enlistment_date", { mode: "string", withTimezone: true, precision: 3, }).notNull(), dossier_personalExcerpt: varchar("dossier_personal_excerpt"), dossier_intelExcerpt: jsonb("dossier_intel_excerpt"), progression_scoreboard_infantryKills: numeric("progression_scoreboard_infantry_kills", { mode: "number", }).default(0), progression_scoreboard_vehicleKills: numeric("progression_scoreboard_vehicle_kills", { mode: "number", }).default(0), progression_scoreboard_armorKills: numeric("progression_scoreboard_armor_kills", { mode: "number", }).default(0), progression_scoreboard_airKills: numeric("progression_scoreboard_air_kills", { mode: "number", }).default(0), progression_scoreboard_deaths: numeric("progression_scoreboard_deaths", { mode: "number", }).default(0), progression_minigames_flappyBird_gamesPlayed: numeric( "progression_minigames_flappy_bird_games_played", { mode: "number" }, ).default(0), progression_minigames_flappyBird_totalPasses: numeric( "progression_minigames_flappy_bird_total_passes", { mode: "number" }, ).default(0), progression_minigames_flappyBird_bestScore: numeric( "progression_minigames_flappy_bird_best_score", { mode: "number" }, ).default(0), progression_minigames_flappyBird_xpEarned: numeric( "progression_minigames_flappy_bird_xp_earned", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_gamesPlayed: numeric( "progression_minigames_eod_minesweeper_games_played", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_wins: numeric( "progression_minigames_eod_minesweeper_wins", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_losses: numeric( "progression_minigames_eod_minesweeper_losses", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestScore: numeric( "progression_minigames_eod_minesweeper_best_score", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_xpEarned: numeric( "progression_minigames_eod_minesweeper_xp_earned", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestTrainingTime: numeric( "progression_minigames_eod_minesweeper_best_training_time", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestPerimeterTime: numeric( "progression_minigames_eod_minesweeper_best_perimeter_time", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestSupplyRoadTime: numeric( "progression_minigames_eod_minesweeper_best_supply_road_time", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestTrainingFlags: numeric( "progression_minigames_eod_minesweeper_best_training_flags", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestPerimeterFlags: numeric( "progression_minigames_eod_minesweeper_best_perimeter_flags", { mode: "number" }, ).default(0), progression_minigames_eodMinesweeper_bestSupplyRoadFlags: numeric( "progression_minigames_eod_minesweeper_best_supply_road_flags", { mode: "number" }, ).default(0), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("profiles_user_idx").on(columns.user), index("profiles_rank_idx").on(columns.rank), index("profiles_updated_at_idx").on(columns.updatedAt), index("profiles_created_at_idx").on(columns.createdAt), ], ); export const profiles_rels = pgTable( "profiles_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), qualificationsID: integer("qualifications_id"), }, (columns) => [ index("profiles_rels_order_idx").on(columns.order), index("profiles_rels_parent_idx").on(columns.parent), index("profiles_rels_path_idx").on(columns.path), index("profiles_rels_qualifications_id_idx").on(columns.qualificationsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [profiles.id], name: "profiles_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["qualificationsID"]], foreignColumns: [qualifications.id], name: "profiles_rels_qualifications_fk", }).onDelete("cascade"), ], ); export const awards_grant_config_allowed_grantor_assignment_types = pgTable( "awards_grant_config_allowed_grantor_assignment_types", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_awards_grant_config_allowed_grantor_assignment_types("value"), id: serial("id").primaryKey(), }, (columns) => [ index("awards_grant_config_allowed_grantor_assignment_types_order_idx").on(columns.order), index("awards_grant_config_allowed_grantor_assignment_types_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [awards.id], name: "awards_grant_config_allowed_grantor_assignment_types_parent_fk", }).onDelete("cascade"), ], ); export const awards = pgTable( "awards", { id: serial("id").primaryKey(), name: varchar("name").notNull(), description: jsonb("description").notNull(), type: enum_awards_type("type").default("commendation"), commendationColor: varchar("commendation_color").default("#92400e"), image: integer("image_id").references(() => media.id, { onDelete: "set null", }), experiencePoints: numeric("experience_points", { mode: "number" }), ribbonDesign: jsonb("ribbon_design"), medalDesign: jsonb("medal_design"), grantConfig_maxGrantsPerGrantor: numeric("grant_config_max_grants_per_grantor", { mode: "number", }), grantConfig_recipientScope: enum_awards_grant_config_recipient_scope( "grant_config_recipient_scope", ).default("same_command"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("awards_name_idx").on(columns.name), index("awards_image_idx").on(columns.image), index("awards_updated_at_idx").on(columns.updatedAt), index("awards_created_at_idx").on(columns.createdAt), ], ); export const awards_rels = pgTable( "awards_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), assignmentsID: integer("assignments_id"), }, (columns) => [ index("awards_rels_order_idx").on(columns.order), index("awards_rels_parent_idx").on(columns.parent), index("awards_rels_path_idx").on(columns.path), index("awards_rels_assignments_id_idx").on(columns.assignmentsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [awards.id], name: "awards_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assignmentsID"]], foreignColumns: [assignments.id], name: "awards_rels_assignments_fk", }).onDelete("cascade"), ], ); export const qualifications = pgTable( "qualifications", { id: serial("id").primaryKey(), name: varchar("name").notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("qualifications_name_idx").on(columns.name), index("qualifications_updated_at_idx").on(columns.updatedAt), index("qualifications_created_at_idx").on(columns.createdAt), ], ); export const assignments = pgTable( "assignments", { id: serial("id").primaryKey(), name: varchar("name").notNull(), type: enum_assignments_type("type").notNull(), callsign: varchar("callsign"), description: jsonb("description"), leader: integer("leader_id").references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("assignments_leader_idx").on(columns.leader), index("assignments_updated_at_idx").on(columns.updatedAt), index("assignments_created_at_idx").on(columns.createdAt), ], ); export const assignments_rels = pgTable( "assignments_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), assignmentsID: integer("assignments_id"), usersID: integer("users_id"), }, (columns) => [ index("assignments_rels_order_idx").on(columns.order), index("assignments_rels_parent_idx").on(columns.parent), index("assignments_rels_path_idx").on(columns.path), index("assignments_rels_assignments_id_idx").on(columns.assignmentsID), index("assignments_rels_users_id_idx").on(columns.usersID), foreignKey({ columns: [columns["parent"]], foreignColumns: [assignments.id], name: "assignments_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assignmentsID"]], foreignColumns: [assignments.id], name: "assignments_rels_assignments_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["usersID"]], foreignColumns: [users.id], name: "assignments_rels_users_fk", }).onDelete("cascade"), ], ); export const assignment_transfers = pgTable( "assignment_transfers", { id: serial("id").primaryKey(), requester: integer("requester_id") .notNull() .references(() => users.id, { onDelete: "set null", }), fromAssignment: integer("from_assignment_id") .notNull() .references(() => assignments.id, { onDelete: "set null", }), toAssignment: integer("to_assignment_id") .notNull() .references(() => assignments.id, { onDelete: "set null", }), status: enum_assignment_transfers_status("status").notNull().default("pending"), escalationReason: enum_assignment_transfers_escalation_reason("escalation_reason"), fromLeaderDecision: enum_assignment_transfers_from_leader_decision("from_leader_decision") .notNull() .default("pending"), toLeaderDecision: enum_assignment_transfers_to_leader_decision("to_leader_decision") .notNull() .default("pending"), fromDecisionBy: integer("from_decision_by_id").references(() => users.id, { onDelete: "set null", }), toDecisionBy: integer("to_decision_by_id").references(() => users.id, { onDelete: "set null", }), fromDecidedAt: timestamp("from_decided_at", { mode: "string", withTimezone: true, precision: 3, }), toDecidedAt: timestamp("to_decided_at", { mode: "string", withTimezone: true, precision: 3 }), fromLeaderSnapshot: integer("from_leader_snapshot_id").references(() => users.id, { onDelete: "set null", }), toLeaderSnapshot: integer("to_leader_snapshot_id").references(() => users.id, { onDelete: "set null", }), rejectionReason: varchar("rejection_reason"), requestNote: varchar("request_note"), appealNote: varchar("appeal_note"), resolvedBy: integer("resolved_by_id").references(() => users.id, { onDelete: "set null", }), resolutionNote: varchar("resolution_note"), resolvedAt: timestamp("resolved_at", { mode: "string", withTimezone: true, precision: 3 }), discordFromLeaderMessageId: varchar("discord_from_leader_message_id"), discordToLeaderMessageId: varchar("discord_to_leader_message_id"), discordRequesterMessageId: varchar("discord_requester_message_id"), sourceNotifiedToUserId: integer("source_notified_to_user_id_id").references(() => users.id, { onDelete: "set null", }), destinationNotifiedToUserId: integer("destination_notified_to_user_id_id").references( () => users.id, { onDelete: "set null", }, ), discordDeliveredKeys: jsonb("discord_delivered_keys").default(sql`'[]'::jsonb`), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("assignment_transfers_requester_idx").on(columns.requester), index("assignment_transfers_from_assignment_idx").on(columns.fromAssignment), index("assignment_transfers_to_assignment_idx").on(columns.toAssignment), index("assignment_transfers_status_idx").on(columns.status), index("assignment_transfers_from_decision_by_idx").on(columns.fromDecisionBy), index("assignment_transfers_to_decision_by_idx").on(columns.toDecisionBy), index("assignment_transfers_from_leader_snapshot_idx").on(columns.fromLeaderSnapshot), index("assignment_transfers_to_leader_snapshot_idx").on(columns.toLeaderSnapshot), index("assignment_transfers_resolved_by_idx").on(columns.resolvedBy), index("assignment_transfers_source_notified_to_user_id_idx").on(columns.sourceNotifiedToUserId), index("assignment_transfers_destination_notified_to_user_id_idx").on( columns.destinationNotifiedToUserId, ), index("assignment_transfers_updated_at_idx").on(columns.updatedAt), index("assignment_transfers_created_at_idx").on(columns.createdAt), ], ); export const experience = pgTable( "experience", { id: serial("id").primaryKey(), name: varchar("name").notNull(), requiredPoints: numeric("required_points", { mode: "number" }).notNull(), description: jsonb("description").notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("experience_name_idx").on(columns.name), index("experience_updated_at_idx").on(columns.updatedAt), index("experience_created_at_idx").on(columns.createdAt), ], ); export const user_notifications = pgTable( "user_notifications", { id: serial("id").primaryKey(), user: integer("user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), type: varchar("type"), title: varchar("title").notNull(), message: varchar("message"), link: varchar("link"), read: boolean("read").default(false), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("user_notifications_user_idx").on(columns.user), index("user_notifications_read_idx").on(columns.read), index("user_notifications_updated_at_idx").on(columns.updatedAt), index("user_notifications_created_at_idx").on(columns.createdAt), ], ); export const evaluations = pgTable( "evaluations", { id: serial("id").primaryKey(), rater: integer("rater_id") .notNull() .references(() => users.id, { onDelete: "set null", }), ratee: integer("ratee_id") .notNull() .references(() => users.id, { onDelete: "set null", }), mission: integer("mission_id") .notNull() .references(() => missions.id, { onDelete: "set null", }), kind: enum_evaluations_kind("kind").notNull(), level: enum_evaluations_level("level").notNull(), comment: varchar("comment"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("evaluations_rater_idx").on(columns.rater), index("evaluations_ratee_idx").on(columns.ratee), index("evaluations_mission_idx").on(columns.mission), index("evaluations_updated_at_idx").on(columns.updatedAt), index("evaluations_created_at_idx").on(columns.createdAt), ], ); export const missions_mission_roles_provided_roles = pgTable( "missions_mission_roles_provided_roles", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), roleName: varchar("role_name").notNull(), missionCritical: boolean("mission_critical").default(true), minimumRank: integer("minimum_rank_id").references(() => ranks.id, { onDelete: "set null", }), }, (columns) => [ index("missions_mission_roles_provided_roles_order_idx").on(columns._order), index("missions_mission_roles_provided_roles_parent_id_idx").on(columns._parentID), index("missions_mission_roles_provided_roles_minimum_rank_idx").on(columns.minimumRank), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [missions.id], name: "missions_mission_roles_provided_roles_parent_id_fk", }).onDelete("cascade"), ], ); export const missions_briefing = pgTable( "missions_briefing", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), sectionName: varchar("section_name").notNull(), details: jsonb("details").notNull(), }, (columns) => [ index("missions_briefing_order_idx").on(columns._order), index("missions_briefing_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [missions.id], name: "missions_briefing_parent_id_fk", }).onDelete("cascade"), ], ); export const missions_mission_objectives = pgTable( "missions_mission_objectives", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), title: varchar("title").notNull(), description: varchar("description"), missionCritical: boolean("mission_critical").default(true), successOrFailConditions: varchar("success_or_fail_conditions"), redacted: boolean("redacted").default(false), }, (columns) => [ index("missions_mission_objectives_order_idx").on(columns._order), index("missions_mission_objectives_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [missions.id], name: "missions_mission_objectives_parent_id_fk", }).onDelete("cascade"), ], ); export const missions_factions_involved = pgTable( "missions_factions_involved", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), faction: integer("faction_id") .notNull() .references(() => factions.id, { onDelete: "set null", }), threatLevel: enum_missions_factions_involved_threat_level("threat_level") .notNull() .default("hostile"), }, (columns) => [ index("missions_factions_involved_order_idx").on(columns._order), index("missions_factions_involved_parent_id_idx").on(columns._parentID), index("missions_factions_involved_faction_idx").on(columns.faction), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [missions.id], name: "missions_factions_involved_parent_id_fk", }).onDelete("cascade"), ], ); export const missions_logistics_and_support_insertion = pgTable( "missions_logistics_and_support_insertion", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_missions_logistics_and_support_insertion("value"), id: serial("id").primaryKey(), }, (columns) => [ index("missions_logistics_and_support_insertion_order_idx").on(columns.order), index("missions_logistics_and_support_insertion_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [missions.id], name: "missions_logistics_and_support_insertion_parent_fk", }).onDelete("cascade"), ], ); export const missions_logistics_and_support_extraction = pgTable( "missions_logistics_and_support_extraction", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_missions_logistics_and_support_extraction("value"), id: serial("id").primaryKey(), }, (columns) => [ index("missions_logistics_and_support_extraction_order_idx").on(columns.order), index("missions_logistics_and_support_extraction_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [missions.id], name: "missions_logistics_and_support_extraction_parent_fk", }).onDelete("cascade"), ], ); export const missions_logistics_and_support_assets_available = pgTable( "missions_logistics_and_support_assets_available", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), assetType: varchar("asset_type").notNull(), assetCount: varchar("asset_count"), doesRespawn: boolean("does_respawn"), assetCallsign: varchar("asset_callsign"), }, (columns) => [ index("missions_logistics_and_support_assets_available_order_idx").on(columns._order), index("missions_logistics_and_support_assets_available_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [missions.id], name: "missions_logistics_and_support_assets_available_parent_id_fk", }).onDelete("cascade"), ], ); export const missions_comms_and_docs_frequencies = pgTable( "missions_comms_and_docs_frequencies", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), frequency: numeric("frequency", { mode: "number" }).notNull(), channel: numeric("channel", { mode: "number" }), netName: varchar("net_name").notNull(), freqUsage: varchar("freq_usage").notNull(), }, (columns) => [ index("missions_comms_and_docs_frequencies_order_idx").on(columns._order), index("missions_comms_and_docs_frequencies_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [missions.id], name: "missions_comms_and_docs_frequencies_parent_id_fk", }).onDelete("cascade"), ], ); export const missions = pgTable( "missions", { id: serial("id").primaryKey(), name: varchar("name").notNull(), codeName: varchar("code_name").notNull(), summary: varchar("summary").notNull(), operationType: enum_missions_operation_type("operation_type").notNull(), discordMessageId: varchar("discord_message_id"), discordAttendanceHash: varchar("discord_attendance_hash"), discordAttendanceSentAt: timestamp("discord_attendance_sent_at", { mode: "string", withTimezone: true, precision: 3, }), coverImage: integer("cover_image_id").references(() => media.id, { onDelete: "set null", }), classification_map: integer("classification_map_id") .notNull() .references(() => maps.id, { onDelete: "set null", }), classification_missionType: enum_missions_classification_mission_type( "classification_mission_type", ) .notNull() .default("Zeus"), classification_campaign: integer("classification_campaign_id") .notNull() .references(() => campaigns.id, { onDelete: "set null", }), classification_customScripts: boolean("classification_custom_scripts"), classification_startDateTime: timestamp("classification_start_date_time", { mode: "string", withTimezone: true, precision: 3, }).notNull(), classification_estimatedDuration: numeric("classification_estimated_duration", { mode: "number", }) .notNull() .default(240), ownershipAndStatus_status: enum_missions_ownership_and_status_status( "ownership_and_status_status", ) .notNull() .default("Concept"), ownershipAndStatus_visibility: enum_missions_ownership_and_status_visibility( "ownership_and_status_visibility", ) .notNull() .default("leadership"), ownershipAndStatus_completedAt: timestamp("ownership_and_status_completed_at", { mode: "string", withTimezone: true, precision: 3, }), missionRoles_maxPlayers: numeric("mission_roles_max_players", { mode: "number" }) .notNull() .default(32), missionRoles_notes: varchar("mission_roles_notes"), civilianPresence: enum_missions_civilian_presence("civilian_presence").default("None"), gameDetails_serverDetails_serverIp: varchar("game_details_server_details_server_ip") .notNull() .default("arma.onyxsimple.com"), gameDetails_serverDetails_serverPort: numeric("game_details_server_details_server_port", { mode: "number", }) .notNull() .default(2302), gameDetails_serverDetails_serverPassword: varchar( "game_details_server_details_server_password", ).default("ptf313"), gameDetails_gameSetup_missionFile: integer( "game_details_game_setup_mission_file_id", ).references(() => mission_files.id, { onDelete: "set null", }), gameDetails_gameSetup_requiredMods: integer( "game_details_game_setup_required_mods_id", ).references(() => mod_lists.id, { onDelete: "set null", }), commsAndDocs_radioPlan: jsonb("comms_and_docs_radio_plan"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("missions_code_name_idx").on(columns.codeName), index("missions_cover_image_idx").on(columns.coverImage), index("missions_classification_classification_map_idx").on(columns.classification_map), index("missions_classification_classification_campaign_idx").on( columns.classification_campaign, ), index("missions_game_details_game_setup_game_details_game_setup_idx").on( columns.gameDetails_gameSetup_missionFile, ), index("missions_game_details_game_setup_game_details_game_set_1_idx").on( columns.gameDetails_gameSetup_requiredMods, ), index("missions_updated_at_idx").on(columns.updatedAt), index("missions_created_at_idx").on(columns.createdAt), ], ); export const missions_rels = pgTable( "missions_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), usersID: integer("users_id"), qualificationsID: integer("qualifications_id"), }, (columns) => [ index("missions_rels_order_idx").on(columns.order), index("missions_rels_parent_idx").on(columns.parent), index("missions_rels_path_idx").on(columns.path), index("missions_rels_users_id_idx").on(columns.usersID), index("missions_rels_qualifications_id_idx").on(columns.qualificationsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [missions.id], name: "missions_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["usersID"]], foreignColumns: [users.id], name: "missions_rels_users_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["qualificationsID"]], foreignColumns: [qualifications.id], name: "missions_rels_qualifications_fk", }).onDelete("cascade"), ], ); export const mission_attendances = pgTable( "mission_attendances", { id: serial("id").primaryKey(), mission: integer("mission_id") .notNull() .references(() => missions.id, { onDelete: "set null", }), user: integer("user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), response: enum_mission_attendances_response("response").notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("mission_attendances_mission_idx").on(columns.mission), index("mission_attendances_user_idx").on(columns.user), index("mission_attendances_updated_at_idx").on(columns.updatedAt), index("mission_attendances_created_at_idx").on(columns.createdAt), ], ); export const campaigns = pgTable( "campaigns", { id: serial("id").primaryKey(), name: varchar("name").notNull(), summary: varchar("summary").notNull().default("An Arma 3 campaign."), status: enum_campaigns_status("status").notNull().default("concept"), campaignMode: enum_campaigns_campaign_mode("campaign_mode").notNull().default("custom"), description: jsonb("description"), startDate: timestamp("start_date", { mode: "string", withTimezone: true, precision: 3 }), endDate: timestamp("end_date", { mode: "string", withTimezone: true, precision: 3 }), coverImage: integer("cover_image_id").references(() => media.id, { onDelete: "set null", }), owner: integer("owner_id").references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("campaigns_name_idx").on(columns.name), index("campaigns_cover_image_idx").on(columns.coverImage), index("campaigns_owner_idx").on(columns.owner), index("campaigns_updated_at_idx").on(columns.updatedAt), index("campaigns_created_at_idx").on(columns.createdAt), ], ); export const factions_relationships = pgTable( "factions_relationships", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), targetFaction: integer("target_faction_id") .notNull() .references(() => factions.id, { onDelete: "set null", }), value: numeric("value", { mode: "number" }).notNull().default(0), notes: varchar("notes"), }, (columns) => [ index("factions_relationships_order_idx").on(columns._order), index("factions_relationships_parent_id_idx").on(columns._parentID), index("factions_relationships_target_faction_idx").on(columns.targetFaction), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [factions.id], name: "factions_relationships_parent_id_fk", }).onDelete("cascade"), ], ); export const factions = pgTable( "factions", { id: serial("id").primaryKey(), name: varchar("name").notNull(), type: enum_factions_type("type").notNull().default("minorFaction"), description: jsonb("description"), reputation: numeric("reputation", { mode: "number" }).default(0), playableFaction: boolean("playable_faction"), startingFaction: boolean("starting_faction"), coverImage: integer("cover_image_id").references(() => media.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("factions_name_idx").on(columns.name), index("factions_cover_image_idx").on(columns.coverImage), index("factions_updated_at_idx").on(columns.updatedAt), index("factions_created_at_idx").on(columns.createdAt), ], ); export const factions_rels = pgTable( "factions_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), campaignsID: integer("campaigns_id"), }, (columns) => [ index("factions_rels_order_idx").on(columns.order), index("factions_rels_parent_idx").on(columns.parent), index("factions_rels_path_idx").on(columns.path), index("factions_rels_campaigns_id_idx").on(columns.campaignsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [factions.id], name: "factions_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["campaignsID"]], foreignColumns: [campaigns.id], name: "factions_rels_campaigns_fk", }).onDelete("cascade"), ], ); export const technologies_requirements_prerequisite_technologies = pgTable( "technologies_requirements_prerequisite_technologies", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), }, (columns) => [ index("technologies_requirements_prerequisite_technologies_order_idx").on(columns._order), index("technologies_requirements_prerequisite_technologies_parent_id_idx").on( columns._parentID, ), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [technologies.id], name: "technologies_requirements_prerequisite_technologies_parent_id_fk", }).onDelete("cascade"), ], ); export const technologies_research_costs_resources = pgTable( "technologies_research_costs_resources", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).notNull().default(1), }, (columns) => [ index("technologies_research_costs_resources_order_idx").on(columns._order), index("technologies_research_costs_resources_parent_id_idx").on(columns._parentID), index("technologies_research_costs_resources_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [technologies.id], name: "technologies_research_costs_resources_parent_id_fk", }).onDelete("cascade"), ], ); export const technologies = pgTable( "technologies", { id: serial("id").primaryKey(), name: varchar("name").notNull(), approvalStatus: enum_technologies_approval_status("approval_status") .notNull() .default("in_progress"), type: enum_technologies_type("type").notNull().default("upgrade"), summary: varchar("summary").notNull(), description: jsonb("description"), researchCosts_minimumResearchDuration: numeric("research_costs_minimum_research_duration", { mode: "number", }) .notNull() .default(0), researchCosts_maximumResearchDuration: numeric("research_costs_maximum_research_duration", { mode: "number", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("technologies_updated_at_idx").on(columns.updatedAt), index("technologies_created_at_idx").on(columns.createdAt), ], ); export const technologies_rels = pgTable( "technologies_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), technologiesID: integer("technologies_id"), }, (columns) => [ index("technologies_rels_order_idx").on(columns.order), index("technologies_rels_parent_idx").on(columns.parent), index("technologies_rels_path_idx").on(columns.path), index("technologies_rels_technologies_id_idx").on(columns.technologiesID), foreignKey({ columns: [columns["parent"]], foreignColumns: [technologies.id], name: "technologies_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["technologiesID"]], foreignColumns: [technologies.id], name: "technologies_rels_technologies_fk", }).onDelete("cascade"), ], ); export const assets_skin_configuration_applies_to_asset_types = pgTable( "assets_skin_configuration_applies_to_asset_types", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_assets_skin_configuration_applies_to_asset_types("value"), id: serial("id").primaryKey(), }, (columns) => [ index("assets_skin_configuration_applies_to_asset_types_order_idx").on(columns.order), index("assets_skin_configuration_applies_to_asset_types_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [assets.id], name: "assets_skin_configuration_applies_to_asset_types_parent_fk", }).onDelete("cascade"), ], ); export const assets_crafting_crafting_data_inputs = pgTable( "assets_crafting_crafting_data_inputs", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), quantity: numeric("quantity", { mode: "number" }), lended: boolean("lended"), }, (columns) => [ index("assets_crafting_crafting_data_inputs_order_idx").on(columns._order), index("assets_crafting_crafting_data_inputs_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [assets.id], name: "assets_crafting_crafting_data_inputs_parent_id_fk", }).onDelete("cascade"), ], ); export const assets_crafting_crafting_data_byproducts = pgTable( "assets_crafting_crafting_data_byproducts", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), quantity: numeric("quantity", { mode: "number" }), }, (columns) => [ index("assets_crafting_crafting_data_byproducts_order_idx").on(columns._order), index("assets_crafting_crafting_data_byproducts_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [assets.id], name: "assets_crafting_crafting_data_byproducts_parent_id_fk", }).onDelete("cascade"), ], ); export const assets = pgTable( "assets", { id: serial("id").primaryKey(), name: varchar("name").notNull(), approvalStatus: enum_assets_approval_status("approval_status").notNull().default("in_progress"), className: varchar("class_name").notNull().default(""), assetType: enum_assets_asset_type("asset_type").notNull().default("weapon"), "Weapon Configuration_slotType": enum_assets_weapon_configuration_slot_type( "weapon_configuration_slot_type", ), "Nightvision Configuration_nvgGeneration": enum_assets_nightvision_configuration_nvg_generation( "nightvision_configuration_nvg_generation", ), "Nightvision Configuration_nvgHasThermals": boolean( "nightvision_configuration_nvg_has_thermals", ), "Container Configuration_capacityKg": numeric("container_configuration_capacity_kg", { mode: "number", }), "Container Configuration_weightKg": numeric("container_configuration_weight_kg", { mode: "number", }), "Magazine Configuration_roundCapacity": numeric("magazine_configuration_round_capacity", { mode: "number", }), "Magazine Configuration_ammoType": varchar("magazine_configuration_ammo_type"), "Magazine Configuration_greenmagCompatible": boolean( "magazine_configuration_greenmag_compatible", ), "Asset Metadata_mod": varchar("asset_metadata_mod"), "Asset Metadata_thumbnail": integer("asset_metadata_thumbnail_id").references(() => media.id, { onDelete: "set null", }), "Asset Metadata_gameDescription": varchar("asset_metadata_game_description"), tradeable: boolean("tradeable"), marketTrading_Rarity: enum_assets_market_trading_rarity("market_trading_rarity"), marketTrading_perceivedValue_baseBuyPrice: numeric( "market_trading_perceived_value_base_buy_price", { mode: "number" }, ), marketTrading_perceivedValue_baseSellPrice: numeric( "market_trading_perceived_value_base_sell_price", { mode: "number" }, ), crafting_craftable: boolean("crafting_craftable"), crafting_blueprintRequired: boolean("crafting_blueprint_required"), crafting_technologyRequiredToUse: boolean("crafting_technology_required_to_use"), crafting_craftingData_craftingTimePerUnit: numeric( "crafting_crafting_data_crafting_time_per_unit", { mode: "number" }, ) .notNull() .default(1), crafting_craftingData_batchSize: numeric("crafting_crafting_data_batch_size", { mode: "number", }) .notNull() .default(1), storageDimensions_gridWidth: numeric("storage_dimensions_grid_width", { mode: "number" }) .notNull() .default(1), storageDimensions_gridHeight: numeric("storage_dimensions_grid_height", { mode: "number" }) .notNull() .default(1), storageDimensions_stackable: boolean("storage_dimensions_stackable").default(true), storageDimensions_maxStackSize: numeric("storage_dimensions_max_stack_size", { mode: "number", }), storageDimensions_rotatable: boolean("storage_dimensions_rotatable").default(true), isLive: boolean("is_live"), notes: jsonb("notes"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("assets_asset_metadata_asset_metadata_thumbnail_idx").on( columns["Asset Metadata_thumbnail"], ), index("assets_updated_at_idx").on(columns.updatedAt), index("assets_created_at_idx").on(columns.createdAt), ], ); export const assets_rels = pgTable( "assets_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), assetsID: integer("assets_id"), technologiesID: integer("technologies_id"), resourcesID: integer("resources_id"), structuresID: integer("structures_id"), }, (columns) => [ index("assets_rels_order_idx").on(columns.order), index("assets_rels_parent_idx").on(columns.parent), index("assets_rels_path_idx").on(columns.path), index("assets_rels_assets_id_idx").on(columns.assetsID), index("assets_rels_technologies_id_idx").on(columns.technologiesID), index("assets_rels_resources_id_idx").on(columns.resourcesID), index("assets_rels_structures_id_idx").on(columns.structuresID), foreignKey({ columns: [columns["parent"]], foreignColumns: [assets.id], name: "assets_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assetsID"]], foreignColumns: [assets.id], name: "assets_rels_assets_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["technologiesID"]], foreignColumns: [technologies.id], name: "assets_rels_technologies_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["resourcesID"]], foreignColumns: [resources.id], name: "assets_rels_resources_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["structuresID"]], foreignColumns: [structures.id], name: "assets_rels_structures_fk", }).onDelete("cascade"), ], ); export const resources = pgTable( "resources", { id: serial("id").primaryKey(), name: varchar("name").notNull(), codeName: varchar("code_name").notNull(), approvalStatus: enum_resources_approval_status("approval_status") .notNull() .default("in_progress"), type: enum_resources_type("type").notNull().default("physical"), description: jsonb("description"), icon: integer("icon_id").references(() => media.id, { onDelete: "set null", }), color: varchar("color"), baseValue: numeric("base_value", { mode: "number" }).notNull().default(1), tradeable: boolean("tradeable"), rarity: enum_resources_rarity("rarity").notNull().default("common"), unitOfMeasure: varchar("unit_of_measure").notNull(), massPerUnit: numeric("mass_per_unit", { mode: "number" }).notNull().default(0), stackSize: numeric("stack_size", { mode: "number" }).default(1), gridWidth: numeric("grid_width", { mode: "number" }).notNull().default(1), gridHeight: numeric("grid_height", { mode: "number" }).notNull().default(1), stackable: boolean("stackable").default(true), maxStackSize: numeric("max_stack_size", { mode: "number" }), rotatable: boolean("rotatable").default(true), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("resources_icon_idx").on(columns.icon), index("resources_updated_at_idx").on(columns.updatedAt), index("resources_created_at_idx").on(columns.createdAt), ], ); export const vehicles_category = pgTable( "vehicles_category", { order: integer("order").notNull(), parent: integer("parent_id").notNull(), value: enum_vehicles_category("value"), id: serial("id").primaryKey(), }, (columns) => [ index("vehicles_category_order_idx").on(columns.order), index("vehicles_category_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [vehicles.id], name: "vehicles_category_parent_fk", }).onDelete("cascade"), ], ); export const vehicles_materials = pgTable( "vehicles_materials", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }), }, (columns) => [ index("vehicles_materials_order_idx").on(columns._order), index("vehicles_materials_parent_id_idx").on(columns._parentID), index("vehicles_materials_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [vehicles.id], name: "vehicles_materials_parent_id_fk", }).onDelete("cascade"), ], ); export const vehicles_scrap_returns = pgTable( "vehicles_scrap_returns", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).default(1), chance: numeric("chance", { mode: "number" }).default(100), }, (columns) => [ index("vehicles_scrap_returns_order_idx").on(columns._order), index("vehicles_scrap_returns_parent_id_idx").on(columns._parentID), index("vehicles_scrap_returns_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [vehicles.id], name: "vehicles_scrap_returns_parent_id_fk", }).onDelete("cascade"), ], ); export const vehicles_upkeep_costs = pgTable( "vehicles_upkeep_costs", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).default(1), }, (columns) => [ index("vehicles_upkeep_costs_order_idx").on(columns._order), index("vehicles_upkeep_costs_parent_id_idx").on(columns._parentID), index("vehicles_upkeep_costs_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [vehicles.id], name: "vehicles_upkeep_costs_parent_id_fk", }).onDelete("cascade"), ], ); export const vehicles_allowed_virtual_cargo = pgTable( "vehicles_allowed_virtual_cargo", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), amount: numeric("amount", { mode: "number" }).default(1), }, (columns) => [ index("vehicles_allowed_virtual_cargo_order_idx").on(columns._order), index("vehicles_allowed_virtual_cargo_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [vehicles.id], name: "vehicles_allowed_virtual_cargo_parent_id_fk", }).onDelete("cascade"), ], ); export const vehicles_pylons = pgTable( "vehicles_pylons", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), pylonName: varchar("pylon_name").notNull(), pylonType: enum_vehicles_pylons_pylon_type("pylon_type").notNull().default("mountedWeapon"), amount: numeric("amount", { mode: "number" }).default(1), ammoType: integer("ammo_type_id").references(() => assets.id, { onDelete: "set null", }), }, (columns) => [ index("vehicles_pylons_order_idx").on(columns._order), index("vehicles_pylons_parent_id_idx").on(columns._parentID), index("vehicles_pylons_ammo_type_idx").on(columns.ammoType), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [vehicles.id], name: "vehicles_pylons_parent_id_fk", }).onDelete("cascade"), ], ); export const vehicles = pgTable( "vehicles", { id: serial("id").primaryKey(), name: varchar("name").notNull(), classname: varchar("classname"), approvalStatus: enum_vehicles_approval_status("approval_status") .notNull() .default("in_progress"), description: jsonb("description"), image: integer("image_id").references(() => media.id, { onDelete: "set null", }), fuel_fuelType: integer("fuel_fuel_type_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), fuel_fuelCapacity: numeric("fuel_fuel_capacity", { mode: "number" }).notNull(), fuel_fuelConsumptionRate: numeric("fuel_fuel_consumption_rate", { mode: "number" }) .notNull() .default(1), constructionTime: numeric("construction_time", { mode: "number" }), width: numeric("width", { mode: "number" }), height: numeric("height", { mode: "number" }), maxMass: numeric("max_mass", { mode: "number" }), aceCargoSlots: numeric("ace_cargo_slots", { mode: "number" }), maxHealth: numeric("max_health", { mode: "number" }), armorRating: enum_vehicles_armor_rating("armor_rating"), maxSpeedOnRoad: numeric("max_speed_on_road", { mode: "number" }), maxSpeedOffRoad: numeric("max_speed_off_road", { mode: "number" }), maxAirspeed: numeric("max_airspeed", { mode: "number" }), maxKnots: numeric("max_knots", { mode: "number" }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("vehicles_image_idx").on(columns.image), index("vehicles_fuel_fuel_fuel_type_idx").on(columns.fuel_fuelType), index("vehicles_updated_at_idx").on(columns.updatedAt), index("vehicles_created_at_idx").on(columns.createdAt), ], ); export const vehicles_rels = pgTable( "vehicles_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), technologiesID: integer("technologies_id"), assetsID: integer("assets_id"), vehiclesID: integer("vehicles_id"), resourcesID: integer("resources_id"), }, (columns) => [ index("vehicles_rels_order_idx").on(columns.order), index("vehicles_rels_parent_idx").on(columns.parent), index("vehicles_rels_path_idx").on(columns.path), index("vehicles_rels_technologies_id_idx").on(columns.technologiesID), index("vehicles_rels_assets_id_idx").on(columns.assetsID), index("vehicles_rels_vehicles_id_idx").on(columns.vehiclesID), index("vehicles_rels_resources_id_idx").on(columns.resourcesID), foreignKey({ columns: [columns["parent"]], foreignColumns: [vehicles.id], name: "vehicles_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["technologiesID"]], foreignColumns: [technologies.id], name: "vehicles_rels_technologies_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assetsID"]], foreignColumns: [assets.id], name: "vehicles_rels_assets_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["vehiclesID"]], foreignColumns: [vehicles.id], name: "vehicles_rels_vehicles_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["resourcesID"]], foreignColumns: [resources.id], name: "vehicles_rels_resources_fk", }).onDelete("cascade"), ], ); export const structures_materials = pgTable( "structures_materials", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }), }, (columns) => [ index("structures_materials_order_idx").on(columns._order), index("structures_materials_parent_id_idx").on(columns._parentID), index("structures_materials_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_materials_parent_id_fk", }).onDelete("cascade"), ], ); export const structures_resources_in_range = pgTable( "structures_resources_in_range", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id").references(() => resources.id, { onDelete: "set null", }), range: numeric("range", { mode: "number" }), }, (columns) => [ index("structures_resources_in_range_order_idx").on(columns._order), index("structures_resources_in_range_parent_id_idx").on(columns._parentID), index("structures_resources_in_range_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_resources_in_range_parent_id_fk", }).onDelete("cascade"), ], ); export const structures_structures_in_range = pgTable( "structures_structures_in_range", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), structure: integer("structure_id").references(() => structures.id, { onDelete: "set null", }), range: numeric("range", { mode: "number" }), }, (columns) => [ index("structures_structures_in_range_order_idx").on(columns._order), index("structures_structures_in_range_parent_id_idx").on(columns._parentID), index("structures_structures_in_range_structure_idx").on(columns.structure), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_structures_in_range_parent_id_fk", }).onDelete("cascade"), ], ); export const structures_upkeep = pgTable( "structures_upkeep", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id").references(() => resources.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }), }, (columns) => [ index("structures_upkeep_order_idx").on(columns._order), index("structures_upkeep_parent_id_idx").on(columns._parentID), index("structures_upkeep_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_upkeep_parent_id_fk", }).onDelete("cascade"), ], ); export const structures_auto_generated_resources = pgTable( "structures_auto_generated_resources", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), resource: integer("resource_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), minAmount: numeric("min_amount", { mode: "number" }).notNull(), maxAmount: numeric("max_amount", { mode: "number" }), minFrequency: varchar("min_frequency").notNull().default("1"), maxFrequency: varchar("max_frequency"), produceChance: numeric("produce_chance", { mode: "number" }).default(100), }, (columns) => [ index("structures_auto_generated_resources_order_idx").on(columns._order), index("structures_auto_generated_resources_parent_id_idx").on(columns._parentID), index("structures_auto_generated_resources_resource_idx").on(columns.resource), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_auto_generated_resources_parent_id_fk", }).onDelete("cascade"), ], ); export const structures_allowed_storage = pgTable( "structures_allowed_storage", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), amount: numeric("amount", { mode: "number" }), }, (columns) => [ index("structures_allowed_storage_order_idx").on(columns._order), index("structures_allowed_storage_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_allowed_storage_parent_id_fk", }).onDelete("cascade"), ], ); export const structures_prohibited_storage = pgTable( "structures_prohibited_storage", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), }, (columns) => [ index("structures_prohibited_storage_order_idx").on(columns._order), index("structures_prohibited_storage_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [structures.id], name: "structures_prohibited_storage_parent_id_fk", }).onDelete("cascade"), ], ); export const structures = pgTable( "structures", { id: serial("id").primaryKey(), name: varchar("name").notNull(), codeName: varchar("code_name").notNull(), approvalStatus: enum_structures_approval_status("approval_status") .notNull() .default("in_progress"), description: jsonb("description").notNull(), image: integer("image_id").references(() => media.id, { onDelete: "set null", }), category: enum_structures_category("category").notNull(), constructionTime: numeric("construction_time", { mode: "number" }).notNull(), requiresUpgrade: boolean("requires_upgrade"), upgradesInto: integer("upgrades_into_id").references((): AnyPgColumn => structures.id, { onDelete: "set null", }), upgradeCostMultiplier: numeric("upgrade_cost_multiplier", { mode: "number" }).default(1), terrainType: enum_structures_terrain_type("terrain_type").notNull(), sellPrice: numeric("sell_price", { mode: "number" }), functionType: enum_structures_function_type("function_type"), maxCapacityMass: numeric("max_capacity_mass", { mode: "number" }), restrictToAllowed: boolean("restrict_to_allowed").default(false), xSize: numeric("x_size", { mode: "number" }), ySize: numeric("y_size", { mode: "number" }), maxHealth: numeric("max_health", { mode: "number" }).notNull(), repairSpeed: numeric("repair_speed", { mode: "number" }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("structures_image_idx").on(columns.image), index("structures_upgrades_into_idx").on(columns.upgradesInto), index("structures_updated_at_idx").on(columns.updatedAt), index("structures_created_at_idx").on(columns.createdAt), ], ); export const structures_rels = pgTable( "structures_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), technologiesID: integer("technologies_id"), assetsID: integer("assets_id"), vehiclesID: integer("vehicles_id"), resourcesID: integer("resources_id"), }, (columns) => [ index("structures_rels_order_idx").on(columns.order), index("structures_rels_parent_idx").on(columns.parent), index("structures_rels_path_idx").on(columns.path), index("structures_rels_technologies_id_idx").on(columns.technologiesID), index("structures_rels_assets_id_idx").on(columns.assetsID), index("structures_rels_vehicles_id_idx").on(columns.vehiclesID), index("structures_rels_resources_id_idx").on(columns.resourcesID), foreignKey({ columns: [columns["parent"]], foreignColumns: [structures.id], name: "structures_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["technologiesID"]], foreignColumns: [technologies.id], name: "structures_rels_technologies_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assetsID"]], foreignColumns: [assets.id], name: "structures_rels_assets_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["vehiclesID"]], foreignColumns: [vehicles.id], name: "structures_rels_vehicles_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["resourcesID"]], foreignColumns: [resources.id], name: "structures_rels_resources_fk", }).onDelete("cascade"), ], ); export const shipments_cargo = pgTable( "shipments_cargo", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), amount: numeric("amount", { mode: "number" }).notNull(), }, (columns) => [ index("shipments_cargo_order_idx").on(columns._order), index("shipments_cargo_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [shipments.id], name: "shipments_cargo_parent_id_fk", }).onDelete("cascade"), ], ); export const shipments = pgTable( "shipments", { id: serial("id").primaryKey(), name: varchar("name"), origin: integer("origin_id") .notNull() .references(() => game_structures.id, { onDelete: "set null", }), destination: integer("destination_id") .notNull() .references(() => game_structures.id, { onDelete: "set null", }), transportVehicle: integer("transport_vehicle_id") .notNull() .references(() => game_vehicles.id, { onDelete: "set null", }), distance: numeric("distance", { mode: "number" }).notNull(), fuelCost: numeric("fuel_cost", { mode: "number" }).notNull(), fuelConsumed: numeric("fuel_consumed", { mode: "number" }).default(0), status: enum_shipments_status("status").notNull().default("pending"), dispatchedAt: timestamp("dispatched_at", { mode: "string", withTimezone: true, precision: 3 }), estimatedArrival: timestamp("estimated_arrival", { mode: "string", withTimezone: true, precision: 3, }), completedAt: timestamp("completed_at", { mode: "string", withTimezone: true, precision: 3 }), autoReturn: boolean("auto_return").default(false), createdBy: integer("created_by_id").references(() => users.id, { onDelete: "set null", }), failureReason: varchar("failure_reason"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("shipments_origin_idx").on(columns.origin), index("shipments_destination_idx").on(columns.destination), index("shipments_transport_vehicle_idx").on(columns.transportVehicle), index("shipments_created_by_idx").on(columns.createdBy), index("shipments_updated_at_idx").on(columns.updatedAt), index("shipments_created_at_idx").on(columns.createdAt), ], ); export const shipments_rels = pgTable( "shipments_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), resourcesID: integer("resources_id"), assetsID: integer("assets_id"), vehiclesID: integer("vehicles_id"), }, (columns) => [ index("shipments_rels_order_idx").on(columns.order), index("shipments_rels_parent_idx").on(columns.parent), index("shipments_rels_path_idx").on(columns.path), index("shipments_rels_resources_id_idx").on(columns.resourcesID), index("shipments_rels_assets_id_idx").on(columns.assetsID), index("shipments_rels_vehicles_id_idx").on(columns.vehiclesID), foreignKey({ columns: [columns["parent"]], foreignColumns: [shipments.id], name: "shipments_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["resourcesID"]], foreignColumns: [resources.id], name: "shipments_rels_resources_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assetsID"]], foreignColumns: [assets.id], name: "shipments_rels_assets_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["vehiclesID"]], foreignColumns: [vehicles.id], name: "shipments_rels_vehicles_fk", }).onDelete("cascade"), ], ); export const bank_accounts = pgTable( "bank_accounts", { id: serial("id").primaryKey(), name: varchar("name").notNull(), accountType: enum_bank_accounts_account_type("account_type").notNull().default("personal"), ownerFaction: integer("owner_faction_id").references(() => factions.id, { onDelete: "set null", }), ownerUser: integer("owner_user_id").references(() => users.id, { onDelete: "set null", }), currency: integer("currency_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), balance: numeric("balance", { mode: "number" }).default(0), status: enum_bank_accounts_status("status").notNull().default("open"), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("bank_accounts_owner_faction_idx").on(columns.ownerFaction), index("bank_accounts_owner_user_idx").on(columns.ownerUser), index("bank_accounts_currency_idx").on(columns.currency), index("bank_accounts_updated_at_idx").on(columns.updatedAt), ], ); export const bank_transactions = pgTable( "bank_transactions", { id: serial("id").primaryKey(), transactionNumber: varchar("transaction_number").notNull(), type: enum_bank_transactions_type("type").notNull(), fromAccount: integer("from_account_id").references(() => bank_accounts.id, { onDelete: "set null", }), toAccount: integer("to_account_id").references(() => bank_accounts.id, { onDelete: "set null", }), amount: numeric("amount", { mode: "number" }).notNull(), fee: numeric("fee", { mode: "number" }).default(0), memo: varchar("memo"), actor: integer("actor_id").references(() => users.id, { onDelete: "set null", }), status: enum_bank_transactions_status("status").notNull().default("completed"), reference: integer("reference_id").references((): AnyPgColumn => bank_transactions.id, { onDelete: "set null", }), timestamp: timestamp("timestamp", { mode: "string", withTimezone: true, precision: 3, }).notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("bank_transactions_transaction_number_idx").on(columns.transactionNumber), index("bank_transactions_from_account_idx").on(columns.fromAccount), index("bank_transactions_to_account_idx").on(columns.toAccount), index("bank_transactions_actor_idx").on(columns.actor), index("bank_transactions_reference_idx").on(columns.reference), index("bank_transactions_updated_at_idx").on(columns.updatedAt), index("bank_transactions_created_at_idx").on(columns.createdAt), ], ); export const ledger_entries = pgTable( "ledger_entries", { id: serial("id").primaryKey(), account: integer("account_id") .notNull() .references(() => bank_accounts.id, { onDelete: "set null", }), transaction: integer("transaction_id") .notNull() .references(() => bank_transactions.id, { onDelete: "set null", }), type: enum_ledger_entries_type("type").notNull(), amount: numeric("amount", { mode: "number" }).notNull(), balanceAfter: numeric("balance_after", { mode: "number" }), memo: varchar("memo"), timestamp: timestamp("timestamp", { mode: "string", withTimezone: true, precision: 3, }).notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("ledger_entries_account_idx").on(columns.account), index("ledger_entries_transaction_idx").on(columns.transaction), index("ledger_entries_updated_at_idx").on(columns.updatedAt), index("ledger_entries_created_at_idx").on(columns.createdAt), ], ); export const locker_storages_items_equipment_attachments = pgTable( "locker_storages_items_equipment_attachments", { _order: integer("_order").notNull(), _parentID: varchar("_parent_id").notNull(), id: varchar("id").primaryKey(), asset: integer("asset_id") .notNull() .references(() => assets.id, { onDelete: "set null", }), }, (columns) => [ index("locker_storages_items_equipment_attachments_order_idx").on(columns._order), index("locker_storages_items_equipment_attachments_parent_id_idx").on(columns._parentID), index("locker_storages_items_equipment_attachments_asset_idx").on(columns.asset), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [locker_storages_items.id], name: "locker_storages_items_equipment_attachments_parent_id_fk", }).onDelete("cascade"), ], ); export const locker_storages_items = pgTable( "locker_storages_items", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), asset: integer("asset_id") .notNull() .references(() => assets.id, { onDelete: "set null", }), quantity: numeric("quantity", { mode: "number" }).notNull().default(1), gridX: numeric("grid_x", { mode: "number" }).notNull().default(0), gridY: numeric("grid_y", { mode: "number" }).notNull().default(0), rotated: boolean("rotated").default(false), equipment_skin: integer("equipment_skin_id").references(() => assets.id, { onDelete: "set null", }), equipment_customName: varchar("equipment_custom_name"), }, (columns) => [ index("locker_storages_items_order_idx").on(columns._order), index("locker_storages_items_parent_id_idx").on(columns._parentID), index("locker_storages_items_asset_idx").on(columns.asset), index("locker_storages_items_equipment_equipment_skin_idx").on(columns.equipment_skin), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [locker_storages.id], name: "locker_storages_items_parent_id_fk", }).onDelete("cascade"), ], ); export const locker_storages = pgTable( "locker_storages", { id: serial("id").primaryKey(), name: varchar("name").notNull().default("Personal Locker"), ownerUser: integer("owner_user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), itemCount: numeric("item_count", { mode: "number" }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("locker_storages_owner_user_idx").on(columns.ownerUser), index("locker_storages_updated_at_idx").on(columns.updatedAt), index("locker_storages_created_at_idx").on(columns.createdAt), ], ); export const loadouts = pgTable( "loadouts", { id: serial("id").primaryKey(), name: varchar("name").notNull(), description: varchar("description"), ownerUser: integer("owner_user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), equipped: boolean("equipped").default(false), slots_primary: integer("slots_primary_id").references(() => assets.id, { onDelete: "set null", }), slots_secondary: integer("slots_secondary_id").references(() => assets.id, { onDelete: "set null", }), slots_launcher: integer("slots_launcher_id").references(() => assets.id, { onDelete: "set null", }), slots_uniform: integer("slots_uniform_id").references(() => assets.id, { onDelete: "set null", }), slots_vest: integer("slots_vest_id").references(() => assets.id, { onDelete: "set null", }), slots_backpack: integer("slots_backpack_id").references(() => assets.id, { onDelete: "set null", }), slots_helmet: integer("slots_helmet_id").references(() => assets.id, { onDelete: "set null", }), slots_facewear: integer("slots_facewear_id").references(() => assets.id, { onDelete: "set null", }), slots_nvg: integer("slots_nvg_id").references(() => assets.id, { onDelete: "set null", }), slots_radio: integer("slots_radio_id").references(() => assets.id, { onDelete: "set null", }), slots_optic: integer("slots_optic_id").references(() => assets.id, { onDelete: "set null", }), slots_muzzle: integer("slots_muzzle_id").references(() => assets.id, { onDelete: "set null", }), slots_bipod: integer("slots_bipod_id").references(() => assets.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("loadouts_owner_user_idx").on(columns.ownerUser), index("loadouts_slots_slots_primary_idx").on(columns.slots_primary), index("loadouts_slots_slots_secondary_idx").on(columns.slots_secondary), index("loadouts_slots_slots_launcher_idx").on(columns.slots_launcher), index("loadouts_slots_slots_uniform_idx").on(columns.slots_uniform), index("loadouts_slots_slots_vest_idx").on(columns.slots_vest), index("loadouts_slots_slots_backpack_idx").on(columns.slots_backpack), index("loadouts_slots_slots_helmet_idx").on(columns.slots_helmet), index("loadouts_slots_slots_facewear_idx").on(columns.slots_facewear), index("loadouts_slots_slots_nvg_idx").on(columns.slots_nvg), index("loadouts_slots_slots_radio_idx").on(columns.slots_radio), index("loadouts_slots_slots_optic_idx").on(columns.slots_optic), index("loadouts_slots_slots_muzzle_idx").on(columns.slots_muzzle), index("loadouts_slots_slots_bipod_idx").on(columns.slots_bipod), index("loadouts_updated_at_idx").on(columns.updatedAt), index("loadouts_created_at_idx").on(columns.createdAt), ], ); export const market_listings = pgTable( "market_listings", { id: serial("id").primaryKey(), asset: integer("asset_id") .notNull() .references(() => assets.id, { onDelete: "set null", }), seller: integer("seller_id").references(() => users.id, { onDelete: "set null", }), npc: integer("npc_id").references(() => game_npcs.id, { onDelete: "set null", }), quantity: numeric("quantity", { mode: "number" }).notNull().default(1), price: numeric("price", { mode: "number" }).notNull(), desiredPrice: numeric("desired_price", { mode: "number" }), minPrice: numeric("min_price", { mode: "number" }), currency: integer("currency_id").references(() => resources.id, { onDelete: "set null", }), status: enum_market_listings_status("status").notNull().default("active"), isAutoGenerated: boolean("is_auto_generated").default(false), listedAt: timestamp("listed_at", { mode: "string", withTimezone: true, precision: 3, }).notNull(), expiresAt: timestamp("expires_at", { mode: "string", withTimezone: true, precision: 3 }), soldAt: timestamp("sold_at", { mode: "string", withTimezone: true, precision: 3 }), buyer: integer("buyer_id").references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("market_listings_asset_idx").on(columns.asset), index("market_listings_seller_idx").on(columns.seller), index("market_listings_npc_idx").on(columns.npc), index("market_listings_currency_idx").on(columns.currency), index("market_listings_status_idx").on(columns.status), index("market_listings_buyer_idx").on(columns.buyer), index("market_listings_updated_at_idx").on(columns.updatedAt), index("market_listings_created_at_idx").on(columns.createdAt), ], ); export const market_negotiations_history = pgTable( "market_negotiations_history", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), amount: numeric("amount", { mode: "number" }).notNull(), from: enum_market_negotiations_history_from("from").notNull(), note: varchar("note"), at: timestamp("at", { mode: "string", withTimezone: true, precision: 3 }).notNull(), }, (columns) => [ index("market_negotiations_history_order_idx").on(columns._order), index("market_negotiations_history_parent_id_idx").on(columns._parentID), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [market_negotiations.id], name: "market_negotiations_history_parent_id_fk", }).onDelete("cascade"), ], ); export const market_negotiations = pgTable( "market_negotiations", { id: serial("id").primaryKey(), listing: integer("listing_id") .notNull() .references(() => market_listings.id, { onDelete: "set null", }), buyer: integer("buyer_id") .notNull() .references(() => users.id, { onDelete: "set null", }), status: enum_market_negotiations_status("status").notNull().default("open"), patience: numeric("patience", { mode: "number" }).default(0), quantity: numeric("quantity", { mode: "number" }).default(1), amount: numeric("amount", { mode: "number" }).notNull(), proposedBy: enum_market_negotiations_proposed_by("proposed_by").notNull().default("buyer"), acceptedPrice: numeric("accepted_price", { mode: "number" }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("market_negotiations_listing_idx").on(columns.listing), index("market_negotiations_buyer_idx").on(columns.buyer), index("market_negotiations_status_idx").on(columns.status), index("market_negotiations_updated_at_idx").on(columns.updatedAt), index("market_negotiations_created_at_idx").on(columns.createdAt), ], ); export const tickets_activity = pgTable( "tickets_activity", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), type: enum_tickets_activity_type("type").notNull().default("system"), content: jsonb("content").notNull(), author: integer("author_id").references(() => users.id, { onDelete: "set null", }), created_at: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }), }, (columns) => [ index("tickets_activity_order_idx").on(columns._order), index("tickets_activity_parent_id_idx").on(columns._parentID), index("tickets_activity_author_idx").on(columns.author), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [tickets.id], name: "tickets_activity_parent_id_fk", }).onDelete("cascade"), ], ); export const tickets_edit_history = pgTable( "tickets_edit_history", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), before: jsonb("before").notNull(), after: jsonb("after").notNull(), editedBy: integer("edited_by_id") .notNull() .references(() => users.id, { onDelete: "set null", }), editedAt: timestamp("edited_at", { mode: "string", withTimezone: true, precision: 3, }).notNull(), }, (columns) => [ index("tickets_edit_history_order_idx").on(columns._order), index("tickets_edit_history_parent_id_idx").on(columns._parentID), index("tickets_edit_history_edited_by_idx").on(columns.editedBy), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [tickets.id], name: "tickets_edit_history_parent_id_fk", }).onDelete("cascade"), ], ); export const tickets = pgTable( "tickets", { id: serial("id").primaryKey(), title: varchar("title").notNull(), description: jsonb("description").notNull(), category: enum_tickets_category("category").notNull().default("support_request"), priority: enum_tickets_priority("priority").notNull().default("medium"), status: enum_tickets_status("status").notNull().default("open"), reporter: integer("reporter_id") .notNull() .references(() => users.id, { onDelete: "set null", }), assignee: integer("assignee_id").references(() => users.id, { onDelete: "set null", }), closedAt: timestamp("closed_at", { mode: "string", withTimezone: true, precision: 3 }), project: integer("project_id").references(() => projects.id, { onDelete: "set null", }), sprint: integer("sprint_id").references(() => sprints.id, { onDelete: "set null", }), release: integer("release_id").references(() => releases.id, { onDelete: "set null", }), parentTicket: integer("parent_ticket_id").references((): AnyPgColumn => tickets.id, { onDelete: "set null", }), type: enum_tickets_type("type").default("task"), storyPoints: numeric("story_points", { mode: "number" }), estimate: numeric("estimate", { mode: "number" }), startDate: timestamp("start_date", { mode: "string", withTimezone: true, precision: 3 }), dueDate: timestamp("due_date", { mode: "string", withTimezone: true, precision: 3 }), resolution: enum_tickets_resolution("resolution"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("tickets_category_idx").on(columns.category), index("tickets_priority_idx").on(columns.priority), index("tickets_status_idx").on(columns.status), index("tickets_reporter_idx").on(columns.reporter), index("tickets_assignee_idx").on(columns.assignee), index("tickets_project_idx").on(columns.project), index("tickets_sprint_idx").on(columns.sprint), index("tickets_release_idx").on(columns.release), index("tickets_parent_ticket_idx").on(columns.parentTicket), index("tickets_updated_at_idx").on(columns.updatedAt), index("tickets_created_at_idx").on(columns.createdAt), ], ); export const tickets_rels = pgTable( "tickets_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), labelsID: integer("labels_id"), }, (columns) => [ index("tickets_rels_order_idx").on(columns.order), index("tickets_rels_parent_idx").on(columns.parent), index("tickets_rels_path_idx").on(columns.path), index("tickets_rels_labels_id_idx").on(columns.labelsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [tickets.id], name: "tickets_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["labelsID"]], foreignColumns: [labels.id], name: "tickets_rels_labels_fk", }).onDelete("cascade"), ], ); export const ticket_votes = pgTable( "ticket_votes", { id: serial("id").primaryKey(), ticket: integer("ticket_id") .notNull() .references(() => tickets.id, { onDelete: "set null", }), user: integer("user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("ticket_votes_ticket_idx").on(columns.ticket), index("ticket_votes_user_idx").on(columns.user), index("ticket_votes_updated_at_idx").on(columns.updatedAt), index("ticket_votes_created_at_idx").on(columns.createdAt), uniqueIndex("ticket_user_idx").on(columns.ticket, columns.user), ], ); export const projects = pgTable( "projects", { id: serial("id").primaryKey(), name: varchar("name").notNull(), key: varchar("key").notNull(), description: jsonb("description"), lead: integer("lead_id").references(() => users.id, { onDelete: "set null", }), status: enum_projects_status("status").default("active"), defaultAssignee: integer("default_assignee_id").references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("projects_key_idx").on(columns.key), index("projects_lead_idx").on(columns.lead), index("projects_default_assignee_idx").on(columns.defaultAssignee), index("projects_updated_at_idx").on(columns.updatedAt), index("projects_created_at_idx").on(columns.createdAt), ], ); export const sprints = pgTable( "sprints", { id: serial("id").primaryKey(), name: varchar("name").notNull(), project: integer("project_id") .notNull() .references(() => projects.id, { onDelete: "set null", }), goal: varchar("goal"), startDate: timestamp("start_date", { mode: "string", withTimezone: true, precision: 3 }), endDate: timestamp("end_date", { mode: "string", withTimezone: true, precision: 3 }), status: enum_sprints_status("status").default("planning"), capacity: numeric("capacity", { mode: "number" }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("sprints_project_idx").on(columns.project), index("sprints_updated_at_idx").on(columns.updatedAt), index("sprints_created_at_idx").on(columns.createdAt), ], ); export const releases = pgTable( "releases", { id: serial("id").primaryKey(), name: varchar("name").notNull(), project: integer("project_id") .notNull() .references(() => projects.id, { onDelete: "set null", }), description: jsonb("description"), status: enum_releases_status("status").default("draft"), releaseDate: timestamp("release_date", { mode: "string", withTimezone: true, precision: 3 }), targetVersion: varchar("target_version"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("releases_project_idx").on(columns.project), index("releases_updated_at_idx").on(columns.updatedAt), index("releases_created_at_idx").on(columns.createdAt), ], ); export const labels = pgTable( "labels", { id: serial("id").primaryKey(), name: varchar("name").notNull(), color: varchar("color").default("#6366f1"), project: integer("project_id").references(() => projects.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("labels_project_idx").on(columns.project), index("labels_updated_at_idx").on(columns.updatedAt), index("labels_created_at_idx").on(columns.createdAt), ], ); export const maps = pgTable( "maps", { id: serial("id").primaryKey(), name: varchar("name").notNull(), fileName: varchar("file_name"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("maps_name_idx").on(columns.name), uniqueIndex("maps_file_name_idx").on(columns.fileName), index("maps_updated_at_idx").on(columns.updatedAt), index("maps_created_at_idx").on(columns.createdAt), ], ); export const narrative_events = pgTable( "narrative_events", { id: serial("id").primaryKey(), name: varchar("name").notNull(), summary: varchar("summary").notNull(), flowData: jsonb("flow_data").notNull(), triggers_type: enum_narrative_events_triggers_type("triggers_type").default("manual"), triggers_condition: jsonb("triggers_condition"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("narrative_events_updated_at_idx").on(columns.updatedAt), index("narrative_events_created_at_idx").on(columns.createdAt), ], ); export const mission_files = pgTable( "mission_files", { id: serial("id").primaryKey(), missionFileName: varchar("mission_file_name").notNull(), author: integer("author_id") .notNull() .references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), url: varchar("url"), thumbnailURL: varchar("thumbnail_u_r_l"), filename: varchar("filename"), mimeType: varchar("mime_type"), filesize: numeric("filesize", { mode: "number" }), width: numeric("width", { mode: "number" }), height: numeric("height", { mode: "number" }), focalX: numeric("focal_x", { mode: "number" }), focalY: numeric("focal_y", { mode: "number" }), }, (columns) => [ index("mission_files_author_idx").on(columns.author), index("mission_files_updated_at_idx").on(columns.updatedAt), index("mission_files_created_at_idx").on(columns.createdAt), uniqueIndex("mission_files_filename_idx").on(columns.filename), ], ); export const mod_lists = pgTable( "mod_lists", { id: serial("id").primaryKey(), modlistName: varchar("modlist_name").notNull(), author: integer("author_id") .notNull() .references(() => users.id, { onDelete: "set null", }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), url: varchar("url"), thumbnailURL: varchar("thumbnail_u_r_l"), filename: varchar("filename"), mimeType: varchar("mime_type"), filesize: numeric("filesize", { mode: "number" }), width: numeric("width", { mode: "number" }), height: numeric("height", { mode: "number" }), focalX: numeric("focal_x", { mode: "number" }), focalY: numeric("focal_y", { mode: "number" }), }, (columns) => [ index("mod_lists_author_idx").on(columns.author), index("mod_lists_updated_at_idx").on(columns.updatedAt), index("mod_lists_created_at_idx").on(columns.createdAt), uniqueIndex("mod_lists_filename_idx").on(columns.filename), ], ); export const game_servers = pgTable( "game_servers", { id: serial("id").primaryKey(), serverId: varchar("server_id").notNull(), name: varchar("name").notNull(), status: enum_game_servers_status("status").notNull().default("offline"), lastSeenAt: timestamp("last_seen_at", { mode: "string", withTimezone: true, precision: 3 }), metadata: jsonb("metadata"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("game_servers_server_id_idx").on(columns.serverId), index("game_servers_updated_at_idx").on(columns.updatedAt), index("game_servers_created_at_idx").on(columns.createdAt), ], ); export const arma_sync_events = pgTable( "arma_sync_events", { id: serial("id").primaryKey(), eventId: varchar("event_id").notNull(), server: integer("server_id") .notNull() .references(() => game_servers.id, { onDelete: "set null", }), type: varchar("type").notNull(), occurredAt: timestamp("occurred_at", { mode: "string", withTimezone: true, precision: 3, }).notNull(), payload: jsonb("payload").notNull(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("arma_sync_events_event_id_idx").on(columns.eventId), index("arma_sync_events_server_idx").on(columns.server), index("arma_sync_events_type_idx").on(columns.type), index("arma_sync_events_updated_at_idx").on(columns.updatedAt), index("arma_sync_events_created_at_idx").on(columns.createdAt), ], ); export const arma_commands = pgTable( "arma_commands", { id: serial("id").primaryKey(), commandId: varchar("command_id").notNull(), server: integer("server_id") .notNull() .references(() => game_servers.id, { onDelete: "set null", }), type: varchar("type").notNull(), payload: jsonb("payload").notNull(), status: enum_arma_commands_status("status").notNull().default("queued"), result: jsonb("result"), error: varchar("error"), deliveredAt: timestamp("delivered_at", { mode: "string", withTimezone: true, precision: 3 }), completedAt: timestamp("completed_at", { mode: "string", withTimezone: true, precision: 3 }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("arma_commands_command_id_idx").on(columns.commandId), index("arma_commands_server_idx").on(columns.server), index("arma_commands_updated_at_idx").on(columns.updatedAt), index("arma_commands_created_at_idx").on(columns.createdAt), ], ); export const plugin_ai_instructions_images = pgTable( "plugin_ai_instructions_images", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), image: integer("image_id").references(() => media.id, { onDelete: "set null", }), }, (columns) => [ index("plugin_ai_instructions_images_order_idx").on(columns._order), index("plugin_ai_instructions_images_parent_id_idx").on(columns._parentID), index("plugin_ai_instructions_images_image_idx").on(columns.image), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [plugin_ai_instructions.id], name: "plugin_ai_instructions_images_parent_id_fk", }).onDelete("cascade"), ], ); export const plugin_ai_instructions = pgTable( "plugin_ai_instructions", { id: serial("id").primaryKey(), "schema-path": varchar("schema_path"), "field-type": enum_plugin_ai_instructions_field_type("field_type").default("text"), "relation-to": varchar("relation_to"), "model-id": enum_plugin_ai_instructions_model_id("model_id"), disabled: boolean("disabled").default(false), prompt: varchar("prompt"), system: varchar("system").default( "INSTRUCTIONS:\nYou are a highly skilled and professional blog writer,\nrenowned for crafting engaging and well-organized articles.\nWhen given a title, you meticulously create blogs that are not only\ninformative and accurate but also captivating and beautifully structured.", ), layout: varchar("layout").default( '[paragraph] - Write a concise introduction (2-3 sentences) that outlines the main topic.\n[horizontalrule] - Insert a horizontal rule to separate the introduction from the main content.\n[list] - Create a list with 3-5 items. Each list item should contain:\n a. [heading] - A brief, descriptive heading (up to 5 words)\n b. [paragraph] - A short explanation or elaboration (1-2 sentences)\n[horizontalrule] - Insert another horizontal rule to separate the main content from the conclusion.\n[paragraph] - Compose a brief conclusion (2-3 sentences) summarizing the key points.\n[quote] - Include a relevant quote from a famous person, directly related to the topic. Format: "Quote text." - Author Name', ), "unsloth-text-settings_model": varchar("unsloth_text_settings_model").default( "unsloth/gemma-4-E4B-it-qat-GGUF", ), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ uniqueIndex("plugin_ai_instructions_schema_path_idx").on(columns["schema-path"]), index("plugin_ai_instructions_updated_at_idx").on(columns.updatedAt), index("plugin_ai_instructions_created_at_idx").on(columns.createdAt), ], ); export const payload_mcp_api_keys = pgTable( "payload_mcp_api_keys", { id: serial("id").primaryKey(), user: integer("user_id") .notNull() .references(() => users.id, { onDelete: "set null", }), label: varchar("label"), description: varchar("description"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), enableAPIKey: boolean("enable_a_p_i_key"), apiKey: varchar("api_key"), apiKeyIndex: varchar("api_key_index"), }, (columns) => [ index("payload_mcp_api_keys_user_idx").on(columns.user), index("payload_mcp_api_keys_updated_at_idx").on(columns.updatedAt), index("payload_mcp_api_keys_created_at_idx").on(columns.createdAt), ], ); export const payload_kv = pgTable( "payload_kv", { id: serial("id").primaryKey(), key: varchar("key").notNull(), data: jsonb("data").notNull(), }, (columns) => [uniqueIndex("payload_kv_key_idx").on(columns.key)], ); export const payload_locked_documents = pgTable( "payload_locked_documents", { id: serial("id").primaryKey(), globalSlug: varchar("global_slug"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("payload_locked_documents_global_slug_idx").on(columns.globalSlug), index("payload_locked_documents_updated_at_idx").on(columns.updatedAt), index("payload_locked_documents_created_at_idx").on(columns.createdAt), ], ); export const payload_locked_documents_rels = pgTable( "payload_locked_documents_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), mediaID: integer("media_id"), "game-hard-resourcesID": integer("game_hard_resources_id"), "game-structuresID": integer("game_structures_id"), "game-vehiclesID": integer("game_vehicles_id"), "game-npcsID": integer("game_npcs_id"), "game-event-logsID": integer("game_event_logs_id"), usersID: integer("users_id"), rolesID: integer("roles_id"), ranksID: integer("ranks_id"), profilesID: integer("profiles_id"), awardsID: integer("awards_id"), qualificationsID: integer("qualifications_id"), assignmentsID: integer("assignments_id"), "assignment-transfersID": integer("assignment_transfers_id"), experienceID: integer("experience_id"), "user-notificationsID": integer("user_notifications_id"), evaluationsID: integer("evaluations_id"), missionsID: integer("missions_id"), "mission-attendancesID": integer("mission_attendances_id"), campaignsID: integer("campaigns_id"), factionsID: integer("factions_id"), technologiesID: integer("technologies_id"), assetsID: integer("assets_id"), resourcesID: integer("resources_id"), vehiclesID: integer("vehicles_id"), structuresID: integer("structures_id"), shipmentsID: integer("shipments_id"), "bank-accountsID": integer("bank_accounts_id"), "bank-transactionsID": integer("bank_transactions_id"), "ledger-entriesID": integer("ledger_entries_id"), "locker-storagesID": integer("locker_storages_id"), loadoutsID: integer("loadouts_id"), "market-listingsID": integer("market_listings_id"), "market-negotiationsID": integer("market_negotiations_id"), ticketsID: integer("tickets_id"), "ticket-votesID": integer("ticket_votes_id"), projectsID: integer("projects_id"), sprintsID: integer("sprints_id"), releasesID: integer("releases_id"), labelsID: integer("labels_id"), mapsID: integer("maps_id"), "narrative-eventsID": integer("narrative_events_id"), "mission-filesID": integer("mission_files_id"), "mod-listsID": integer("mod_lists_id"), "game-serversID": integer("game_servers_id"), "arma-sync-eventsID": integer("arma_sync_events_id"), "arma-commandsID": integer("arma_commands_id"), "plugin-ai-instructionsID": integer("plugin_ai_instructions_id"), "payload-mcp-api-keysID": integer("payload_mcp_api_keys_id"), }, (columns) => [ index("payload_locked_documents_rels_order_idx").on(columns.order), index("payload_locked_documents_rels_parent_idx").on(columns.parent), index("payload_locked_documents_rels_path_idx").on(columns.path), index("payload_locked_documents_rels_media_id_idx").on(columns.mediaID), index("payload_locked_documents_rels_game_hard_resources_id_idx").on( columns["game-hard-resourcesID"], ), index("payload_locked_documents_rels_game_structures_id_idx").on(columns["game-structuresID"]), index("payload_locked_documents_rels_game_vehicles_id_idx").on(columns["game-vehiclesID"]), index("payload_locked_documents_rels_game_npcs_id_idx").on(columns["game-npcsID"]), index("payload_locked_documents_rels_game_event_logs_id_idx").on(columns["game-event-logsID"]), index("payload_locked_documents_rels_users_id_idx").on(columns.usersID), index("payload_locked_documents_rels_roles_id_idx").on(columns.rolesID), index("payload_locked_documents_rels_ranks_id_idx").on(columns.ranksID), index("payload_locked_documents_rels_profiles_id_idx").on(columns.profilesID), index("payload_locked_documents_rels_awards_id_idx").on(columns.awardsID), index("payload_locked_documents_rels_qualifications_id_idx").on(columns.qualificationsID), index("payload_locked_documents_rels_assignments_id_idx").on(columns.assignmentsID), index("payload_locked_documents_rels_assignment_transfers_id_idx").on( columns["assignment-transfersID"], ), index("payload_locked_documents_rels_experience_id_idx").on(columns.experienceID), index("payload_locked_documents_rels_user_notifications_id_idx").on( columns["user-notificationsID"], ), index("payload_locked_documents_rels_evaluations_id_idx").on(columns.evaluationsID), index("payload_locked_documents_rels_missions_id_idx").on(columns.missionsID), index("payload_locked_documents_rels_mission_attendances_id_idx").on( columns["mission-attendancesID"], ), index("payload_locked_documents_rels_campaigns_id_idx").on(columns.campaignsID), index("payload_locked_documents_rels_factions_id_idx").on(columns.factionsID), index("payload_locked_documents_rels_technologies_id_idx").on(columns.technologiesID), index("payload_locked_documents_rels_assets_id_idx").on(columns.assetsID), index("payload_locked_documents_rels_resources_id_idx").on(columns.resourcesID), index("payload_locked_documents_rels_vehicles_id_idx").on(columns.vehiclesID), index("payload_locked_documents_rels_structures_id_idx").on(columns.structuresID), index("payload_locked_documents_rels_shipments_id_idx").on(columns.shipmentsID), index("payload_locked_documents_rels_bank_accounts_id_idx").on(columns["bank-accountsID"]), index("payload_locked_documents_rels_bank_transactions_id_idx").on( columns["bank-transactionsID"], ), index("payload_locked_documents_rels_ledger_entries_id_idx").on(columns["ledger-entriesID"]), index("payload_locked_documents_rels_locker_storages_id_idx").on(columns["locker-storagesID"]), index("payload_locked_documents_rels_loadouts_id_idx").on(columns.loadoutsID), index("payload_locked_documents_rels_market_listings_id_idx").on(columns["market-listingsID"]), index("payload_locked_documents_rels_market_negotiations_id_idx").on( columns["market-negotiationsID"], ), index("payload_locked_documents_rels_tickets_id_idx").on(columns.ticketsID), index("payload_locked_documents_rels_ticket_votes_id_idx").on(columns["ticket-votesID"]), index("payload_locked_documents_rels_projects_id_idx").on(columns.projectsID), index("payload_locked_documents_rels_sprints_id_idx").on(columns.sprintsID), index("payload_locked_documents_rels_releases_id_idx").on(columns.releasesID), index("payload_locked_documents_rels_labels_id_idx").on(columns.labelsID), index("payload_locked_documents_rels_maps_id_idx").on(columns.mapsID), index("payload_locked_documents_rels_narrative_events_id_idx").on( columns["narrative-eventsID"], ), index("payload_locked_documents_rels_mission_files_id_idx").on(columns["mission-filesID"]), index("payload_locked_documents_rels_mod_lists_id_idx").on(columns["mod-listsID"]), index("payload_locked_documents_rels_game_servers_id_idx").on(columns["game-serversID"]), index("payload_locked_documents_rels_arma_sync_events_id_idx").on( columns["arma-sync-eventsID"], ), index("payload_locked_documents_rels_arma_commands_id_idx").on(columns["arma-commandsID"]), index("payload_locked_documents_rels_plugin_ai_instructions_id_idx").on( columns["plugin-ai-instructionsID"], ), index("payload_locked_documents_rels_payload_mcp_api_keys_id_idx").on( columns["payload-mcp-api-keysID"], ), foreignKey({ columns: [columns["parent"]], foreignColumns: [payload_locked_documents.id], name: "payload_locked_documents_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["mediaID"]], foreignColumns: [media.id], name: "payload_locked_documents_rels_media_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["game-hard-resourcesID"]], foreignColumns: [game_hard_resources.id], name: "payload_locked_documents_rels_game_hard_resources_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["game-structuresID"]], foreignColumns: [game_structures.id], name: "payload_locked_documents_rels_game_structures_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["game-vehiclesID"]], foreignColumns: [game_vehicles.id], name: "payload_locked_documents_rels_game_vehicles_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["game-npcsID"]], foreignColumns: [game_npcs.id], name: "payload_locked_documents_rels_game_npcs_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["game-event-logsID"]], foreignColumns: [game_event_logs.id], name: "payload_locked_documents_rels_game_event_logs_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["usersID"]], foreignColumns: [users.id], name: "payload_locked_documents_rels_users_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["rolesID"]], foreignColumns: [roles.id], name: "payload_locked_documents_rels_roles_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["ranksID"]], foreignColumns: [ranks.id], name: "payload_locked_documents_rels_ranks_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["profilesID"]], foreignColumns: [profiles.id], name: "payload_locked_documents_rels_profiles_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["awardsID"]], foreignColumns: [awards.id], name: "payload_locked_documents_rels_awards_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["qualificationsID"]], foreignColumns: [qualifications.id], name: "payload_locked_documents_rels_qualifications_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assignmentsID"]], foreignColumns: [assignments.id], name: "payload_locked_documents_rels_assignments_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assignment-transfersID"]], foreignColumns: [assignment_transfers.id], name: "payload_locked_documents_rels_assignment_transfers_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["experienceID"]], foreignColumns: [experience.id], name: "payload_locked_documents_rels_experience_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["user-notificationsID"]], foreignColumns: [user_notifications.id], name: "payload_locked_documents_rels_user_notifications_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["evaluationsID"]], foreignColumns: [evaluations.id], name: "payload_locked_documents_rels_evaluations_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["missionsID"]], foreignColumns: [missions.id], name: "payload_locked_documents_rels_missions_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["mission-attendancesID"]], foreignColumns: [mission_attendances.id], name: "payload_locked_documents_rels_mission_attendances_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["campaignsID"]], foreignColumns: [campaigns.id], name: "payload_locked_documents_rels_campaigns_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["factionsID"]], foreignColumns: [factions.id], name: "payload_locked_documents_rels_factions_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["technologiesID"]], foreignColumns: [technologies.id], name: "payload_locked_documents_rels_technologies_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assetsID"]], foreignColumns: [assets.id], name: "payload_locked_documents_rels_assets_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["resourcesID"]], foreignColumns: [resources.id], name: "payload_locked_documents_rels_resources_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["vehiclesID"]], foreignColumns: [vehicles.id], name: "payload_locked_documents_rels_vehicles_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["structuresID"]], foreignColumns: [structures.id], name: "payload_locked_documents_rels_structures_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["shipmentsID"]], foreignColumns: [shipments.id], name: "payload_locked_documents_rels_shipments_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["bank-accountsID"]], foreignColumns: [bank_accounts.id], name: "payload_locked_documents_rels_bank_accounts_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["bank-transactionsID"]], foreignColumns: [bank_transactions.id], name: "payload_locked_documents_rels_bank_transactions_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["ledger-entriesID"]], foreignColumns: [ledger_entries.id], name: "payload_locked_documents_rels_ledger_entries_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["locker-storagesID"]], foreignColumns: [locker_storages.id], name: "payload_locked_documents_rels_locker_storages_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["loadoutsID"]], foreignColumns: [loadouts.id], name: "payload_locked_documents_rels_loadouts_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["market-listingsID"]], foreignColumns: [market_listings.id], name: "payload_locked_documents_rels_market_listings_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["market-negotiationsID"]], foreignColumns: [market_negotiations.id], name: "payload_locked_documents_rels_market_negotiations_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["ticketsID"]], foreignColumns: [tickets.id], name: "payload_locked_documents_rels_tickets_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["ticket-votesID"]], foreignColumns: [ticket_votes.id], name: "payload_locked_documents_rels_ticket_votes_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["projectsID"]], foreignColumns: [projects.id], name: "payload_locked_documents_rels_projects_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["sprintsID"]], foreignColumns: [sprints.id], name: "payload_locked_documents_rels_sprints_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["releasesID"]], foreignColumns: [releases.id], name: "payload_locked_documents_rels_releases_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["labelsID"]], foreignColumns: [labels.id], name: "payload_locked_documents_rels_labels_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["mapsID"]], foreignColumns: [maps.id], name: "payload_locked_documents_rels_maps_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["narrative-eventsID"]], foreignColumns: [narrative_events.id], name: "payload_locked_documents_rels_narrative_events_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["mission-filesID"]], foreignColumns: [mission_files.id], name: "payload_locked_documents_rels_mission_files_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["mod-listsID"]], foreignColumns: [mod_lists.id], name: "payload_locked_documents_rels_mod_lists_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["game-serversID"]], foreignColumns: [game_servers.id], name: "payload_locked_documents_rels_game_servers_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["arma-sync-eventsID"]], foreignColumns: [arma_sync_events.id], name: "payload_locked_documents_rels_arma_sync_events_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["arma-commandsID"]], foreignColumns: [arma_commands.id], name: "payload_locked_documents_rels_arma_commands_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["plugin-ai-instructionsID"]], foreignColumns: [plugin_ai_instructions.id], name: "payload_locked_documents_rels_plugin_ai_instructions_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["payload-mcp-api-keysID"]], foreignColumns: [payload_mcp_api_keys.id], name: "payload_locked_documents_rels_payload_mcp_api_keys_fk", }).onDelete("cascade"), ], ); export const payload_preferences = pgTable( "payload_preferences", { id: serial("id").primaryKey(), key: varchar("key"), value: jsonb("value"), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("payload_preferences_key_idx").on(columns.key), index("payload_preferences_updated_at_idx").on(columns.updatedAt), index("payload_preferences_created_at_idx").on(columns.createdAt), ], ); export const payload_preferences_rels = pgTable( "payload_preferences_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), usersID: integer("users_id"), "payload-mcp-api-keysID": integer("payload_mcp_api_keys_id"), }, (columns) => [ index("payload_preferences_rels_order_idx").on(columns.order), index("payload_preferences_rels_parent_idx").on(columns.parent), index("payload_preferences_rels_path_idx").on(columns.path), index("payload_preferences_rels_users_id_idx").on(columns.usersID), index("payload_preferences_rels_payload_mcp_api_keys_id_idx").on( columns["payload-mcp-api-keysID"], ), foreignKey({ columns: [columns["parent"]], foreignColumns: [payload_preferences.id], name: "payload_preferences_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["usersID"]], foreignColumns: [users.id], name: "payload_preferences_rels_users_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["payload-mcp-api-keysID"]], foreignColumns: [payload_mcp_api_keys.id], name: "payload_preferences_rels_payload_mcp_api_keys_fk", }).onDelete("cascade"), ], ); export const payload_migrations = pgTable( "payload_migrations", { id: serial("id").primaryKey(), name: varchar("name"), batch: numeric("batch", { mode: "number" }), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }) .defaultNow() .notNull(), }, (columns) => [ index("payload_migrations_updated_at_idx").on(columns.updatedAt), index("payload_migrations_created_at_idx").on(columns.createdAt), ], ); export const game_rules = pgTable( "game_rules", { id: serial("id").primaryKey(), mainCurrency: integer("main_currency_id") .notNull() .references(() => resources.id, { onDelete: "set null", }), proximityThreshold: numeric("proximity_threshold", { mode: "number" }).default(10), gameTickIntervalMinutes: numeric("game_tick_interval_minutes", { mode: "number" }).default(10), lockerGridWidth: numeric("locker_grid_width", { mode: "number" }).default(10), lockerGridHeight: numeric("locker_grid_height", { mode: "number" }).default(6), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }), }, (columns) => [index("game_rules_main_currency_idx").on(columns.mainCurrency)], ); export const game_rules_rels = pgTable( "game_rules_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), assignmentsID: integer("assignments_id"), }, (columns) => [ index("game_rules_rels_order_idx").on(columns.order), index("game_rules_rels_parent_idx").on(columns.parent), index("game_rules_rels_path_idx").on(columns.path), index("game_rules_rels_assignments_id_idx").on(columns.assignmentsID), foreignKey({ columns: [columns["parent"]], foreignColumns: [game_rules.id], name: "game_rules_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["assignmentsID"]], foreignColumns: [assignments.id], name: "game_rules_rels_assignments_fk", }).onDelete("cascade"), ], ); export const shims_shims_targeting_roles = pgTable( "shims_shims_targeting_roles", { order: integer("order").notNull(), parent: varchar("parent_id").notNull(), value: enum_shims_shims_targeting_roles("value"), id: serial("id").primaryKey(), }, (columns) => [ index("shims_shims_targeting_roles_order_idx").on(columns.order), index("shims_shims_targeting_roles_parent_idx").on(columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [shims_shims.id], name: "shims_shims_targeting_roles_parent_fk", }).onDelete("cascade"), ], ); export const shims_shims = pgTable( "shims_shims", { _order: integer("_order").notNull(), _parentID: integer("_parent_id").notNull(), id: varchar("id").primaryKey(), name: varchar("name").notNull(), summary: varchar("summary"), enabled: boolean("enabled").default(false), type: enum_shims_shims_type("type").notNull().default("css"), content: varchar("content").notNull(), targeting_audience: enum_shims_shims_targeting_audience("targeting_audience") .notNull() .default("all"), targeting_percentage: numeric("targeting_percentage", { mode: "number" }).default(50), paths_matchType: enum_shims_shims_paths_match_type("paths_match_type").notNull().default("all"), }, (columns) => [ index("shims_shims_order_idx").on(columns._order), index("shims_shims_parent_id_idx").on(columns._parentID), uniqueIndex("shims_shims_name_idx").on(columns.name), foreignKey({ columns: [columns["_parentID"]], foreignColumns: [shims.id], name: "shims_shims_parent_id_fk", }).onDelete("cascade"), ], ); export const shims = pgTable("shims", { id: serial("id").primaryKey(), updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }), createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }), }); export const shims_texts = pgTable( "shims_texts", { id: serial("id").primaryKey(), order: integer("order").notNull(), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), text: varchar("text"), }, (columns) => [ index("shims_texts_order_parent").on(columns.order, columns.parent), foreignKey({ columns: [columns["parent"]], foreignColumns: [shims.id], name: "shims_texts_parent_fk", }).onDelete("cascade"), ], ); export const shims_rels = pgTable( "shims_rels", { id: serial("id").primaryKey(), order: integer("order"), parent: integer("parent_id").notNull(), path: varchar("path").notNull(), usersID: integer("users_id"), }, (columns) => [ index("shims_rels_order_idx").on(columns.order), index("shims_rels_parent_idx").on(columns.parent), index("shims_rels_path_idx").on(columns.path), index("shims_rels_users_id_idx").on(columns.usersID), foreignKey({ columns: [columns["parent"]], foreignColumns: [shims.id], name: "shims_rels_parent_fk", }).onDelete("cascade"), foreignKey({ columns: [columns["usersID"]], foreignColumns: [users.id], name: "shims_rels_users_fk", }).onDelete("cascade"), ], ); export const relations_media = relations(media, () => ({})); export const relations_game_hard_resources = relations(game_hard_resources, () => ({})); export const relations_game_structures_stored_resources = relations( game_structures_stored_resources, ({ one }) => ({ _parentID: one(game_structures, { fields: [game_structures_stored_resources._parentID], references: [game_structures.id], relationName: "storedResources", }), resource: one(resources, { fields: [game_structures_stored_resources.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_game_structures_void_storage = relations( game_structures_void_storage, ({ one }) => ({ _parentID: one(game_structures, { fields: [game_structures_void_storage._parentID], references: [game_structures.id], relationName: "voidStorage", }), resource: one(resources, { fields: [game_structures_void_storage.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_game_structures = relations(game_structures, ({ one, many }) => ({ type: one(structures, { fields: [game_structures.type], references: [structures.id], relationName: "type", }), faction: one(factions, { fields: [game_structures.faction], references: [factions.id], relationName: "faction", }), storedResources: many(game_structures_stored_resources, { relationName: "storedResources", }), voidStorage: many(game_structures_void_storage, { relationName: "voidStorage", }), })); export const relations_game_vehicles_stored_resources = relations( game_vehicles_stored_resources, ({ one }) => ({ _parentID: one(game_vehicles, { fields: [game_vehicles_stored_resources._parentID], references: [game_vehicles.id], relationName: "storedResources", }), resource: one(resources, { fields: [game_vehicles_stored_resources.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_game_vehicles_void_storage = relations( game_vehicles_void_storage, ({ one }) => ({ _parentID: one(game_vehicles, { fields: [game_vehicles_void_storage._parentID], references: [game_vehicles.id], relationName: "voidStorage", }), resource: one(resources, { fields: [game_vehicles_void_storage.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_game_vehicles = relations(game_vehicles, ({ one, many }) => ({ type: one(vehicles, { fields: [game_vehicles.type], references: [vehicles.id], relationName: "type", }), deployedAt: one(game_structures, { fields: [game_vehicles.deployedAt], references: [game_structures.id], relationName: "deployedAt", }), faction: one(factions, { fields: [game_vehicles.faction], references: [factions.id], relationName: "faction", }), storedResources: many(game_vehicles_stored_resources, { relationName: "storedResources", }), voidStorage: many(game_vehicles_void_storage, { relationName: "voidStorage", }), })); export const relations_game_npcs_rels = relations(game_npcs_rels, ({ one }) => ({ parent: one(game_npcs, { fields: [game_npcs_rels.parent], references: [game_npcs.id], relationName: "_rels", }), assetsID: one(assets, { fields: [game_npcs_rels.assetsID], references: [assets.id], relationName: "assets", }), })); export const relations_game_npcs = relations(game_npcs, ({ one, many }) => ({ location: one(game_structures, { fields: [game_npcs.location], references: [game_structures.id], relationName: "location", }), faction: one(factions, { fields: [game_npcs.faction], references: [factions.id], relationName: "faction", }), _rels: many(game_npcs_rels, { relationName: "_rels", }), })); export const relations_game_event_logs = relations(game_event_logs, ({ one }) => ({ actor: one(users, { fields: [game_event_logs.actor], references: [users.id], relationName: "actor", }), structure: one(game_structures, { fields: [game_event_logs.structure], references: [game_structures.id], relationName: "structure", }), })); export const relations_users_roles = relations(users_roles, ({ one }) => ({ parent: one(users, { fields: [users_roles.parent], references: [users.id], relationName: "roles", }), })); export const relations_users_preferences_notifications_muted_types = relations( users_preferences_notifications_muted_types, ({ one }) => ({ parent: one(users, { fields: [users_preferences_notifications_muted_types.parent], references: [users.id], relationName: "preferences_notifications_mutedTypes", }), }), ); export const relations_users_preferences_discord_muted_types = relations( users_preferences_discord_muted_types, ({ one }) => ({ parent: one(users, { fields: [users_preferences_discord_muted_types.parent], references: [users.id], relationName: "preferences_discord_mutedTypes", }), }), ); export const relations_users_sessions = relations(users_sessions, ({ one }) => ({ _parentID: one(users, { fields: [users_sessions._parentID], references: [users.id], relationName: "sessions", }), })); export const relations_users_rels = relations(users_rels, ({ one }) => ({ parent: one(users, { fields: [users_rels.parent], references: [users.id], relationName: "_rels", }), rolesID: one(roles, { fields: [users_rels.rolesID], references: [roles.id], relationName: "roles", }), })); export const relations_users = relations(users, ({ many }) => ({ roles: many(users_roles, { relationName: "roles", }), preferences_notifications_mutedTypes: many(users_preferences_notifications_muted_types, { relationName: "preferences_notifications_mutedTypes", }), preferences_discord_mutedTypes: many(users_preferences_discord_muted_types, { relationName: "preferences_discord_mutedTypes", }), sessions: many(users_sessions, { relationName: "sessions", }), _rels: many(users_rels, { relationName: "_rels", }), })); export const relations_roles_permissions = relations(roles_permissions, ({ one }) => ({ parent: one(roles, { fields: [roles_permissions.parent], references: [roles.id], relationName: "permissions", }), })); export const relations_roles_rels = relations(roles_rels, ({ one }) => ({ parent: one(roles, { fields: [roles_rels.parent], references: [roles.id], relationName: "_rels", }), rolesID: one(roles, { fields: [roles_rels.rolesID], references: [roles.id], relationName: "roles", }), })); export const relations_roles = relations(roles, ({ many }) => ({ permissions: many(roles_permissions, { relationName: "permissions", }), _rels: many(roles_rels, { relationName: "_rels", }), })); export const relations_ranks = relations(ranks, ({ one }) => ({ insignia: one(media, { fields: [ranks.insignia], references: [media.id], relationName: "insignia", }), })); export const relations_profiles_progression_awards = relations( profiles_progression_awards, ({ one }) => ({ _parentID: one(profiles, { fields: [profiles_progression_awards._parentID], references: [profiles.id], relationName: "progression_awards", }), award: one(awards, { fields: [profiles_progression_awards.award], references: [awards.id], relationName: "award", }), awardedBy: one(profiles, { fields: [profiles_progression_awards.awardedBy], references: [profiles.id], relationName: "awardedBy", }), }), ); export const relations_profiles_rels = relations(profiles_rels, ({ one }) => ({ parent: one(profiles, { fields: [profiles_rels.parent], references: [profiles.id], relationName: "_rels", }), qualificationsID: one(qualifications, { fields: [profiles_rels.qualificationsID], references: [qualifications.id], relationName: "qualifications", }), })); export const relations_profiles = relations(profiles, ({ one, many }) => ({ user: one(users, { fields: [profiles.user], references: [users.id], relationName: "user", }), rank: one(ranks, { fields: [profiles.rank], references: [ranks.id], relationName: "rank", }), progression_awards: many(profiles_progression_awards, { relationName: "progression_awards", }), _rels: many(profiles_rels, { relationName: "_rels", }), })); export const relations_awards_grant_config_allowed_grantor_assignment_types = relations( awards_grant_config_allowed_grantor_assignment_types, ({ one }) => ({ parent: one(awards, { fields: [awards_grant_config_allowed_grantor_assignment_types.parent], references: [awards.id], relationName: "grantConfig_allowedGrantorAssignmentTypes", }), }), ); export const relations_awards_rels = relations(awards_rels, ({ one }) => ({ parent: one(awards, { fields: [awards_rels.parent], references: [awards.id], relationName: "_rels", }), assignmentsID: one(assignments, { fields: [awards_rels.assignmentsID], references: [assignments.id], relationName: "assignments", }), })); export const relations_awards = relations(awards, ({ one, many }) => ({ image: one(media, { fields: [awards.image], references: [media.id], relationName: "image", }), grantConfig_allowedGrantorAssignmentTypes: many( awards_grant_config_allowed_grantor_assignment_types, { relationName: "grantConfig_allowedGrantorAssignmentTypes", }, ), _rels: many(awards_rels, { relationName: "_rels", }), })); export const relations_qualifications = relations(qualifications, () => ({})); export const relations_assignments_rels = relations(assignments_rels, ({ one }) => ({ parent: one(assignments, { fields: [assignments_rels.parent], references: [assignments.id], relationName: "_rels", }), assignmentsID: one(assignments, { fields: [assignments_rels.assignmentsID], references: [assignments.id], relationName: "assignments", }), usersID: one(users, { fields: [assignments_rels.usersID], references: [users.id], relationName: "users", }), })); export const relations_assignments = relations(assignments, ({ one, many }) => ({ leader: one(users, { fields: [assignments.leader], references: [users.id], relationName: "leader", }), _rels: many(assignments_rels, { relationName: "_rels", }), })); export const relations_assignment_transfers = relations(assignment_transfers, ({ one }) => ({ requester: one(users, { fields: [assignment_transfers.requester], references: [users.id], relationName: "requester", }), fromAssignment: one(assignments, { fields: [assignment_transfers.fromAssignment], references: [assignments.id], relationName: "fromAssignment", }), toAssignment: one(assignments, { fields: [assignment_transfers.toAssignment], references: [assignments.id], relationName: "toAssignment", }), fromDecisionBy: one(users, { fields: [assignment_transfers.fromDecisionBy], references: [users.id], relationName: "fromDecisionBy", }), toDecisionBy: one(users, { fields: [assignment_transfers.toDecisionBy], references: [users.id], relationName: "toDecisionBy", }), fromLeaderSnapshot: one(users, { fields: [assignment_transfers.fromLeaderSnapshot], references: [users.id], relationName: "fromLeaderSnapshot", }), toLeaderSnapshot: one(users, { fields: [assignment_transfers.toLeaderSnapshot], references: [users.id], relationName: "toLeaderSnapshot", }), resolvedBy: one(users, { fields: [assignment_transfers.resolvedBy], references: [users.id], relationName: "resolvedBy", }), sourceNotifiedToUserId: one(users, { fields: [assignment_transfers.sourceNotifiedToUserId], references: [users.id], relationName: "sourceNotifiedToUserId", }), destinationNotifiedToUserId: one(users, { fields: [assignment_transfers.destinationNotifiedToUserId], references: [users.id], relationName: "destinationNotifiedToUserId", }), })); export const relations_experience = relations(experience, () => ({})); export const relations_user_notifications = relations(user_notifications, ({ one }) => ({ user: one(users, { fields: [user_notifications.user], references: [users.id], relationName: "user", }), })); export const relations_evaluations = relations(evaluations, ({ one }) => ({ rater: one(users, { fields: [evaluations.rater], references: [users.id], relationName: "rater", }), ratee: one(users, { fields: [evaluations.ratee], references: [users.id], relationName: "ratee", }), mission: one(missions, { fields: [evaluations.mission], references: [missions.id], relationName: "mission", }), })); export const relations_missions_mission_roles_provided_roles = relations( missions_mission_roles_provided_roles, ({ one }) => ({ _parentID: one(missions, { fields: [missions_mission_roles_provided_roles._parentID], references: [missions.id], relationName: "missionRoles_providedRoles", }), minimumRank: one(ranks, { fields: [missions_mission_roles_provided_roles.minimumRank], references: [ranks.id], relationName: "minimumRank", }), }), ); export const relations_missions_briefing = relations(missions_briefing, ({ one }) => ({ _parentID: one(missions, { fields: [missions_briefing._parentID], references: [missions.id], relationName: "briefing", }), })); export const relations_missions_mission_objectives = relations( missions_mission_objectives, ({ one }) => ({ _parentID: one(missions, { fields: [missions_mission_objectives._parentID], references: [missions.id], relationName: "missionObjectives", }), }), ); export const relations_missions_factions_involved = relations( missions_factions_involved, ({ one }) => ({ _parentID: one(missions, { fields: [missions_factions_involved._parentID], references: [missions.id], relationName: "factionsInvolved", }), faction: one(factions, { fields: [missions_factions_involved.faction], references: [factions.id], relationName: "faction", }), }), ); export const relations_missions_logistics_and_support_insertion = relations( missions_logistics_and_support_insertion, ({ one }) => ({ parent: one(missions, { fields: [missions_logistics_and_support_insertion.parent], references: [missions.id], relationName: "logisticsAndSupport_insertion", }), }), ); export const relations_missions_logistics_and_support_extraction = relations( missions_logistics_and_support_extraction, ({ one }) => ({ parent: one(missions, { fields: [missions_logistics_and_support_extraction.parent], references: [missions.id], relationName: "logisticsAndSupport_extraction", }), }), ); export const relations_missions_logistics_and_support_assets_available = relations( missions_logistics_and_support_assets_available, ({ one }) => ({ _parentID: one(missions, { fields: [missions_logistics_and_support_assets_available._parentID], references: [missions.id], relationName: "logisticsAndSupport_assetsAvailable", }), }), ); export const relations_missions_comms_and_docs_frequencies = relations( missions_comms_and_docs_frequencies, ({ one }) => ({ _parentID: one(missions, { fields: [missions_comms_and_docs_frequencies._parentID], references: [missions.id], relationName: "commsAndDocs_frequencies", }), }), ); export const relations_missions_rels = relations(missions_rels, ({ one }) => ({ parent: one(missions, { fields: [missions_rels.parent], references: [missions.id], relationName: "_rels", }), usersID: one(users, { fields: [missions_rels.usersID], references: [users.id], relationName: "users", }), qualificationsID: one(qualifications, { fields: [missions_rels.qualificationsID], references: [qualifications.id], relationName: "qualifications", }), })); export const relations_missions = relations(missions, ({ one, many }) => ({ coverImage: one(media, { fields: [missions.coverImage], references: [media.id], relationName: "coverImage", }), classification_map: one(maps, { fields: [missions.classification_map], references: [maps.id], relationName: "classification_map", }), classification_campaign: one(campaigns, { fields: [missions.classification_campaign], references: [campaigns.id], relationName: "classification_campaign", }), missionRoles_providedRoles: many(missions_mission_roles_provided_roles, { relationName: "missionRoles_providedRoles", }), briefing: many(missions_briefing, { relationName: "briefing", }), missionObjectives: many(missions_mission_objectives, { relationName: "missionObjectives", }), factionsInvolved: many(missions_factions_involved, { relationName: "factionsInvolved", }), gameDetails_gameSetup_missionFile: one(mission_files, { fields: [missions.gameDetails_gameSetup_missionFile], references: [mission_files.id], relationName: "gameDetails_gameSetup_missionFile", }), gameDetails_gameSetup_requiredMods: one(mod_lists, { fields: [missions.gameDetails_gameSetup_requiredMods], references: [mod_lists.id], relationName: "gameDetails_gameSetup_requiredMods", }), logisticsAndSupport_insertion: many(missions_logistics_and_support_insertion, { relationName: "logisticsAndSupport_insertion", }), logisticsAndSupport_extraction: many(missions_logistics_and_support_extraction, { relationName: "logisticsAndSupport_extraction", }), logisticsAndSupport_assetsAvailable: many(missions_logistics_and_support_assets_available, { relationName: "logisticsAndSupport_assetsAvailable", }), commsAndDocs_frequencies: many(missions_comms_and_docs_frequencies, { relationName: "commsAndDocs_frequencies", }), _rels: many(missions_rels, { relationName: "_rels", }), })); export const relations_mission_attendances = relations(mission_attendances, ({ one }) => ({ mission: one(missions, { fields: [mission_attendances.mission], references: [missions.id], relationName: "mission", }), user: one(users, { fields: [mission_attendances.user], references: [users.id], relationName: "user", }), })); export const relations_campaigns = relations(campaigns, ({ one }) => ({ coverImage: one(media, { fields: [campaigns.coverImage], references: [media.id], relationName: "coverImage", }), owner: one(users, { fields: [campaigns.owner], references: [users.id], relationName: "owner", }), })); export const relations_factions_relationships = relations(factions_relationships, ({ one }) => ({ _parentID: one(factions, { fields: [factions_relationships._parentID], references: [factions.id], relationName: "relationships", }), targetFaction: one(factions, { fields: [factions_relationships.targetFaction], references: [factions.id], relationName: "targetFaction", }), })); export const relations_factions_rels = relations(factions_rels, ({ one }) => ({ parent: one(factions, { fields: [factions_rels.parent], references: [factions.id], relationName: "_rels", }), campaignsID: one(campaigns, { fields: [factions_rels.campaignsID], references: [campaigns.id], relationName: "campaigns", }), })); export const relations_factions = relations(factions, ({ one, many }) => ({ relationships: many(factions_relationships, { relationName: "relationships", }), coverImage: one(media, { fields: [factions.coverImage], references: [media.id], relationName: "coverImage", }), _rels: many(factions_rels, { relationName: "_rels", }), })); export const relations_technologies_requirements_prerequisite_technologies = relations( technologies_requirements_prerequisite_technologies, ({ one }) => ({ _parentID: one(technologies, { fields: [technologies_requirements_prerequisite_technologies._parentID], references: [technologies.id], relationName: "requirements_prerequisiteTechnologies", }), }), ); export const relations_technologies_research_costs_resources = relations( technologies_research_costs_resources, ({ one }) => ({ _parentID: one(technologies, { fields: [technologies_research_costs_resources._parentID], references: [technologies.id], relationName: "researchCosts_resources", }), resource: one(resources, { fields: [technologies_research_costs_resources.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_technologies_rels = relations(technologies_rels, ({ one }) => ({ parent: one(technologies, { fields: [technologies_rels.parent], references: [technologies.id], relationName: "_rels", }), technologiesID: one(technologies, { fields: [technologies_rels.technologiesID], references: [technologies.id], relationName: "technologies", }), })); export const relations_technologies = relations(technologies, ({ many }) => ({ requirements_prerequisiteTechnologies: many(technologies_requirements_prerequisite_technologies, { relationName: "requirements_prerequisiteTechnologies", }), researchCosts_resources: many(technologies_research_costs_resources, { relationName: "researchCosts_resources", }), _rels: many(technologies_rels, { relationName: "_rels", }), })); export const relations_assets_skin_configuration_applies_to_asset_types = relations( assets_skin_configuration_applies_to_asset_types, ({ one }) => ({ parent: one(assets, { fields: [assets_skin_configuration_applies_to_asset_types.parent], references: [assets.id], relationName: "Skin Configuration_appliesToAssetTypes", }), }), ); export const relations_assets_crafting_crafting_data_inputs = relations( assets_crafting_crafting_data_inputs, ({ one }) => ({ _parentID: one(assets, { fields: [assets_crafting_crafting_data_inputs._parentID], references: [assets.id], relationName: "crafting_craftingData_inputs", }), }), ); export const relations_assets_crafting_crafting_data_byproducts = relations( assets_crafting_crafting_data_byproducts, ({ one }) => ({ _parentID: one(assets, { fields: [assets_crafting_crafting_data_byproducts._parentID], references: [assets.id], relationName: "crafting_craftingData_byproducts", }), }), ); export const relations_assets_rels = relations(assets_rels, ({ one }) => ({ parent: one(assets, { fields: [assets_rels.parent], references: [assets.id], relationName: "_rels", }), assetsID: one(assets, { fields: [assets_rels.assetsID], references: [assets.id], relationName: "assets", }), technologiesID: one(technologies, { fields: [assets_rels.technologiesID], references: [technologies.id], relationName: "technologies", }), resourcesID: one(resources, { fields: [assets_rels.resourcesID], references: [resources.id], relationName: "resources", }), structuresID: one(structures, { fields: [assets_rels.structuresID], references: [structures.id], relationName: "structures", }), })); export const relations_assets = relations(assets, ({ one, many }) => ({ "Skin Configuration_appliesToAssetTypes": many(assets_skin_configuration_applies_to_asset_types, { relationName: "Skin Configuration_appliesToAssetTypes", }), "Asset Metadata_thumbnail": one(media, { fields: [assets["Asset Metadata_thumbnail"]], references: [media.id], relationName: "Asset Metadata_thumbnail", }), crafting_craftingData_inputs: many(assets_crafting_crafting_data_inputs, { relationName: "crafting_craftingData_inputs", }), crafting_craftingData_byproducts: many(assets_crafting_crafting_data_byproducts, { relationName: "crafting_craftingData_byproducts", }), _rels: many(assets_rels, { relationName: "_rels", }), })); export const relations_resources = relations(resources, ({ one }) => ({ icon: one(media, { fields: [resources.icon], references: [media.id], relationName: "icon", }), })); export const relations_vehicles_category = relations(vehicles_category, ({ one }) => ({ parent: one(vehicles, { fields: [vehicles_category.parent], references: [vehicles.id], relationName: "category", }), })); export const relations_vehicles_materials = relations(vehicles_materials, ({ one }) => ({ _parentID: one(vehicles, { fields: [vehicles_materials._parentID], references: [vehicles.id], relationName: "materials", }), resource: one(resources, { fields: [vehicles_materials.resource], references: [resources.id], relationName: "resource", }), })); export const relations_vehicles_scrap_returns = relations(vehicles_scrap_returns, ({ one }) => ({ _parentID: one(vehicles, { fields: [vehicles_scrap_returns._parentID], references: [vehicles.id], relationName: "scrapReturns", }), resource: one(resources, { fields: [vehicles_scrap_returns.resource], references: [resources.id], relationName: "resource", }), })); export const relations_vehicles_upkeep_costs = relations(vehicles_upkeep_costs, ({ one }) => ({ _parentID: one(vehicles, { fields: [vehicles_upkeep_costs._parentID], references: [vehicles.id], relationName: "upkeepCosts", }), resource: one(resources, { fields: [vehicles_upkeep_costs.resource], references: [resources.id], relationName: "resource", }), })); export const relations_vehicles_allowed_virtual_cargo = relations( vehicles_allowed_virtual_cargo, ({ one }) => ({ _parentID: one(vehicles, { fields: [vehicles_allowed_virtual_cargo._parentID], references: [vehicles.id], relationName: "allowedVirtualCargo", }), }), ); export const relations_vehicles_pylons = relations(vehicles_pylons, ({ one }) => ({ _parentID: one(vehicles, { fields: [vehicles_pylons._parentID], references: [vehicles.id], relationName: "pylons", }), ammoType: one(assets, { fields: [vehicles_pylons.ammoType], references: [assets.id], relationName: "ammoType", }), })); export const relations_vehicles_rels = relations(vehicles_rels, ({ one }) => ({ parent: one(vehicles, { fields: [vehicles_rels.parent], references: [vehicles.id], relationName: "_rels", }), technologiesID: one(technologies, { fields: [vehicles_rels.technologiesID], references: [technologies.id], relationName: "technologies", }), assetsID: one(assets, { fields: [vehicles_rels.assetsID], references: [assets.id], relationName: "assets", }), vehiclesID: one(vehicles, { fields: [vehicles_rels.vehiclesID], references: [vehicles.id], relationName: "vehicles", }), resourcesID: one(resources, { fields: [vehicles_rels.resourcesID], references: [resources.id], relationName: "resources", }), })); export const relations_vehicles = relations(vehicles, ({ one, many }) => ({ image: one(media, { fields: [vehicles.image], references: [media.id], relationName: "image", }), category: many(vehicles_category, { relationName: "category", }), fuel_fuelType: one(resources, { fields: [vehicles.fuel_fuelType], references: [resources.id], relationName: "fuel_fuelType", }), materials: many(vehicles_materials, { relationName: "materials", }), scrapReturns: many(vehicles_scrap_returns, { relationName: "scrapReturns", }), upkeepCosts: many(vehicles_upkeep_costs, { relationName: "upkeepCosts", }), allowedVirtualCargo: many(vehicles_allowed_virtual_cargo, { relationName: "allowedVirtualCargo", }), pylons: many(vehicles_pylons, { relationName: "pylons", }), _rels: many(vehicles_rels, { relationName: "_rels", }), })); export const relations_structures_materials = relations(structures_materials, ({ one }) => ({ _parentID: one(structures, { fields: [structures_materials._parentID], references: [structures.id], relationName: "materials", }), resource: one(resources, { fields: [structures_materials.resource], references: [resources.id], relationName: "resource", }), })); export const relations_structures_resources_in_range = relations( structures_resources_in_range, ({ one }) => ({ _parentID: one(structures, { fields: [structures_resources_in_range._parentID], references: [structures.id], relationName: "resourcesInRange", }), resource: one(resources, { fields: [structures_resources_in_range.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_structures_structures_in_range = relations( structures_structures_in_range, ({ one }) => ({ _parentID: one(structures, { fields: [structures_structures_in_range._parentID], references: [structures.id], relationName: "structuresInRange", }), structure: one(structures, { fields: [structures_structures_in_range.structure], references: [structures.id], relationName: "structure", }), }), ); export const relations_structures_upkeep = relations(structures_upkeep, ({ one }) => ({ _parentID: one(structures, { fields: [structures_upkeep._parentID], references: [structures.id], relationName: "upkeep", }), resource: one(resources, { fields: [structures_upkeep.resource], references: [resources.id], relationName: "resource", }), })); export const relations_structures_auto_generated_resources = relations( structures_auto_generated_resources, ({ one }) => ({ _parentID: one(structures, { fields: [structures_auto_generated_resources._parentID], references: [structures.id], relationName: "autoGeneratedResources", }), resource: one(resources, { fields: [structures_auto_generated_resources.resource], references: [resources.id], relationName: "resource", }), }), ); export const relations_structures_allowed_storage = relations( structures_allowed_storage, ({ one }) => ({ _parentID: one(structures, { fields: [structures_allowed_storage._parentID], references: [structures.id], relationName: "allowedStorage", }), }), ); export const relations_structures_prohibited_storage = relations( structures_prohibited_storage, ({ one }) => ({ _parentID: one(structures, { fields: [structures_prohibited_storage._parentID], references: [structures.id], relationName: "prohibitedStorage", }), }), ); export const relations_structures_rels = relations(structures_rels, ({ one }) => ({ parent: one(structures, { fields: [structures_rels.parent], references: [structures.id], relationName: "_rels", }), technologiesID: one(technologies, { fields: [structures_rels.technologiesID], references: [technologies.id], relationName: "technologies", }), assetsID: one(assets, { fields: [structures_rels.assetsID], references: [assets.id], relationName: "assets", }), vehiclesID: one(vehicles, { fields: [structures_rels.vehiclesID], references: [vehicles.id], relationName: "vehicles", }), resourcesID: one(resources, { fields: [structures_rels.resourcesID], references: [resources.id], relationName: "resources", }), })); export const relations_structures = relations(structures, ({ one, many }) => ({ image: one(media, { fields: [structures.image], references: [media.id], relationName: "image", }), materials: many(structures_materials, { relationName: "materials", }), upgradesInto: one(structures, { fields: [structures.upgradesInto], references: [structures.id], relationName: "upgradesInto", }), resourcesInRange: many(structures_resources_in_range, { relationName: "resourcesInRange", }), structuresInRange: many(structures_structures_in_range, { relationName: "structuresInRange", }), upkeep: many(structures_upkeep, { relationName: "upkeep", }), autoGeneratedResources: many(structures_auto_generated_resources, { relationName: "autoGeneratedResources", }), allowedStorage: many(structures_allowed_storage, { relationName: "allowedStorage", }), prohibitedStorage: many(structures_prohibited_storage, { relationName: "prohibitedStorage", }), _rels: many(structures_rels, { relationName: "_rels", }), })); export const relations_shipments_cargo = relations(shipments_cargo, ({ one }) => ({ _parentID: one(shipments, { fields: [shipments_cargo._parentID], references: [shipments.id], relationName: "cargo", }), })); export const relations_shipments_rels = relations(shipments_rels, ({ one }) => ({ parent: one(shipments, { fields: [shipments_rels.parent], references: [shipments.id], relationName: "_rels", }), resourcesID: one(resources, { fields: [shipments_rels.resourcesID], references: [resources.id], relationName: "resources", }), assetsID: one(assets, { fields: [shipments_rels.assetsID], references: [assets.id], relationName: "assets", }), vehiclesID: one(vehicles, { fields: [shipments_rels.vehiclesID], references: [vehicles.id], relationName: "vehicles", }), })); export const relations_shipments = relations(shipments, ({ one, many }) => ({ origin: one(game_structures, { fields: [shipments.origin], references: [game_structures.id], relationName: "origin", }), destination: one(game_structures, { fields: [shipments.destination], references: [game_structures.id], relationName: "destination", }), transportVehicle: one(game_vehicles, { fields: [shipments.transportVehicle], references: [game_vehicles.id], relationName: "transportVehicle", }), cargo: many(shipments_cargo, { relationName: "cargo", }), createdBy: one(users, { fields: [shipments.createdBy], references: [users.id], relationName: "createdBy", }), _rels: many(shipments_rels, { relationName: "_rels", }), })); export const relations_bank_accounts = relations(bank_accounts, ({ one }) => ({ ownerFaction: one(factions, { fields: [bank_accounts.ownerFaction], references: [factions.id], relationName: "ownerFaction", }), ownerUser: one(users, { fields: [bank_accounts.ownerUser], references: [users.id], relationName: "ownerUser", }), currency: one(resources, { fields: [bank_accounts.currency], references: [resources.id], relationName: "currency", }), })); export const relations_bank_transactions = relations(bank_transactions, ({ one }) => ({ fromAccount: one(bank_accounts, { fields: [bank_transactions.fromAccount], references: [bank_accounts.id], relationName: "fromAccount", }), toAccount: one(bank_accounts, { fields: [bank_transactions.toAccount], references: [bank_accounts.id], relationName: "toAccount", }), actor: one(users, { fields: [bank_transactions.actor], references: [users.id], relationName: "actor", }), reference: one(bank_transactions, { fields: [bank_transactions.reference], references: [bank_transactions.id], relationName: "reference", }), })); export const relations_ledger_entries = relations(ledger_entries, ({ one }) => ({ account: one(bank_accounts, { fields: [ledger_entries.account], references: [bank_accounts.id], relationName: "account", }), transaction: one(bank_transactions, { fields: [ledger_entries.transaction], references: [bank_transactions.id], relationName: "transaction", }), })); export const relations_locker_storages_items_equipment_attachments = relations( locker_storages_items_equipment_attachments, ({ one }) => ({ _parentID: one(locker_storages_items, { fields: [locker_storages_items_equipment_attachments._parentID], references: [locker_storages_items.id], relationName: "equipment_attachments", }), asset: one(assets, { fields: [locker_storages_items_equipment_attachments.asset], references: [assets.id], relationName: "asset", }), }), ); export const relations_locker_storages_items = relations( locker_storages_items, ({ one, many }) => ({ _parentID: one(locker_storages, { fields: [locker_storages_items._parentID], references: [locker_storages.id], relationName: "items", }), asset: one(assets, { fields: [locker_storages_items.asset], references: [assets.id], relationName: "asset", }), equipment_attachments: many(locker_storages_items_equipment_attachments, { relationName: "equipment_attachments", }), equipment_skin: one(assets, { fields: [locker_storages_items.equipment_skin], references: [assets.id], relationName: "equipment_skin", }), }), ); export const relations_locker_storages = relations(locker_storages, ({ one, many }) => ({ ownerUser: one(users, { fields: [locker_storages.ownerUser], references: [users.id], relationName: "ownerUser", }), items: many(locker_storages_items, { relationName: "items", }), })); export const relations_loadouts = relations(loadouts, ({ one }) => ({ ownerUser: one(users, { fields: [loadouts.ownerUser], references: [users.id], relationName: "ownerUser", }), slots_primary: one(assets, { fields: [loadouts.slots_primary], references: [assets.id], relationName: "slots_primary", }), slots_secondary: one(assets, { fields: [loadouts.slots_secondary], references: [assets.id], relationName: "slots_secondary", }), slots_launcher: one(assets, { fields: [loadouts.slots_launcher], references: [assets.id], relationName: "slots_launcher", }), slots_uniform: one(assets, { fields: [loadouts.slots_uniform], references: [assets.id], relationName: "slots_uniform", }), slots_vest: one(assets, { fields: [loadouts.slots_vest], references: [assets.id], relationName: "slots_vest", }), slots_backpack: one(assets, { fields: [loadouts.slots_backpack], references: [assets.id], relationName: "slots_backpack", }), slots_helmet: one(assets, { fields: [loadouts.slots_helmet], references: [assets.id], relationName: "slots_helmet", }), slots_facewear: one(assets, { fields: [loadouts.slots_facewear], references: [assets.id], relationName: "slots_facewear", }), slots_nvg: one(assets, { fields: [loadouts.slots_nvg], references: [assets.id], relationName: "slots_nvg", }), slots_radio: one(assets, { fields: [loadouts.slots_radio], references: [assets.id], relationName: "slots_radio", }), slots_optic: one(assets, { fields: [loadouts.slots_optic], references: [assets.id], relationName: "slots_optic", }), slots_muzzle: one(assets, { fields: [loadouts.slots_muzzle], references: [assets.id], relationName: "slots_muzzle", }), slots_bipod: one(assets, { fields: [loadouts.slots_bipod], references: [assets.id], relationName: "slots_bipod", }), })); export const relations_market_listings = relations(market_listings, ({ one }) => ({ asset: one(assets, { fields: [market_listings.asset], references: [assets.id], relationName: "asset", }), seller: one(users, { fields: [market_listings.seller], references: [users.id], relationName: "seller", }), npc: one(game_npcs, { fields: [market_listings.npc], references: [game_npcs.id], relationName: "npc", }), currency: one(resources, { fields: [market_listings.currency], references: [resources.id], relationName: "currency", }), buyer: one(users, { fields: [market_listings.buyer], references: [users.id], relationName: "buyer", }), })); export const relations_market_negotiations_history = relations( market_negotiations_history, ({ one }) => ({ _parentID: one(market_negotiations, { fields: [market_negotiations_history._parentID], references: [market_negotiations.id], relationName: "history", }), }), ); export const relations_market_negotiations = relations(market_negotiations, ({ one, many }) => ({ listing: one(market_listings, { fields: [market_negotiations.listing], references: [market_listings.id], relationName: "listing", }), buyer: one(users, { fields: [market_negotiations.buyer], references: [users.id], relationName: "buyer", }), history: many(market_negotiations_history, { relationName: "history", }), })); export const relations_tickets_activity = relations(tickets_activity, ({ one }) => ({ _parentID: one(tickets, { fields: [tickets_activity._parentID], references: [tickets.id], relationName: "activity", }), author: one(users, { fields: [tickets_activity.author], references: [users.id], relationName: "author", }), })); export const relations_tickets_edit_history = relations(tickets_edit_history, ({ one }) => ({ _parentID: one(tickets, { fields: [tickets_edit_history._parentID], references: [tickets.id], relationName: "editHistory", }), editedBy: one(users, { fields: [tickets_edit_history.editedBy], references: [users.id], relationName: "editedBy", }), })); export const relations_tickets_rels = relations(tickets_rels, ({ one }) => ({ parent: one(tickets, { fields: [tickets_rels.parent], references: [tickets.id], relationName: "_rels", }), labelsID: one(labels, { fields: [tickets_rels.labelsID], references: [labels.id], relationName: "labels", }), })); export const relations_tickets = relations(tickets, ({ one, many }) => ({ reporter: one(users, { fields: [tickets.reporter], references: [users.id], relationName: "reporter", }), assignee: one(users, { fields: [tickets.assignee], references: [users.id], relationName: "assignee", }), activity: many(tickets_activity, { relationName: "activity", }), editHistory: many(tickets_edit_history, { relationName: "editHistory", }), project: one(projects, { fields: [tickets.project], references: [projects.id], relationName: "project", }), sprint: one(sprints, { fields: [tickets.sprint], references: [sprints.id], relationName: "sprint", }), release: one(releases, { fields: [tickets.release], references: [releases.id], relationName: "release", }), parentTicket: one(tickets, { fields: [tickets.parentTicket], references: [tickets.id], relationName: "parentTicket", }), _rels: many(tickets_rels, { relationName: "_rels", }), })); export const relations_ticket_votes = relations(ticket_votes, ({ one }) => ({ ticket: one(tickets, { fields: [ticket_votes.ticket], references: [tickets.id], relationName: "ticket", }), user: one(users, { fields: [ticket_votes.user], references: [users.id], relationName: "user", }), })); export const relations_projects = relations(projects, ({ one }) => ({ lead: one(users, { fields: [projects.lead], references: [users.id], relationName: "lead", }), defaultAssignee: one(users, { fields: [projects.defaultAssignee], references: [users.id], relationName: "defaultAssignee", }), })); export const relations_sprints = relations(sprints, ({ one }) => ({ project: one(projects, { fields: [sprints.project], references: [projects.id], relationName: "project", }), })); export const relations_releases = relations(releases, ({ one }) => ({ project: one(projects, { fields: [releases.project], references: [projects.id], relationName: "project", }), })); export const relations_labels = relations(labels, ({ one }) => ({ project: one(projects, { fields: [labels.project], references: [projects.id], relationName: "project", }), })); export const relations_maps = relations(maps, () => ({})); export const relations_narrative_events = relations(narrative_events, () => ({})); export const relations_mission_files = relations(mission_files, ({ one }) => ({ author: one(users, { fields: [mission_files.author], references: [users.id], relationName: "author", }), })); export const relations_mod_lists = relations(mod_lists, ({ one }) => ({ author: one(users, { fields: [mod_lists.author], references: [users.id], relationName: "author", }), })); export const relations_game_servers = relations(game_servers, () => ({})); export const relations_arma_sync_events = relations(arma_sync_events, ({ one }) => ({ server: one(game_servers, { fields: [arma_sync_events.server], references: [game_servers.id], relationName: "server", }), })); export const relations_arma_commands = relations(arma_commands, ({ one }) => ({ server: one(game_servers, { fields: [arma_commands.server], references: [game_servers.id], relationName: "server", }), })); export const relations_plugin_ai_instructions_images = relations( plugin_ai_instructions_images, ({ one }) => ({ _parentID: one(plugin_ai_instructions, { fields: [plugin_ai_instructions_images._parentID], references: [plugin_ai_instructions.id], relationName: "images", }), image: one(media, { fields: [plugin_ai_instructions_images.image], references: [media.id], relationName: "image", }), }), ); export const relations_plugin_ai_instructions = relations(plugin_ai_instructions, ({ many }) => ({ images: many(plugin_ai_instructions_images, { relationName: "images", }), })); export const relations_payload_mcp_api_keys = relations(payload_mcp_api_keys, ({ one }) => ({ user: one(users, { fields: [payload_mcp_api_keys.user], references: [users.id], relationName: "user", }), })); export const relations_payload_kv = relations(payload_kv, () => ({})); export const relations_payload_locked_documents_rels = relations( payload_locked_documents_rels, ({ one }) => ({ parent: one(payload_locked_documents, { fields: [payload_locked_documents_rels.parent], references: [payload_locked_documents.id], relationName: "_rels", }), mediaID: one(media, { fields: [payload_locked_documents_rels.mediaID], references: [media.id], relationName: "media", }), "game-hard-resourcesID": one(game_hard_resources, { fields: [payload_locked_documents_rels["game-hard-resourcesID"]], references: [game_hard_resources.id], relationName: "game-hard-resources", }), "game-structuresID": one(game_structures, { fields: [payload_locked_documents_rels["game-structuresID"]], references: [game_structures.id], relationName: "game-structures", }), "game-vehiclesID": one(game_vehicles, { fields: [payload_locked_documents_rels["game-vehiclesID"]], references: [game_vehicles.id], relationName: "game-vehicles", }), "game-npcsID": one(game_npcs, { fields: [payload_locked_documents_rels["game-npcsID"]], references: [game_npcs.id], relationName: "game-npcs", }), "game-event-logsID": one(game_event_logs, { fields: [payload_locked_documents_rels["game-event-logsID"]], references: [game_event_logs.id], relationName: "game-event-logs", }), usersID: one(users, { fields: [payload_locked_documents_rels.usersID], references: [users.id], relationName: "users", }), rolesID: one(roles, { fields: [payload_locked_documents_rels.rolesID], references: [roles.id], relationName: "roles", }), ranksID: one(ranks, { fields: [payload_locked_documents_rels.ranksID], references: [ranks.id], relationName: "ranks", }), profilesID: one(profiles, { fields: [payload_locked_documents_rels.profilesID], references: [profiles.id], relationName: "profiles", }), awardsID: one(awards, { fields: [payload_locked_documents_rels.awardsID], references: [awards.id], relationName: "awards", }), qualificationsID: one(qualifications, { fields: [payload_locked_documents_rels.qualificationsID], references: [qualifications.id], relationName: "qualifications", }), assignmentsID: one(assignments, { fields: [payload_locked_documents_rels.assignmentsID], references: [assignments.id], relationName: "assignments", }), "assignment-transfersID": one(assignment_transfers, { fields: [payload_locked_documents_rels["assignment-transfersID"]], references: [assignment_transfers.id], relationName: "assignment-transfers", }), experienceID: one(experience, { fields: [payload_locked_documents_rels.experienceID], references: [experience.id], relationName: "experience", }), "user-notificationsID": one(user_notifications, { fields: [payload_locked_documents_rels["user-notificationsID"]], references: [user_notifications.id], relationName: "user-notifications", }), evaluationsID: one(evaluations, { fields: [payload_locked_documents_rels.evaluationsID], references: [evaluations.id], relationName: "evaluations", }), missionsID: one(missions, { fields: [payload_locked_documents_rels.missionsID], references: [missions.id], relationName: "missions", }), "mission-attendancesID": one(mission_attendances, { fields: [payload_locked_documents_rels["mission-attendancesID"]], references: [mission_attendances.id], relationName: "mission-attendances", }), campaignsID: one(campaigns, { fields: [payload_locked_documents_rels.campaignsID], references: [campaigns.id], relationName: "campaigns", }), factionsID: one(factions, { fields: [payload_locked_documents_rels.factionsID], references: [factions.id], relationName: "factions", }), technologiesID: one(technologies, { fields: [payload_locked_documents_rels.technologiesID], references: [technologies.id], relationName: "technologies", }), assetsID: one(assets, { fields: [payload_locked_documents_rels.assetsID], references: [assets.id], relationName: "assets", }), resourcesID: one(resources, { fields: [payload_locked_documents_rels.resourcesID], references: [resources.id], relationName: "resources", }), vehiclesID: one(vehicles, { fields: [payload_locked_documents_rels.vehiclesID], references: [vehicles.id], relationName: "vehicles", }), structuresID: one(structures, { fields: [payload_locked_documents_rels.structuresID], references: [structures.id], relationName: "structures", }), shipmentsID: one(shipments, { fields: [payload_locked_documents_rels.shipmentsID], references: [shipments.id], relationName: "shipments", }), "bank-accountsID": one(bank_accounts, { fields: [payload_locked_documents_rels["bank-accountsID"]], references: [bank_accounts.id], relationName: "bank-accounts", }), "bank-transactionsID": one(bank_transactions, { fields: [payload_locked_documents_rels["bank-transactionsID"]], references: [bank_transactions.id], relationName: "bank-transactions", }), "ledger-entriesID": one(ledger_entries, { fields: [payload_locked_documents_rels["ledger-entriesID"]], references: [ledger_entries.id], relationName: "ledger-entries", }), "locker-storagesID": one(locker_storages, { fields: [payload_locked_documents_rels["locker-storagesID"]], references: [locker_storages.id], relationName: "locker-storages", }), loadoutsID: one(loadouts, { fields: [payload_locked_documents_rels.loadoutsID], references: [loadouts.id], relationName: "loadouts", }), "market-listingsID": one(market_listings, { fields: [payload_locked_documents_rels["market-listingsID"]], references: [market_listings.id], relationName: "market-listings", }), "market-negotiationsID": one(market_negotiations, { fields: [payload_locked_documents_rels["market-negotiationsID"]], references: [market_negotiations.id], relationName: "market-negotiations", }), ticketsID: one(tickets, { fields: [payload_locked_documents_rels.ticketsID], references: [tickets.id], relationName: "tickets", }), "ticket-votesID": one(ticket_votes, { fields: [payload_locked_documents_rels["ticket-votesID"]], references: [ticket_votes.id], relationName: "ticket-votes", }), projectsID: one(projects, { fields: [payload_locked_documents_rels.projectsID], references: [projects.id], relationName: "projects", }), sprintsID: one(sprints, { fields: [payload_locked_documents_rels.sprintsID], references: [sprints.id], relationName: "sprints", }), releasesID: one(releases, { fields: [payload_locked_documents_rels.releasesID], references: [releases.id], relationName: "releases", }), labelsID: one(labels, { fields: [payload_locked_documents_rels.labelsID], references: [labels.id], relationName: "labels", }), mapsID: one(maps, { fields: [payload_locked_documents_rels.mapsID], references: [maps.id], relationName: "maps", }), "narrative-eventsID": one(narrative_events, { fields: [payload_locked_documents_rels["narrative-eventsID"]], references: [narrative_events.id], relationName: "narrative-events", }), "mission-filesID": one(mission_files, { fields: [payload_locked_documents_rels["mission-filesID"]], references: [mission_files.id], relationName: "mission-files", }), "mod-listsID": one(mod_lists, { fields: [payload_locked_documents_rels["mod-listsID"]], references: [mod_lists.id], relationName: "mod-lists", }), "game-serversID": one(game_servers, { fields: [payload_locked_documents_rels["game-serversID"]], references: [game_servers.id], relationName: "game-servers", }), "arma-sync-eventsID": one(arma_sync_events, { fields: [payload_locked_documents_rels["arma-sync-eventsID"]], references: [arma_sync_events.id], relationName: "arma-sync-events", }), "arma-commandsID": one(arma_commands, { fields: [payload_locked_documents_rels["arma-commandsID"]], references: [arma_commands.id], relationName: "arma-commands", }), "plugin-ai-instructionsID": one(plugin_ai_instructions, { fields: [payload_locked_documents_rels["plugin-ai-instructionsID"]], references: [plugin_ai_instructions.id], relationName: "plugin-ai-instructions", }), "payload-mcp-api-keysID": one(payload_mcp_api_keys, { fields: [payload_locked_documents_rels["payload-mcp-api-keysID"]], references: [payload_mcp_api_keys.id], relationName: "payload-mcp-api-keys", }), }), ); export const relations_payload_locked_documents = relations( payload_locked_documents, ({ many }) => ({ _rels: many(payload_locked_documents_rels, { relationName: "_rels", }), }), ); export const relations_payload_preferences_rels = relations( payload_preferences_rels, ({ one }) => ({ parent: one(payload_preferences, { fields: [payload_preferences_rels.parent], references: [payload_preferences.id], relationName: "_rels", }), usersID: one(users, { fields: [payload_preferences_rels.usersID], references: [users.id], relationName: "users", }), "payload-mcp-api-keysID": one(payload_mcp_api_keys, { fields: [payload_preferences_rels["payload-mcp-api-keysID"]], references: [payload_mcp_api_keys.id], relationName: "payload-mcp-api-keys", }), }), ); export const relations_payload_preferences = relations(payload_preferences, ({ many }) => ({ _rels: many(payload_preferences_rels, { relationName: "_rels", }), })); export const relations_payload_migrations = relations(payload_migrations, () => ({})); export const relations_game_rules_rels = relations(game_rules_rels, ({ one }) => ({ parent: one(game_rules, { fields: [game_rules_rels.parent], references: [game_rules.id], relationName: "_rels", }), assignmentsID: one(assignments, { fields: [game_rules_rels.assignmentsID], references: [assignments.id], relationName: "assignments", }), })); export const relations_game_rules = relations(game_rules, ({ one, many }) => ({ mainCurrency: one(resources, { fields: [game_rules.mainCurrency], references: [resources.id], relationName: "mainCurrency", }), _rels: many(game_rules_rels, { relationName: "_rels", }), })); export const relations_shims_shims_targeting_roles = relations( shims_shims_targeting_roles, ({ one }) => ({ parent: one(shims_shims, { fields: [shims_shims_targeting_roles.parent], references: [shims_shims.id], relationName: "targeting_roles", }), }), ); export const relations_shims_shims = relations(shims_shims, ({ one, many }) => ({ _parentID: one(shims, { fields: [shims_shims._parentID], references: [shims.id], relationName: "shims", }), targeting_roles: many(shims_shims_targeting_roles, { relationName: "targeting_roles", }), })); export const relations_shims_texts = relations(shims_texts, ({ one }) => ({ parent: one(shims, { fields: [shims_texts.parent], references: [shims.id], relationName: "_texts", }), })); export const relations_shims_rels = relations(shims_rels, ({ one }) => ({ parent: one(shims, { fields: [shims_rels.parent], references: [shims.id], relationName: "_rels", }), usersID: one(users, { fields: [shims_rels.usersID], references: [users.id], relationName: "users", }), })); export const relations_shims = relations(shims, ({ many }) => ({ shims: many(shims_shims, { relationName: "shims", }), _texts: many(shims_texts, { relationName: "_texts", }), _rels: many(shims_rels, { relationName: "_rels", }), })); type DatabaseSchema = { enum_game_vehicles_status: typeof enum_game_vehicles_status; enum_game_event_logs_target_collection: typeof enum_game_event_logs_target_collection; enum_users_roles: typeof enum_users_roles; enum_users_preferences_notifications_muted_types: typeof enum_users_preferences_notifications_muted_types; enum_users_preferences_discord_muted_types: typeof enum_users_preferences_discord_muted_types; enum_users_preferences_display_lead_or_actual: typeof enum_users_preferences_display_lead_or_actual; enum_roles_permissions: typeof enum_roles_permissions; enum_awards_grant_config_allowed_grantor_assignment_types: typeof enum_awards_grant_config_allowed_grantor_assignment_types; enum_awards_type: typeof enum_awards_type; enum_awards_grant_config_recipient_scope: typeof enum_awards_grant_config_recipient_scope; enum_assignments_type: typeof enum_assignments_type; enum_assignment_transfers_status: typeof enum_assignment_transfers_status; enum_assignment_transfers_escalation_reason: typeof enum_assignment_transfers_escalation_reason; enum_assignment_transfers_from_leader_decision: typeof enum_assignment_transfers_from_leader_decision; enum_assignment_transfers_to_leader_decision: typeof enum_assignment_transfers_to_leader_decision; enum_evaluations_kind: typeof enum_evaluations_kind; enum_evaluations_level: typeof enum_evaluations_level; enum_missions_factions_involved_threat_level: typeof enum_missions_factions_involved_threat_level; enum_missions_logistics_and_support_insertion: typeof enum_missions_logistics_and_support_insertion; enum_missions_logistics_and_support_extraction: typeof enum_missions_logistics_and_support_extraction; enum_missions_operation_type: typeof enum_missions_operation_type; enum_missions_classification_mission_type: typeof enum_missions_classification_mission_type; enum_missions_ownership_and_status_status: typeof enum_missions_ownership_and_status_status; enum_missions_ownership_and_status_visibility: typeof enum_missions_ownership_and_status_visibility; enum_missions_civilian_presence: typeof enum_missions_civilian_presence; enum_mission_attendances_response: typeof enum_mission_attendances_response; enum_campaigns_status: typeof enum_campaigns_status; enum_campaigns_campaign_mode: typeof enum_campaigns_campaign_mode; enum_factions_type: typeof enum_factions_type; enum_technologies_approval_status: typeof enum_technologies_approval_status; enum_technologies_type: typeof enum_technologies_type; enum_assets_skin_configuration_applies_to_asset_types: typeof enum_assets_skin_configuration_applies_to_asset_types; enum_assets_approval_status: typeof enum_assets_approval_status; enum_assets_asset_type: typeof enum_assets_asset_type; enum_assets_weapon_configuration_slot_type: typeof enum_assets_weapon_configuration_slot_type; enum_assets_nightvision_configuration_nvg_generation: typeof enum_assets_nightvision_configuration_nvg_generation; enum_assets_market_trading_rarity: typeof enum_assets_market_trading_rarity; enum_resources_approval_status: typeof enum_resources_approval_status; enum_resources_type: typeof enum_resources_type; enum_resources_rarity: typeof enum_resources_rarity; enum_vehicles_category: typeof enum_vehicles_category; enum_vehicles_pylons_pylon_type: typeof enum_vehicles_pylons_pylon_type; enum_vehicles_approval_status: typeof enum_vehicles_approval_status; enum_vehicles_armor_rating: typeof enum_vehicles_armor_rating; enum_structures_approval_status: typeof enum_structures_approval_status; enum_structures_category: typeof enum_structures_category; enum_structures_terrain_type: typeof enum_structures_terrain_type; enum_structures_function_type: typeof enum_structures_function_type; enum_shipments_status: typeof enum_shipments_status; enum_bank_accounts_account_type: typeof enum_bank_accounts_account_type; enum_bank_accounts_status: typeof enum_bank_accounts_status; enum_bank_transactions_type: typeof enum_bank_transactions_type; enum_bank_transactions_status: typeof enum_bank_transactions_status; enum_ledger_entries_type: typeof enum_ledger_entries_type; enum_market_listings_status: typeof enum_market_listings_status; enum_market_negotiations_history_from: typeof enum_market_negotiations_history_from; enum_market_negotiations_status: typeof enum_market_negotiations_status; enum_market_negotiations_proposed_by: typeof enum_market_negotiations_proposed_by; enum_tickets_activity_type: typeof enum_tickets_activity_type; enum_tickets_category: typeof enum_tickets_category; enum_tickets_priority: typeof enum_tickets_priority; enum_tickets_status: typeof enum_tickets_status; enum_tickets_type: typeof enum_tickets_type; enum_tickets_resolution: typeof enum_tickets_resolution; enum_projects_status: typeof enum_projects_status; enum_sprints_status: typeof enum_sprints_status; enum_releases_status: typeof enum_releases_status; enum_narrative_events_triggers_type: typeof enum_narrative_events_triggers_type; enum_game_servers_status: typeof enum_game_servers_status; enum_arma_commands_status: typeof enum_arma_commands_status; enum_plugin_ai_instructions_field_type: typeof enum_plugin_ai_instructions_field_type; enum_plugin_ai_instructions_model_id: typeof enum_plugin_ai_instructions_model_id; enum_shims_shims_targeting_roles: typeof enum_shims_shims_targeting_roles; enum_shims_shims_type: typeof enum_shims_shims_type; enum_shims_shims_targeting_audience: typeof enum_shims_shims_targeting_audience; enum_shims_shims_paths_match_type: typeof enum_shims_shims_paths_match_type; media: typeof media; game_hard_resources: typeof game_hard_resources; game_structures_stored_resources: typeof game_structures_stored_resources; game_structures_void_storage: typeof game_structures_void_storage; game_structures: typeof game_structures; game_vehicles_stored_resources: typeof game_vehicles_stored_resources; game_vehicles_void_storage: typeof game_vehicles_void_storage; game_vehicles: typeof game_vehicles; game_npcs: typeof game_npcs; game_npcs_rels: typeof game_npcs_rels; game_event_logs: typeof game_event_logs; users_roles: typeof users_roles; users_preferences_notifications_muted_types: typeof users_preferences_notifications_muted_types; users_preferences_discord_muted_types: typeof users_preferences_discord_muted_types; users_sessions: typeof users_sessions; users: typeof users; users_rels: typeof users_rels; roles_permissions: typeof roles_permissions; roles: typeof roles; roles_rels: typeof roles_rels; ranks: typeof ranks; profiles_progression_awards: typeof profiles_progression_awards; profiles: typeof profiles; profiles_rels: typeof profiles_rels; awards_grant_config_allowed_grantor_assignment_types: typeof awards_grant_config_allowed_grantor_assignment_types; awards: typeof awards; awards_rels: typeof awards_rels; qualifications: typeof qualifications; assignments: typeof assignments; assignments_rels: typeof assignments_rels; assignment_transfers: typeof assignment_transfers; experience: typeof experience; user_notifications: typeof user_notifications; evaluations: typeof evaluations; missions_mission_roles_provided_roles: typeof missions_mission_roles_provided_roles; missions_briefing: typeof missions_briefing; missions_mission_objectives: typeof missions_mission_objectives; missions_factions_involved: typeof missions_factions_involved; missions_logistics_and_support_insertion: typeof missions_logistics_and_support_insertion; missions_logistics_and_support_extraction: typeof missions_logistics_and_support_extraction; missions_logistics_and_support_assets_available: typeof missions_logistics_and_support_assets_available; missions_comms_and_docs_frequencies: typeof missions_comms_and_docs_frequencies; missions: typeof missions; missions_rels: typeof missions_rels; mission_attendances: typeof mission_attendances; campaigns: typeof campaigns; factions_relationships: typeof factions_relationships; factions: typeof factions; factions_rels: typeof factions_rels; technologies_requirements_prerequisite_technologies: typeof technologies_requirements_prerequisite_technologies; technologies_research_costs_resources: typeof technologies_research_costs_resources; technologies: typeof technologies; technologies_rels: typeof technologies_rels; assets_skin_configuration_applies_to_asset_types: typeof assets_skin_configuration_applies_to_asset_types; assets_crafting_crafting_data_inputs: typeof assets_crafting_crafting_data_inputs; assets_crafting_crafting_data_byproducts: typeof assets_crafting_crafting_data_byproducts; assets: typeof assets; assets_rels: typeof assets_rels; resources: typeof resources; vehicles_category: typeof vehicles_category; vehicles_materials: typeof vehicles_materials; vehicles_scrap_returns: typeof vehicles_scrap_returns; vehicles_upkeep_costs: typeof vehicles_upkeep_costs; vehicles_allowed_virtual_cargo: typeof vehicles_allowed_virtual_cargo; vehicles_pylons: typeof vehicles_pylons; vehicles: typeof vehicles; vehicles_rels: typeof vehicles_rels; structures_materials: typeof structures_materials; structures_resources_in_range: typeof structures_resources_in_range; structures_structures_in_range: typeof structures_structures_in_range; structures_upkeep: typeof structures_upkeep; structures_auto_generated_resources: typeof structures_auto_generated_resources; structures_allowed_storage: typeof structures_allowed_storage; structures_prohibited_storage: typeof structures_prohibited_storage; structures: typeof structures; structures_rels: typeof structures_rels; shipments_cargo: typeof shipments_cargo; shipments: typeof shipments; shipments_rels: typeof shipments_rels; bank_accounts: typeof bank_accounts; bank_transactions: typeof bank_transactions; ledger_entries: typeof ledger_entries; locker_storages_items_equipment_attachments: typeof locker_storages_items_equipment_attachments; locker_storages_items: typeof locker_storages_items; locker_storages: typeof locker_storages; loadouts: typeof loadouts; market_listings: typeof market_listings; market_negotiations_history: typeof market_negotiations_history; market_negotiations: typeof market_negotiations; tickets_activity: typeof tickets_activity; tickets_edit_history: typeof tickets_edit_history; tickets: typeof tickets; tickets_rels: typeof tickets_rels; ticket_votes: typeof ticket_votes; projects: typeof projects; sprints: typeof sprints; releases: typeof releases; labels: typeof labels; maps: typeof maps; narrative_events: typeof narrative_events; mission_files: typeof mission_files; mod_lists: typeof mod_lists; game_servers: typeof game_servers; arma_sync_events: typeof arma_sync_events; arma_commands: typeof arma_commands; plugin_ai_instructions_images: typeof plugin_ai_instructions_images; plugin_ai_instructions: typeof plugin_ai_instructions; payload_mcp_api_keys: typeof payload_mcp_api_keys; payload_kv: typeof payload_kv; payload_locked_documents: typeof payload_locked_documents; payload_locked_documents_rels: typeof payload_locked_documents_rels; payload_preferences: typeof payload_preferences; payload_preferences_rels: typeof payload_preferences_rels; payload_migrations: typeof payload_migrations; game_rules: typeof game_rules; game_rules_rels: typeof game_rules_rels; shims_shims_targeting_roles: typeof shims_shims_targeting_roles; shims_shims: typeof shims_shims; shims: typeof shims; shims_texts: typeof shims_texts; shims_rels: typeof shims_rels; relations_media: typeof relations_media; relations_game_hard_resources: typeof relations_game_hard_resources; relations_game_structures_stored_resources: typeof relations_game_structures_stored_resources; relations_game_structures_void_storage: typeof relations_game_structures_void_storage; relations_game_structures: typeof relations_game_structures; relations_game_vehicles_stored_resources: typeof relations_game_vehicles_stored_resources; relations_game_vehicles_void_storage: typeof relations_game_vehicles_void_storage; relations_game_vehicles: typeof relations_game_vehicles; relations_game_npcs_rels: typeof relations_game_npcs_rels; relations_game_npcs: typeof relations_game_npcs; relations_game_event_logs: typeof relations_game_event_logs; relations_users_roles: typeof relations_users_roles; relations_users_preferences_notifications_muted_types: typeof relations_users_preferences_notifications_muted_types; relations_users_preferences_discord_muted_types: typeof relations_users_preferences_discord_muted_types; relations_users_sessions: typeof relations_users_sessions; relations_users_rels: typeof relations_users_rels; relations_users: typeof relations_users; relations_roles_permissions: typeof relations_roles_permissions; relations_roles_rels: typeof relations_roles_rels; relations_roles: typeof relations_roles; relations_ranks: typeof relations_ranks; relations_profiles_progression_awards: typeof relations_profiles_progression_awards; relations_profiles_rels: typeof relations_profiles_rels; relations_profiles: typeof relations_profiles; relations_awards_grant_config_allowed_grantor_assignment_types: typeof relations_awards_grant_config_allowed_grantor_assignment_types; relations_awards_rels: typeof relations_awards_rels; relations_awards: typeof relations_awards; relations_qualifications: typeof relations_qualifications; relations_assignments_rels: typeof relations_assignments_rels; relations_assignments: typeof relations_assignments; relations_assignment_transfers: typeof relations_assignment_transfers; relations_experience: typeof relations_experience; relations_user_notifications: typeof relations_user_notifications; relations_evaluations: typeof relations_evaluations; relations_missions_mission_roles_provided_roles: typeof relations_missions_mission_roles_provided_roles; relations_missions_briefing: typeof relations_missions_briefing; relations_missions_mission_objectives: typeof relations_missions_mission_objectives; relations_missions_factions_involved: typeof relations_missions_factions_involved; relations_missions_logistics_and_support_insertion: typeof relations_missions_logistics_and_support_insertion; relations_missions_logistics_and_support_extraction: typeof relations_missions_logistics_and_support_extraction; relations_missions_logistics_and_support_assets_available: typeof relations_missions_logistics_and_support_assets_available; relations_missions_comms_and_docs_frequencies: typeof relations_missions_comms_and_docs_frequencies; relations_missions_rels: typeof relations_missions_rels; relations_missions: typeof relations_missions; relations_mission_attendances: typeof relations_mission_attendances; relations_campaigns: typeof relations_campaigns; relations_factions_relationships: typeof relations_factions_relationships; relations_factions_rels: typeof relations_factions_rels; relations_factions: typeof relations_factions; relations_technologies_requirements_prerequisite_technologies: typeof relations_technologies_requirements_prerequisite_technologies; relations_technologies_research_costs_resources: typeof relations_technologies_research_costs_resources; relations_technologies_rels: typeof relations_technologies_rels; relations_technologies: typeof relations_technologies; relations_assets_skin_configuration_applies_to_asset_types: typeof relations_assets_skin_configuration_applies_to_asset_types; relations_assets_crafting_crafting_data_inputs: typeof relations_assets_crafting_crafting_data_inputs; relations_assets_crafting_crafting_data_byproducts: typeof relations_assets_crafting_crafting_data_byproducts; relations_assets_rels: typeof relations_assets_rels; relations_assets: typeof relations_assets; relations_resources: typeof relations_resources; relations_vehicles_category: typeof relations_vehicles_category; relations_vehicles_materials: typeof relations_vehicles_materials; relations_vehicles_scrap_returns: typeof relations_vehicles_scrap_returns; relations_vehicles_upkeep_costs: typeof relations_vehicles_upkeep_costs; relations_vehicles_allowed_virtual_cargo: typeof relations_vehicles_allowed_virtual_cargo; relations_vehicles_pylons: typeof relations_vehicles_pylons; relations_vehicles_rels: typeof relations_vehicles_rels; relations_vehicles: typeof relations_vehicles; relations_structures_materials: typeof relations_structures_materials; relations_structures_resources_in_range: typeof relations_structures_resources_in_range; relations_structures_structures_in_range: typeof relations_structures_structures_in_range; relations_structures_upkeep: typeof relations_structures_upkeep; relations_structures_auto_generated_resources: typeof relations_structures_auto_generated_resources; relations_structures_allowed_storage: typeof relations_structures_allowed_storage; relations_structures_prohibited_storage: typeof relations_structures_prohibited_storage; relations_structures_rels: typeof relations_structures_rels; relations_structures: typeof relations_structures; relations_shipments_cargo: typeof relations_shipments_cargo; relations_shipments_rels: typeof relations_shipments_rels; relations_shipments: typeof relations_shipments; relations_bank_accounts: typeof relations_bank_accounts; relations_bank_transactions: typeof relations_bank_transactions; relations_ledger_entries: typeof relations_ledger_entries; relations_locker_storages_items_equipment_attachments: typeof relations_locker_storages_items_equipment_attachments; relations_locker_storages_items: typeof relations_locker_storages_items; relations_locker_storages: typeof relations_locker_storages; relations_loadouts: typeof relations_loadouts; relations_market_listings: typeof relations_market_listings; relations_market_negotiations_history: typeof relations_market_negotiations_history; relations_market_negotiations: typeof relations_market_negotiations; relations_tickets_activity: typeof relations_tickets_activity; relations_tickets_edit_history: typeof relations_tickets_edit_history; relations_tickets_rels: typeof relations_tickets_rels; relations_tickets: typeof relations_tickets; relations_ticket_votes: typeof relations_ticket_votes; relations_projects: typeof relations_projects; relations_sprints: typeof relations_sprints; relations_releases: typeof relations_releases; relations_labels: typeof relations_labels; relations_maps: typeof relations_maps; relations_narrative_events: typeof relations_narrative_events; relations_mission_files: typeof relations_mission_files; relations_mod_lists: typeof relations_mod_lists; relations_game_servers: typeof relations_game_servers; relations_arma_sync_events: typeof relations_arma_sync_events; relations_arma_commands: typeof relations_arma_commands; relations_plugin_ai_instructions_images: typeof relations_plugin_ai_instructions_images; relations_plugin_ai_instructions: typeof relations_plugin_ai_instructions; relations_payload_mcp_api_keys: typeof relations_payload_mcp_api_keys; relations_payload_kv: typeof relations_payload_kv; relations_payload_locked_documents_rels: typeof relations_payload_locked_documents_rels; relations_payload_locked_documents: typeof relations_payload_locked_documents; relations_payload_preferences_rels: typeof relations_payload_preferences_rels; relations_payload_preferences: typeof relations_payload_preferences; relations_payload_migrations: typeof relations_payload_migrations; relations_game_rules_rels: typeof relations_game_rules_rels; relations_game_rules: typeof relations_game_rules; relations_shims_shims_targeting_roles: typeof relations_shims_shims_targeting_roles; relations_shims_shims: typeof relations_shims_shims; relations_shims_texts: typeof relations_shims_texts; relations_shims_rels: typeof relations_shims_rels; relations_shims: typeof relations_shims; }; declare module "@payloadcms/db-postgres" { export interface GeneratedDatabaseSchema { schema: DatabaseSchema; } }