1
0
Fork 0
polaris-task-force/src/payload-generated-schema.ts
Z8MB1E 1f230c0868 feat(missions): add a per-mission planning map with Arma markers
- New mission-map-markers collection (permission-gated, removed with its
  mission via a Missions beforeDelete hook) plus an opt-in
  classification.planningMapEnabled flag on missions.
- The mission page gains a planning section: place and edit Arma markers
  (icons, ellipses, rectangles, polylines) with debounced saves, an SQF copy
  export, and an Arma grid readout. Everyone who can read the mission sees the
  plan once enabled; editing requires missions:update or mission ownership.
- Base layers come from GET /api/map-features?layers=base, which skips the
  structure, node and shipment queries; marker icons render tinted by color
  exactly like in-game.
- Includes the hand-written migration, the missionMap service lib, server
  actions emitting mission:map-marker-* events, and integration plus e2e
  coverage.
2026-10-04 02:53:21 -04:00

11755 lines
427 KiB
TypeScript

/* 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,
integer,
jsonb,
boolean,
type AnyPgColumn,
text,
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_announcements_buttons_style = pgEnum("enum_announcements_buttons_style", [
"default",
"outline",
"destructive",
]);
export const enum_announcements_variant = pgEnum("enum_announcements_variant", [
"info",
"success",
"warning",
"error",
]);
export const enum_announcements_display_type = pgEnum("enum_announcements_display_type", [
"banner",
"modal",
"dialog",
"toast",
]);
export const enum_announcements_targeting_audience = pgEnum(
"enum_announcements_targeting_audience",
["all", "users", "roles"],
);
export const enum_announcements_paths_match_type = pgEnum("enum_announcements_paths_match_type", [
"all",
"include",
"exclude",
]);
export const enum_game_structures_staff_positions_position_type = pgEnum(
"enum_game_structures_staff_positions_position_type",
["administrative", "technical", "other"],
);
export const enum_game_structures_construction_status = pgEnum(
"enum_game_structures_construction_status",
["awaiting_materials", "building", "complete"],
);
export const enum_game_vehicles_status = pgEnum("enum_game_vehicles_status", [
"idle",
"assigned",
"in_transit",
"damaged",
"destroyed",
]);
export const enum_npc_staffing_position_type = pgEnum("enum_npc_staffing_position_type", [
"labor",
"administrative",
"technical",
"other",
]);
export const enum_npc_staffing_status = pgEnum("enum_npc_staffing_status", [
"active",
"terminated",
]);
export const enum_game_event_logs_target_collection = pgEnum(
"enum_game_event_logs_target_collection",
[
"game-structures",
"game-vehicles",
"game-npcs",
"npc-staffing",
"structures",
"resources",
"assets",
"vehicles",
"factions",
"missions",
"campaigns",
"users",
"technologies",
"maps",
"shipments",
"bank-accounts",
"bank-transactions",
"ledger-entries",
"locker-storages",
"loadouts",
"market-listings",
"market-negotiations",
"market-state",
"evaluations",
"tickets",
"wiki-pages",
"wiki-revisions",
"wiki-templates",
"game-servers",
"assignment-transfers",
"voice-scripts",
"voice-submissions",
"story-beats",
"story-beat-states",
"custom-minefields",
"custom-minefield-scores",
"custom-radio-tests",
"custom-radio-test-scores",
"ribbon-submissions",
"promotion-nominations",
"leadership-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",
"poker:force-ended",
"poker:everyone-left",
"blackjack:force-ended",
"blackjack:everyone-left",
"mission:role-promoted",
],
);
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",
"poker:force-ended",
"poker:everyone-left",
"blackjack:force-ended",
"blackjack:everyone-left",
"mission:role-promoted",
],
);
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",
"mission-role-signups:create",
"mission-role-signups:read",
"mission-role-signups:update",
"mission-role-signups:delete",
"admin:mission-role-signups:manage",
"mission-map-markers:create",
"mission-map-markers:read",
"mission-map-markers:update",
"mission-map-markers:delete",
"admin:mission-map-markers: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",
"tech-categories:create",
"tech-categories:read",
"tech-categories:update",
"tech-categories:delete",
"admin:tech-categories: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",
"market-state:create",
"market-state:read",
"market-state:update",
"market-state:delete",
"admin:market-state: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",
"maps:place",
"admin:maps:manage",
"map-roads:read",
"map-roads:author",
"admin:map-roads:manage",
"map-zones:read",
"map-zones:author",
"admin:map-zones:manage",
"resource-nodes:read",
"resource-nodes:author",
"admin:resource-nodes: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",
"respawn-tickets:create",
"respawn-tickets:read",
"respawn-tickets:update",
"respawn-tickets:delete",
"admin:respawn-tickets: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",
"operation-events:create",
"operation-events:read",
"operation-events:update",
"operation-events:delete",
"admin:operation-events:manage",
"operation-effects:create",
"operation-effects:read",
"operation-effects:update",
"operation-effects:delete",
"admin:operation-effects:manage",
"operation-reservations:create",
"operation-reservations:read",
"operation-reservations:update",
"operation-reservations:delete",
"admin:operation-reservations:manage",
"operation-readiness:create",
"operation-readiness:read",
"operation-readiness:update",
"operation-readiness:delete",
"admin:operation-readiness:manage",
"zone-pressure:create",
"zone-pressure:read",
"zone-pressure:update",
"zone-pressure:delete",
"admin:zone-pressure:manage",
"announcements:create",
"announcements:read",
"announcements:update",
"announcements:delete",
"admin:announcements:manage",
"forms:create",
"forms:read",
"forms:update",
"forms:delete",
"form-submissions:read",
"form-submissions:delete",
"admin:forms:manage",
"admin:form-submissions: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",
"custom-minefields:update",
"custom-minefields:delete",
"custom-minefield-scores:delete",
"custom-radio-tests:update",
"custom-radio-tests:delete",
"custom-radio-test-scores:delete",
]);
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_ribbon_submissions_grantor_types = pgEnum(
"enum_ribbon_submissions_grantor_types",
["division", "squad", "team", "special"],
);
export const enum_ribbon_submissions_status = pgEnum("enum_ribbon_submissions_status", [
"pending",
"approved",
"rejected",
]);
export const enum_ribbon_submissions_recipient_scope = pgEnum(
"enum_ribbon_submissions_recipient_scope",
["same_command", "whitelist", "anyone"],
);
export const enum_promotion_nominations_status = pgEnum("enum_promotion_nominations_status", [
"pending",
"awaiting_superuser",
"approved",
"rejected",
"cancelled",
]);
export const enum_promotion_nominations_leader_decision = pgEnum(
"enum_promotion_nominations_leader_decision",
["pending", "endorsed", "rejected", "not_required"],
);
export const enum_leadership_transfers_status = pgEnum("enum_leadership_transfers_status", [
"pending",
"approved",
"denied",
"cancelled",
]);
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_mission_map_markers_shape = pgEnum("enum_mission_map_markers_shape", [
"icon",
"rectangle",
"ellipse",
"polyline",
]);
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",
"accessory",
"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_transport_mode = pgEnum("enum_vehicles_transport_mode", [
"ground",
"air",
"sea",
]);
export const enum_vehicles_armor_rating = pgEnum("enum_vehicles_armor_rating", [
"none",
"light",
"medium",
"heavy",
"composite",
]);
export const enum_structures_staff_positions_position_type = pgEnum(
"enum_structures_staff_positions_position_type",
["administrative", "technical", "other"],
);
export const enum_structures_module_options_effects_type = pgEnum(
"enum_structures_module_options_effects_type",
["capacity_mass", "production_multiplier", "storage_slots"],
);
export const enum_structures_module_options_category = pgEnum(
"enum_structures_module_options_category",
["production", "logistics", "defense", "utility"],
);
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_aura_effect_type = pgEnum("enum_structures_aura_effect_type", [
"production_multiplier",
"capacity_mass",
]);
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_market_state_item_type = pgEnum("enum_market_state_item_type", [
"resource",
"asset",
]);
export const enum_voice_scripts_status = pgEnum("enum_voice_scripts_status", [
"draft",
"open",
"closed",
]);
export const enum_voice_submissions_status = pgEnum("enum_voice_submissions_status", [
"pending",
"accepted",
"rejected",
]);
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_wiki_pages_category = pgEnum("enum_wiki_pages_category", [
"Campaign",
"World",
"Lore",
"Characters",
"Plot",
"Media",
"Guides",
"Meta",
"Documentation",
]);
export const enum_wiki_revisions_type = pgEnum("enum_wiki_revisions_type", [
"create",
"edit",
"restore",
]);
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_maps_ease_of_access = pgEnum("enum_maps_ease_of_access", [
"easy",
"moderate",
"difficult",
]);
export const enum_maps_basemap_mode = pgEnum("enum_maps_basemap_mode", ["image", "tiles"]);
export const enum_map_roads_surface = pgEnum("enum_map_roads_surface", ["paved", "dirt", "trail"]);
export const enum_map_roads_stroke_style = pgEnum("enum_map_roads_stroke_style", [
"solid",
"dashed",
"dotted",
]);
export const enum_map_zones_type = pgEnum("enum_map_zones_type", [
"water",
"land",
"territory",
"border",
"other",
]);
export const enum_resource_nodes_icon = pgEnum("enum_resource_nodes_icon", [
"marker",
"droplet",
"trees",
"mountain",
"flag",
"star",
"skull",
"home",
"anchor",
"fuel",
]);
export const enum_narrative_events_triggers_type = pgEnum("enum_narrative_events_triggers_type", [
"manual",
"mission_complete",
"timer",
"condition",
]);
export const enum_story_beats_status = pgEnum("enum_story_beats_status", ["draft", "published"]);
export const enum_story_beat_states_reaction = pgEnum("enum_story_beat_states_reaction", [
"like",
"heart",
"salute",
]);
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_supply_boxes_status = pgEnum("enum_supply_boxes_status", ["active", "deleted"]);
export const enum_operation_events_status = pgEnum("enum_operation_events_status", [
"validated",
"rejected",
"dead-letter",
]);
export const enum_operation_effects_effect_type = pgEnum("enum_operation_effects_effect_type", [
"operation.started",
"operation.ended",
"operation.objective-updated",
"operation.extraction-recorded",
"operation.inventory-recorded",
]);
export const enum_operation_effects_status = pgEnum("enum_operation_effects_status", [
"applied",
"pending",
"failed",
"reversed",
]);
export const enum_operation_reservations_status = pgEnum("enum_operation_reservations_status", [
"reserved",
"settled",
"cancelled",
"expired",
"no-show",
]);
export const enum_operation_readiness_subject_type = pgEnum(
"enum_operation_readiness_subject_type",
["user", "role"],
);
export const enum_operation_readiness_nature = pgEnum("enum_operation_readiness_nature", [
"advisory",
]);
export const enum_custom_radio_tests_order = pgEnum("enum_custom_radio_tests_order", [
"fixed",
"shuffled",
]);
export const enum_custom_radio_test_scores_mode = pgEnum("enum_custom_radio_test_scores_mode", [
"sprint",
"watch",
]);
export const enum_forms_confirmation_type = pgEnum("enum_forms_confirmation_type", [
"message",
"redirect",
]);
export const enum_forms_targeting_audience = pgEnum("enum_forms_targeting_audience", [
"all",
"users",
"roles",
"qualifications",
]);
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/Ornith-1.0-9B-GGUF",
]);
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 announcements_buttons = pgTable(
"announcements_buttons",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
label: varchar("label").notNull(),
href: varchar("href"),
style: enum_announcements_buttons_style("style").default("default"),
},
(columns) => [
index("announcements_buttons_order_idx").on(columns._order),
index("announcements_buttons_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [announcements.id],
name: "announcements_buttons_parent_id_fk",
}).onDelete("cascade"),
],
);
export const announcements = pgTable(
"announcements",
{
id: serial("id").primaryKey(),
title: varchar("title").notNull(),
subtitle: varchar("subtitle"),
description: jsonb("description"),
variant: enum_announcements_variant("variant").notNull().default("info"),
displayType: enum_announcements_display_type("display_type").notNull().default("banner"),
enabled: boolean("enabled").default(true),
dismissible: boolean("dismissible").default(true),
activeFrom: timestamp("active_from", { mode: "string", withTimezone: true, precision: 3 }),
activeUntil: timestamp("active_until", { mode: "string", withTimezone: true, precision: 3 }),
targeting_audience: enum_announcements_targeting_audience("targeting_audience")
.notNull()
.default("all"),
paths_matchType: enum_announcements_paths_match_type("paths_match_type")
.notNull()
.default("all"),
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("announcements_updated_at_idx").on(columns.updatedAt),
index("announcements_created_at_idx").on(columns.createdAt),
],
);
export const announcements_texts = pgTable(
"announcements_texts",
{
id: serial("id").primaryKey(),
order: integer("order").notNull(),
parent: integer("parent_id").notNull(),
path: varchar("path").notNull(),
text: varchar("text"),
},
(columns) => [
index("announcements_texts_order_parent").on(columns.order, columns.parent),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [announcements.id],
name: "announcements_texts_parent_fk",
}).onDelete("cascade"),
],
);
export const announcements_rels = pgTable(
"announcements_rels",
{
id: serial("id").primaryKey(),
order: integer("order"),
parent: integer("parent_id").notNull(),
path: varchar("path").notNull(),
usersID: integer("users_id"),
rolesID: integer("roles_id"),
},
(columns) => [
index("announcements_rels_order_idx").on(columns.order),
index("announcements_rels_parent_idx").on(columns.parent),
index("announcements_rels_path_idx").on(columns.path),
index("announcements_rels_users_id_idx").on(columns.usersID),
index("announcements_rels_roles_id_idx").on(columns.rolesID),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [announcements.id],
name: "announcements_rels_parent_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["usersID"]],
foreignColumns: [users.id],
name: "announcements_rels_users_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["rolesID"]],
foreignColumns: [roles.id],
name: "announcements_rels_roles_fk",
}).onDelete("cascade"),
],
);
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_labor_requirements = pgTable(
"game_structures_labor_requirements",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
classification: integer("classification_id")
.notNull()
.references(() => labor_classifications.id, {
onDelete: "set null",
}),
requiredHeadcount: numeric("required_headcount", { mode: "number" }).notNull().default(0),
maxHeadcount: numeric("max_headcount", { mode: "number" }),
enforcedSalary: numeric("enforced_salary", { mode: "number" }),
},
(columns) => [
index("game_structures_labor_requirements_order_idx").on(columns._order),
index("game_structures_labor_requirements_parent_id_idx").on(columns._parentID),
index("game_structures_labor_requirements_classification_idx").on(columns.classification),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_labor_requirements_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_staff_positions = pgTable(
"game_structures_staff_positions",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
positionType: enum_game_structures_staff_positions_position_type("position_type").notNull(),
max: numeric("max", { mode: "number" }),
enforcedSalary: numeric("enforced_salary", { mode: "number" }),
},
(columns) => [
index("game_structures_staff_positions_order_idx").on(columns._order),
index("game_structures_staff_positions_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_staff_positions_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_production_inputs = pgTable(
"game_structures_production_inputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("game_structures_production_inputs_order_idx").on(columns._order),
index("game_structures_production_inputs_parent_id_idx").on(columns._parentID),
index("game_structures_production_inputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_production_inputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_production_outputs = pgTable(
"game_structures_production_outputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("game_structures_production_outputs_order_idx").on(columns._order),
index("game_structures_production_outputs_parent_id_idx").on(columns._parentID),
index("game_structures_production_outputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_production_outputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_installed_modules = pgTable(
"game_structures_installed_modules",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
installedAt: timestamp("installed_at", { mode: "string", withTimezone: true, precision: 3 }),
},
(columns) => [
index("game_structures_installed_modules_order_idx").on(columns._order),
index("game_structures_installed_modules_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_installed_modules_parent_id_fk",
}).onDelete("cascade"),
],
);
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",
}),
map: integer("map_id").references(() => maps.id, {
onDelete: "set null",
}),
constructionStatus:
enum_game_structures_construction_status("construction_status").default("complete"),
constructionStartedAt: timestamp("construction_started_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
constructionCompletesAt: timestamp("construction_completes_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
maintenanceCost: numeric("maintenance_cost", { mode: "number" }).default(0),
productionPaused: boolean("production_paused").default(false),
lastProductionAt: timestamp("last_production_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
productionStallReason: varchar("production_stall_reason"),
coordinates: geometryColumn("coordinates"),
labelVisible: boolean("label_visible").default(true),
labelPriority: numeric("label_priority", { mode: "number" }).default(0),
parentStructure: integer("parent_structure_id").references(
(): AnyPgColumn => game_structures.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("game_structures_type_idx").on(columns.type),
index("game_structures_faction_idx").on(columns.faction),
index("game_structures_map_idx").on(columns.map),
index("game_structures_parent_structure_idx").on(columns.parentStructure),
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 npc_staffing = pgTable(
"npc_staffing",
{
id: serial("id").primaryKey(),
npc: integer("npc_id").references(() => game_npcs.id, {
onDelete: "set null",
}),
structure: integer("structure_id")
.notNull()
.references(() => game_structures.id, {
onDelete: "set null",
}),
positionType: enum_npc_staffing_position_type("position_type").notNull().default("labor"),
positionTitle: varchar("position_title").notNull(),
headcount: numeric("headcount", { mode: "number" }).default(1),
laborClassification: integer("labor_classification_id").references(
() => labor_classifications.id,
{
onDelete: "set null",
},
),
salary: numeric("salary", { mode: "number" }).default(0),
status: enum_npc_staffing_status("status").default("active"),
hiredAt: timestamp("hired_at", { mode: "string", withTimezone: true, precision: 3 }),
terminatedAt: timestamp("terminated_at", { mode: "string", withTimezone: true, precision: 3 }),
notes: varchar("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("npc_staffing_npc_idx").on(columns.npc),
index("npc_staffing_structure_idx").on(columns.structure),
index("npc_staffing_labor_classification_idx").on(columns.laborClassification),
index("npc_staffing_updated_at_idx").on(columns.updatedAt),
index("npc_staffing_created_at_idx").on(columns.createdAt),
],
);
export const labor_classifications = pgTable(
"labor_classifications",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
key: varchar("key").notNull(),
defaultUnitSalary: numeric("default_unit_salary", { mode: "number" }),
description: varchar("description"),
buildEfficiency: numeric("build_efficiency", { mode: "number" }).default(1),
availableHeadcount: numeric("available_headcount", { 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) => [
uniqueIndex("labor_classifications_name_idx").on(columns.name),
uniqueIndex("labor_classifications_key_idx").on(columns.key),
index("labor_classifications_updated_at_idx").on(columns.updatedAt),
index("labor_classifications_created_at_idx").on(columns.createdAt),
],
);
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),
preferences_dashboard_layout: jsonb("preferences_dashboard_layout"),
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",
}),
promotionCeiling: integer("promotion_ceiling_id").references((): AnyPgColumn => ranks.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_promotion_ceiling_idx").on(columns.promotionCeiling),
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"),
upgradedFrom: integer("upgraded_from_id").references(() => awards.id, {
onDelete: "set null",
}),
upgradedAt: timestamp("upgraded_at", { mode: "string", withTimezone: true, precision: 3 }),
},
(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),
index("profiles_progression_awards_upgraded_from_idx").on(columns.upgradedFrom),
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: jsonb("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),
progression_minigames_radioTraffic_gamesPlayed: numeric(
"progression_minigames_radio_traffic_games_played",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_totalMessages: numeric(
"progression_minigames_radio_traffic_total_messages",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_incorrectMessages: numeric(
"progression_minigames_radio_traffic_incorrect_messages",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_bestScore: numeric(
"progression_minigames_radio_traffic_best_score",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_bestAccuracy: numeric(
"progression_minigames_radio_traffic_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_bestSprintTimeMs: numeric(
"progression_minigames_radio_traffic_best_sprint_time_ms",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_sprintGamesPlayed: numeric(
"progression_minigames_radio_traffic_sprint_games_played",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_sprintTotalMessages: numeric(
"progression_minigames_radio_traffic_sprint_total_messages",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_sprintIncorrectMessages: numeric(
"progression_minigames_radio_traffic_sprint_incorrect_messages",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_sprintBestScore: numeric(
"progression_minigames_radio_traffic_sprint_best_score",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_sprintBestAccuracy: numeric(
"progression_minigames_radio_traffic_sprint_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_watchGamesPlayed: numeric(
"progression_minigames_radio_traffic_watch_games_played",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_watchTotalMessages: numeric(
"progression_minigames_radio_traffic_watch_total_messages",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_watchIncorrectMessages: numeric(
"progression_minigames_radio_traffic_watch_incorrect_messages",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_watchBestScore: numeric(
"progression_minigames_radio_traffic_watch_best_score",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_watchBestAccuracy: numeric(
"progression_minigames_radio_traffic_watch_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_radioTraffic_xpEarned: numeric(
"progression_minigames_radio_traffic_xp_earned",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_gamesPlayed: numeric(
"progression_minigames_aim_trainer_games_played",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_bestScore: numeric(
"progression_minigames_aim_trainer_best_score",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_recruitBestScore: numeric(
"progression_minigames_aim_trainer_recruit_best_score",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_veteranBestScore: numeric(
"progression_minigames_aim_trainer_veteran_best_score",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_eliteBestScore: numeric(
"progression_minigames_aim_trainer_elite_best_score",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_recruitBestAccuracy: numeric(
"progression_minigames_aim_trainer_recruit_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_veteranBestAccuracy: numeric(
"progression_minigames_aim_trainer_veteran_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_eliteBestAccuracy: numeric(
"progression_minigames_aim_trainer_elite_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_aimTrainer_xpEarned: numeric(
"progression_minigames_aim_trainer_xp_earned",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_gamesPlayed: numeric(
"progression_minigames_opord_recall_games_played",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_bestScore: numeric(
"progression_minigames_opord_recall_best_score",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_bestAccuracy: numeric(
"progression_minigames_opord_recall_best_accuracy",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_recruitBestScore: numeric(
"progression_minigames_opord_recall_recruit_best_score",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_veteranBestScore: numeric(
"progression_minigames_opord_recall_veteran_best_score",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_eliteBestScore: numeric(
"progression_minigames_opord_recall_elite_best_score",
{ mode: "number" },
).default(0),
progression_minigames_opordRecall_recruitBestTimeMs: numeric(
"progression_minigames_opord_recall_recruit_best_time_ms",
{ mode: "number" },
),
progression_minigames_opordRecall_veteranBestTimeMs: numeric(
"progression_minigames_opord_recall_veteran_best_time_ms",
{ mode: "number" },
),
progression_minigames_opordRecall_eliteBestTimeMs: numeric(
"progression_minigames_opord_recall_elite_best_time_ms",
{ mode: "number" },
),
progression_minigames_opordRecall_xpEarned: numeric(
"progression_minigames_opord_recall_xp_earned",
{ mode: "number" },
).default(0),
progression_minigames_poker_gamesPlayed: numeric("progression_minigames_poker_games_played", {
mode: "number",
}).default(0),
progression_minigames_poker_wins: numeric("progression_minigames_poker_wins", {
mode: "number",
}).default(0),
progression_minigames_poker_secondPlaces: numeric("progression_minigames_poker_second_places", {
mode: "number",
}).default(0),
progression_minigames_poker_thirdPlaces: numeric("progression_minigames_poker_third_places", {
mode: "number",
}).default(0),
progression_minigames_poker_fourthPlaces: numeric("progression_minigames_poker_fourth_places", {
mode: "number",
}).default(0),
progression_minigames_poker_handsWon: numeric("progression_minigames_poker_hands_won", {
mode: "number",
}).default(0),
progression_minigames_poker_bestScore: numeric("progression_minigames_poker_best_score", {
mode: "number",
}).default(0),
progression_minigames_poker_xpEarned: numeric("progression_minigames_poker_xp_earned", {
mode: "number",
}).default(0),
progression_minigames_blackjack_gamesPlayed: numeric(
"progression_minigames_blackjack_games_played",
{ mode: "number" },
).default(0),
progression_minigames_blackjack_roundsWon: numeric(
"progression_minigames_blackjack_rounds_won",
{ mode: "number" },
).default(0),
progression_minigames_blackjack_blackjacksHit: numeric(
"progression_minigames_blackjack_blackjacks_hit",
{ mode: "number" },
).default(0),
progression_minigames_blackjack_bestScore: numeric(
"progression_minigames_blackjack_best_score",
{ mode: "number" },
).default(0),
progression_minigames_blackjack_xpEarned: numeric("progression_minigames_blackjack_xp_earned", {
mode: "number",
}).default(0),
progression_chipBank: numeric("progression_chip_bank", { mode: "number" }).default(0),
progression_chipBankRefilledAt: timestamp("progression_chip_bank_refilled_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
progression_voiceover_xpEarned: numeric("progression_voiceover_xp_earned", {
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"),
backgroundImage: integer("background_image_id").references(() => media.id, {
onDelete: "set null",
}),
medalDesign: jsonb("medal_design"),
advancement_seriesKey: varchar("advancement_series_key"),
advancement_tier: numeric("advancement_tier", { mode: "number" }),
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_background_image_idx").on(columns.backgroundImage),
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 ribbon_submissions_grantor_types = pgTable(
"ribbon_submissions_grantor_types",
{
order: integer("order").notNull(),
parent: integer("parent_id").notNull(),
value: enum_ribbon_submissions_grantor_types("value"),
id: serial("id").primaryKey(),
},
(columns) => [
index("ribbon_submissions_grantor_types_order_idx").on(columns.order),
index("ribbon_submissions_grantor_types_parent_idx").on(columns.parent),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [ribbon_submissions.id],
name: "ribbon_submissions_grantor_types_parent_fk",
}).onDelete("cascade"),
],
);
export const ribbon_submissions = pgTable(
"ribbon_submissions",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
description: varchar("description").notNull(),
design: jsonb("design").notNull(),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
status: enum_ribbon_submissions_status("status").notNull().default("pending"),
reviewNote: varchar("review_note"),
reviewedBy: integer("reviewed_by_id").references(() => users.id, {
onDelete: "set null",
}),
reviewedAt: timestamp("reviewed_at", { mode: "string", withTimezone: true, precision: 3 }),
award: integer("award_id").references(() => awards.id, {
onDelete: "set null",
}),
awardXp: numeric("award_xp", { mode: "number" }),
recipientScope:
enum_ribbon_submissions_recipient_scope("recipient_scope").default("same_command"),
maxGrantsPerGrantor: numeric("max_grants_per_grantor", { 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("ribbon_submissions_user_idx").on(columns.user),
index("ribbon_submissions_reviewed_by_idx").on(columns.reviewedBy),
index("ribbon_submissions_award_idx").on(columns.award),
index("ribbon_submissions_updated_at_idx").on(columns.updatedAt),
index("ribbon_submissions_created_at_idx").on(columns.createdAt),
],
);
export const promotion_nominations = pgTable(
"promotion_nominations",
{
id: serial("id").primaryKey(),
nominee: integer("nominee_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
nominator: integer("nominator_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
accolades: varchar("accolades").notNull(),
status: enum_promotion_nominations_status("status").notNull().default("pending"),
leaderDecision:
enum_promotion_nominations_leader_decision("leader_decision").default("pending"),
leaderDecisionBy: integer("leader_decision_by_id").references(() => users.id, {
onDelete: "set null",
}),
leaderDecidedAt: timestamp("leader_decided_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
leaderNote: varchar("leader_note"),
reviewNote: varchar("review_note"),
reviewedBy: integer("reviewed_by_id").references(() => users.id, {
onDelete: "set null",
}),
reviewedAt: timestamp("reviewed_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) => [
index("promotion_nominations_nominee_idx").on(columns.nominee),
index("promotion_nominations_nominator_idx").on(columns.nominator),
index("promotion_nominations_leader_decision_by_idx").on(columns.leaderDecisionBy),
index("promotion_nominations_reviewed_by_idx").on(columns.reviewedBy),
index("promotion_nominations_updated_at_idx").on(columns.updatedAt),
index("promotion_nominations_created_at_idx").on(columns.createdAt),
],
);
export const leadership_transfers = pgTable(
"leadership_transfers",
{
id: serial("id").primaryKey(),
initiator: integer("initiator_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
subject: integer("subject_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",
}),
reason: varchar("reason"),
status: enum_leadership_transfers_status("status").notNull().default("pending"),
reviewNote: varchar("review_note"),
reviewedBy: integer("reviewed_by_id").references(() => users.id, {
onDelete: "set null",
}),
resolvedAt: timestamp("resolved_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) => [
index("leadership_transfers_initiator_idx").on(columns.initiator),
index("leadership_transfers_subject_idx").on(columns.subject),
index("leadership_transfers_from_assignment_idx").on(columns.fromAssignment),
index("leadership_transfers_to_assignment_idx").on(columns.toAssignment),
index("leadership_transfers_reviewed_by_idx").on(columns.reviewedBy),
index("leadership_transfers_updated_at_idx").on(columns.updatedAt),
index("leadership_transfers_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(),
description: jsonb("description"),
missionCritical: boolean("mission_critical").default(true),
minimumRank: integer("minimum_rank_id").references(() => ranks.id, {
onDelete: "set null",
}),
slots: numeric("slots", { mode: "number" }).default(1),
},
(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"),
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,
}),
discordModlistHash: varchar("discord_modlist_hash"),
discordCancelledAt: timestamp("discord_cancelled_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
evaluationRemindersSentAt: timestamp("evaluation_reminders_sent_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
readyReminderWebSentAt: timestamp("ready_reminder_web_sent_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
readyReminderDmSentAt: timestamp("ready_reminder_dm_sent_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
imminentReminderSentAt: timestamp("imminent_reminder_sent_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
ticketsSettledAt: timestamp("tickets_settled_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
createdBy: integer("created_by_id").references(() => users.id, {
onDelete: "set null",
}),
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_planningMapEnabled: boolean("classification_planning_map_enabled").default(
false,
),
classification_missionType: enum_missions_classification_mission_type(
"classification_mission_type",
)
.notNull()
.default("Zeus"),
classification_campaign: integer("classification_campaign_id").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_created_by_idx").on(columns.createdBy),
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 mission_role_signups = pgTable(
"mission_role_signups",
{
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",
}),
roleIndex: numeric("role_index", { mode: "number" }).notNull(),
roleNameSnapshot: varchar("role_name_snapshot"),
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_role_signups_mission_idx").on(columns.mission),
index("mission_role_signups_user_idx").on(columns.user),
index("mission_role_signups_updated_at_idx").on(columns.updatedAt),
index("mission_role_signups_created_at_idx").on(columns.createdAt),
],
);
export const mission_map_markers = pgTable(
"mission_map_markers",
{
id: serial("id").primaryKey(),
mission: integer("mission_id")
.notNull()
.references(() => missions.id, {
onDelete: "set null",
}),
shape: enum_mission_map_markers_shape("shape").notNull().default("icon"),
markerType: varchar("marker_type"),
color: varchar("color").notNull().default("Default"),
brush: varchar("brush"),
text: varchar("text"),
position: jsonb("position").notNull(),
sizeA: numeric("size_a", { mode: "number" }).default(1),
sizeB: numeric("size_b", { mode: "number" }).default(1),
direction: numeric("direction", { mode: "number" }).default(0),
alpha: numeric("alpha", { mode: "number" }).default(1),
points: jsonb("points"),
createdBy: integer("created_by_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("mission_map_markers_mission_idx").on(columns.mission),
index("mission_map_markers_created_by_idx").on(columns.createdBy),
index("mission_map_markers_updated_at_idx").on(columns.updatedAt),
index("mission_map_markers_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(),
category: integer("category_id").references(() => tech_categories.id, {
onDelete: "set null",
}),
treePosition_x: numeric("tree_position_x", { mode: "number" }),
treePosition_y: numeric("tree_position_y", { mode: "number" }),
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_category_idx").on(columns.category),
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 tech_categories = pgTable(
"tech_categories",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
position: numeric("position", { mode: "number" }).notNull().default(1),
color: varchar("color"),
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("tech_categories_name_idx").on(columns.name),
index("tech_categories_updated_at_idx").on(columns.updatedAt),
index("tech_categories_created_at_idx").on(columns.createdAt),
],
);
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" },
),
economy_enabled: boolean("economy_enabled").default(true),
economy_baselineSupply: numeric("economy_baseline_supply", { mode: "number" }).default(100),
economy_baselineDemand: numeric("economy_baseline_demand", { mode: "number" }).default(50),
economy_maxModifier: numeric("economy_max_modifier", { 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"),
economy_enabled: boolean("economy_enabled").default(true),
economy_baselineSupply: numeric("economy_baseline_supply", { mode: "number" }).default(100),
economy_baselineDemand: numeric("economy_baseline_demand", { mode: "number" }).default(50),
economy_maxModifier: numeric("economy_max_modifier", { mode: "number" }),
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" }),
transportMode: enum_vehicles_transport_mode("transport_mode").notNull().default("ground"),
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_labor_requirements = pgTable(
"structures_labor_requirements",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
classification: integer("classification_id")
.notNull()
.references(() => labor_classifications.id, {
onDelete: "set null",
}),
requiredHeadcount: numeric("required_headcount", { mode: "number" }).notNull().default(0),
maxHeadcount: numeric("max_headcount", { mode: "number" }),
enforcedSalary: numeric("enforced_salary", { mode: "number" }),
},
(columns) => [
index("structures_labor_requirements_order_idx").on(columns._order),
index("structures_labor_requirements_parent_id_idx").on(columns._parentID),
index("structures_labor_requirements_classification_idx").on(columns.classification),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_labor_requirements_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_staff_positions = pgTable(
"structures_staff_positions",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
positionType: enum_structures_staff_positions_position_type("position_type").notNull(),
max: numeric("max", { mode: "number" }),
enforcedSalary: numeric("enforced_salary", { mode: "number" }),
},
(columns) => [
index("structures_staff_positions_order_idx").on(columns._order),
index("structures_staff_positions_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_staff_positions_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_production_inputs = pgTable(
"structures_production_inputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("structures_production_inputs_order_idx").on(columns._order),
index("structures_production_inputs_parent_id_idx").on(columns._parentID),
index("structures_production_inputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_production_inputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_production_outputs = pgTable(
"structures_production_outputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("structures_production_outputs_order_idx").on(columns._order),
index("structures_production_outputs_parent_id_idx").on(columns._parentID),
index("structures_production_outputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_production_outputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_module_options_effects = pgTable(
"structures_module_options_effects",
{
_order: integer("_order").notNull(),
_parentID: varchar("_parent_id").notNull(),
id: varchar("id").primaryKey(),
type: enum_structures_module_options_effects_type("type").notNull(),
value: numeric("value", { mode: "number" }).notNull(),
},
(columns) => [
index("structures_module_options_effects_order_idx").on(columns._order),
index("structures_module_options_effects_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures_module_options.id],
name: "structures_module_options_effects_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_module_options_materials = pgTable(
"structures_module_options_materials",
{
_order: integer("_order").notNull(),
_parentID: varchar("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amount: numeric("amount", { mode: "number" }).notNull(),
},
(columns) => [
index("structures_module_options_materials_order_idx").on(columns._order),
index("structures_module_options_materials_parent_id_idx").on(columns._parentID),
index("structures_module_options_materials_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures_module_options.id],
name: "structures_module_options_materials_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_module_options = pgTable(
"structures_module_options",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
category: enum_structures_module_options_category("category").notNull().default("utility"),
description: varchar("description"),
},
(columns) => [
index("structures_module_options_order_idx").on(columns._order),
index("structures_module_options_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_module_options_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(),
constructionDurationMinutes: numeric("construction_duration_minutes", {
mode: "number",
}).notNull(),
constructionCrewRequired: numeric("construction_crew_required", { mode: "number" }).default(0),
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" }),
maintenanceCost: numeric("maintenance_cost", { mode: "number" }).default(0),
moduleSlots: numeric("module_slots", { mode: "number" }).default(0),
aura_effectType: enum_structures_aura_effect_type("aura_effect_type"),
aura_value: numeric("aura_value", { mode: "number" }),
aura_rangeMeters: numeric("aura_range_meters", { mode: "number" }).default(0),
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",
}),
map: integer("map_id").references(() => maps.id, {
onDelete: "set null",
}),
routePath: jsonb("route_path"),
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_map_idx").on(columns.map),
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 market_state = pgTable(
"market_state",
{
id: serial("id").primaryKey(),
itemType: enum_market_state_item_type("item_type").notNull(),
itemId: numeric("item_id", { mode: "number" }).notNull(),
gmBaselineSupply: numeric("gm_baseline_supply", { mode: "number" }).notNull().default(100),
gmBaselineDemand: numeric("gm_baseline_demand", { mode: "number" }).notNull().default(50),
currentSupply: numeric("current_supply", { mode: "number" }).notNull().default(100),
artificialDemand: numeric("artificial_demand", { mode: "number" }).notNull().default(50),
realDemand: numeric("real_demand", { mode: "number" }).notNull().default(0),
priceModifier: numeric("price_modifier", { mode: "number" }).notNull().default(1),
lastComputedAt: timestamp("last_computed_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) => [
index("market_state_item_type_idx").on(columns.itemType),
index("market_state_item_id_idx").on(columns.itemId),
index("market_state_updated_at_idx").on(columns.updatedAt),
index("market_state_created_at_idx").on(columns.createdAt),
uniqueIndex("itemType_itemId_idx").on(columns.itemType, columns.itemId),
],
);
export const voice_scripts = pgTable(
"voice_scripts",
{
id: serial("id").primaryKey(),
title: varchar("title").notNull(),
description: varchar("description"),
script: varchar("script").notNull(),
xpAmount: numeric("xp_amount", { mode: "number" }).notNull().default(250),
spoiler: boolean("spoiler").default(false),
status: enum_voice_scripts_status("status").notNull().default("draft"),
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("voice_scripts_updated_at_idx").on(columns.updatedAt),
index("voice_scripts_created_at_idx").on(columns.createdAt),
],
);
export const voice_submissions = pgTable(
"voice_submissions",
{
id: serial("id").primaryKey(),
script: integer("script_id")
.notNull()
.references(() => voice_scripts.id, {
onDelete: "set null",
}),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
description: varchar("description"),
status: enum_voice_submissions_status("status").notNull().default("pending"),
reviewNote: varchar("review_note"),
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("voice_submissions_script_idx").on(columns.script),
index("voice_submissions_user_idx").on(columns.user),
index("voice_submissions_updated_at_idx").on(columns.updatedAt),
index("voice_submissions_created_at_idx").on(columns.createdAt),
uniqueIndex("voice_submissions_filename_idx").on(columns.filename),
],
);
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 wiki_pages = pgTable(
"wiki_pages",
{
id: serial("id").primaryKey(),
title: varchar("title").notNull(),
slug: varchar("slug").notNull(),
category: enum_wiki_pages_category("category").notNull(),
body: varchar("body").notNull(),
lockdown: boolean("lockdown").default(false),
lockedBy: integer("locked_by_id").references(() => users.id, {
onDelete: "set null",
}),
lockedAt: timestamp("locked_at", { mode: "string", withTimezone: true, precision: 3 }),
lastEditor: integer("last_editor_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("wiki_pages_slug_idx").on(columns.slug),
index("wiki_pages_category_idx").on(columns.category),
index("wiki_pages_locked_by_idx").on(columns.lockedBy),
index("wiki_pages_last_editor_idx").on(columns.lastEditor),
index("wiki_pages_updated_at_idx").on(columns.updatedAt),
index("wiki_pages_created_at_idx").on(columns.createdAt),
],
);
export const wiki_pages_texts = pgTable(
"wiki_pages_texts",
{
id: serial("id").primaryKey(),
order: integer("order").notNull(),
parent: integer("parent_id").notNull(),
path: varchar("path").notNull(),
text: varchar("text"),
},
(columns) => [
index("wiki_pages_texts_order_parent").on(columns.order, columns.parent),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [wiki_pages.id],
name: "wiki_pages_texts_parent_fk",
}).onDelete("cascade"),
],
);
export const wiki_revisions = pgTable(
"wiki_revisions",
{
id: serial("id").primaryKey(),
page: integer("page_id")
.notNull()
.references(() => wiki_pages.id, {
onDelete: "set null",
}),
revisionNumber: numeric("revision_number", { mode: "number" }).notNull(),
titleSnapshot: varchar("title_snapshot").notNull(),
contentSnapshot: varchar("content_snapshot").notNull(),
editor: integer("editor_id").references(() => users.id, {
onDelete: "set null",
}),
summary: varchar("summary"),
type: enum_wiki_revisions_type("type").notNull(),
restoredFromRevision: numeric("restored_from_revision", { 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("wiki_revisions_page_idx").on(columns.page),
index("wiki_revisions_editor_idx").on(columns.editor),
index("wiki_revisions_updated_at_idx").on(columns.updatedAt),
index("wiki_revisions_created_at_idx").on(columns.createdAt),
],
);
export const wiki_templates = pgTable(
"wiki_templates",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
body: varchar("body").notNull(),
description: varchar("description"),
css: varchar("css"),
html: varchar("html"),
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("wiki_templates_name_idx").on(columns.name),
index("wiki_templates_updated_at_idx").on(columns.updatedAt),
index("wiki_templates_created_at_idx").on(columns.createdAt),
],
);
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(),
isActive: boolean("is_active").default(true),
worldMap: boolean("world_map").default(false),
campaign: integer("campaign_id").references(() => campaigns.id, {
onDelete: "set null",
}),
description: varchar("description"),
weather: varchar("weather"),
latitude: numeric("latitude", { mode: "number" }),
longitude: numeric("longitude", { mode: "number" }),
easeOfAccess: enum_maps_ease_of_access("ease_of_access"),
factionControl: integer("faction_control_id").references(() => factions.id, {
onDelete: "set null",
}),
worldSizeWidth: numeric("world_size_width", { mode: "number" }).notNull().default(8192),
worldSizeHeight: numeric("world_size_height", { mode: "number" }).notNull().default(8192),
basemapMode: enum_maps_basemap_mode("basemap_mode").notNull().default("image"),
basemapImage: integer("basemap_image_id").references(() => media.id, {
onDelete: "set null",
}),
tileUrlTemplate: varchar("tile_url_template"),
minZoom: numeric("min_zoom", { mode: "number" }).default(0),
maxZoom: numeric("max_zoom", { mode: "number" }).default(12),
defaultCenterX: numeric("default_center_x", { mode: "number" }),
defaultCenterY: numeric("default_center_y", { mode: "number" }),
defaultZoom: numeric("default_zoom", { mode: "number" }).default(2),
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),
index("maps_campaign_idx").on(columns.campaign),
index("maps_faction_control_idx").on(columns.factionControl),
index("maps_basemap_image_idx").on(columns.basemapImage),
index("maps_updated_at_idx").on(columns.updatedAt),
index("maps_created_at_idx").on(columns.createdAt),
],
);
export const map_roads = pgTable(
"map_roads",
{
id: serial("id").primaryKey(),
name: varchar("name"),
description: varchar("description"),
map: integer("map_id")
.notNull()
.references(() => maps.id, {
onDelete: "set null",
}),
surface: enum_map_roads_surface("surface").notNull().default("paved"),
speedMultiplier: numeric("speed_multiplier", { mode: "number" }).notNull().default(1),
strokeColor: varchar("stroke_color"),
strokeWeight: numeric("stroke_weight", { mode: "number" }).default(2),
strokeStyle: enum_map_roads_stroke_style("stroke_style").default("solid"),
labelVisible: boolean("label_visible"),
points: jsonb("points").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("map_roads_map_idx").on(columns.map),
index("map_roads_updated_at_idx").on(columns.updatedAt),
index("map_roads_created_at_idx").on(columns.createdAt),
],
);
export const map_zones = pgTable(
"map_zones",
{
id: serial("id").primaryKey(),
name: varchar("name"),
description: varchar("description"),
map: integer("map_id")
.notNull()
.references(() => maps.id, {
onDelete: "set null",
}),
type: enum_map_zones_type("type").notNull(),
fillColor: varchar("fill_color"),
strokeColor: varchar("stroke_color"),
fillOpacity: numeric("fill_opacity", { mode: "number" }),
strokeWeight: numeric("stroke_weight", { mode: "number" }).default(1),
labelVisible: boolean("label_visible").default(true),
points: jsonb("points").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("map_zones_map_idx").on(columns.map),
index("map_zones_updated_at_idx").on(columns.updatedAt),
index("map_zones_created_at_idx").on(columns.createdAt),
],
);
export const map_zones_rels = pgTable(
"map_zones_rels",
{
id: serial("id").primaryKey(),
order: integer("order"),
parent: integer("parent_id").notNull(),
path: varchar("path").notNull(),
resourcesID: integer("resources_id"),
},
(columns) => [
index("map_zones_rels_order_idx").on(columns.order),
index("map_zones_rels_parent_idx").on(columns.parent),
index("map_zones_rels_path_idx").on(columns.path),
index("map_zones_rels_resources_id_idx").on(columns.resourcesID),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [map_zones.id],
name: "map_zones_rels_parent_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["resourcesID"]],
foreignColumns: [resources.id],
name: "map_zones_rels_resources_fk",
}).onDelete("cascade"),
],
);
export const resource_nodes = pgTable(
"resource_nodes",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
description: varchar("description"),
map: integer("map_id")
.notNull()
.references(() => maps.id, {
onDelete: "set null",
}),
icon: enum_resource_nodes_icon("icon").default("marker"),
position: jsonb("position").notNull(),
richness: numeric("richness", { mode: "number" }).default(100),
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("resource_nodes_map_idx").on(columns.map),
index("resource_nodes_updated_at_idx").on(columns.updatedAt),
index("resource_nodes_created_at_idx").on(columns.createdAt),
],
);
export const resource_nodes_rels = pgTable(
"resource_nodes_rels",
{
id: serial("id").primaryKey(),
order: integer("order"),
parent: integer("parent_id").notNull(),
path: varchar("path").notNull(),
resourcesID: integer("resources_id"),
},
(columns) => [
index("resource_nodes_rels_order_idx").on(columns.order),
index("resource_nodes_rels_parent_idx").on(columns.parent),
index("resource_nodes_rels_path_idx").on(columns.path),
index("resource_nodes_rels_resources_id_idx").on(columns.resourcesID),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [resource_nodes.id],
name: "resource_nodes_rels_parent_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["resourcesID"]],
foreignColumns: [resources.id],
name: "resource_nodes_rels_resources_fk",
}).onDelete("cascade"),
],
);
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 story_beats = pgTable(
"story_beats",
{
id: serial("id").primaryKey(),
title: varchar("title").notNull(),
occurredAt: timestamp("occurred_at", { mode: "string", withTimezone: true, precision: 3 }),
order: numeric("order", { mode: "number" }),
status: enum_story_beats_status("status").notNull().default("draft"),
body: jsonb("body").notNull(),
mission: integer("mission_id").references(() => missions.id, {
onDelete: "set null",
}),
voiceover: integer("voiceover_id").references(() => story_voiceovers.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("story_beats_status_idx").on(columns.status),
index("story_beats_mission_idx").on(columns.mission),
index("story_beats_voiceover_idx").on(columns.voiceover),
index("story_beats_updated_at_idx").on(columns.updatedAt),
index("story_beats_created_at_idx").on(columns.createdAt),
],
);
export const story_beat_states = pgTable(
"story_beat_states",
{
id: serial("id").primaryKey(),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
beat: integer("beat_id")
.notNull()
.references(() => story_beats.id, {
onDelete: "set null",
}),
readAt: timestamp("read_at", { mode: "string", withTimezone: true, precision: 3 }),
reaction: enum_story_beat_states_reaction("reaction"),
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("story_beat_states_user_idx").on(columns.user),
index("story_beat_states_beat_idx").on(columns.beat),
index("story_beat_states_updated_at_idx").on(columns.updatedAt),
index("story_beat_states_created_at_idx").on(columns.createdAt),
],
);
export const story_voiceovers = pgTable(
"story_voiceovers",
{
id: serial("id").primaryKey(),
aiGenerated: boolean("ai_generated").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(),
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("story_voiceovers_updated_at_idx").on(columns.updatedAt),
index("story_voiceovers_created_at_idx").on(columns.createdAt),
uniqueIndex("story_voiceovers_filename_idx").on(columns.filename),
],
);
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 respawn_tickets = pgTable(
"respawn_tickets",
{
id: serial("id").primaryKey(),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
balance: numeric("balance", { 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) => [
uniqueIndex("respawn_tickets_user_idx").on(columns.user),
index("respawn_tickets_updated_at_idx").on(columns.updatedAt),
index("respawn_tickets_created_at_idx").on(columns.createdAt),
],
);
export const supply_boxes = pgTable(
"supply_boxes",
{
id: serial("id").primaryKey(),
boxId: varchar("box_id").notNull(),
sessionId: varchar("session_id").notNull(),
server: integer("server_id")
.notNull()
.references(() => game_servers.id, {
onDelete: "set null",
}),
boxClass: varchar("box_class"),
displayName: varchar("display_name"),
location: jsonb("location"),
contents: jsonb("contents"),
lastSyncedAt: timestamp("last_synced_at", {
mode: "string",
withTimezone: true,
precision: 3,
}).notNull(),
status: enum_supply_boxes_status("status").notNull().default("active"),
sourceEvent: integer("source_event_id")
.notNull()
.references(() => arma_sync_events.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("supply_boxes_box_id_idx").on(columns.boxId),
index("supply_boxes_session_id_idx").on(columns.sessionId),
index("supply_boxes_server_idx").on(columns.server),
index("supply_boxes_status_idx").on(columns.status),
index("supply_boxes_source_event_idx").on(columns.sourceEvent),
index("supply_boxes_updated_at_idx").on(columns.updatedAt),
index("supply_boxes_created_at_idx").on(columns.createdAt),
],
);
export const operation_events = pgTable(
"operation_events",
{
id: serial("id").primaryKey(),
sourceEvent: integer("source_event_id")
.notNull()
.references(() => arma_sync_events.id, {
onDelete: "set null",
}),
eventId: varchar("event_id").notNull(),
operationId: varchar("operation_id").notNull(),
type: varchar("type").notNull(),
version: numeric("version", { mode: "number" }).notNull().default(1),
status: enum_operation_events_status("status").notNull().default("validated"),
error: jsonb("error"),
payloadHash: varchar("payload_hash").notNull(),
actor: integer("actor_id").references(() => users.id, {
onDelete: "set null",
}),
server: integer("server_id").references(() => game_servers.id, {
onDelete: "set null",
}),
mission: integer("mission_id").references(() => missions.id, {
onDelete: "set null",
}),
occurredAt: timestamp("occurred_at", {
mode: "string",
withTimezone: true,
precision: 3,
}).notNull(),
validatedAt: timestamp("validated_at", { mode: "string", withTimezone: true, precision: 3 }),
reconciliationNotes: varchar("reconciliation_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) => [
uniqueIndex("operation_events_source_event_idx").on(columns.sourceEvent),
uniqueIndex("operation_events_event_id_idx").on(columns.eventId),
index("operation_events_operation_id_idx").on(columns.operationId),
index("operation_events_type_idx").on(columns.type),
index("operation_events_actor_idx").on(columns.actor),
index("operation_events_server_idx").on(columns.server),
index("operation_events_mission_idx").on(columns.mission),
index("operation_events_updated_at_idx").on(columns.updatedAt),
index("operation_events_created_at_idx").on(columns.createdAt),
],
);
export const operation_effects = pgTable(
"operation_effects",
{
id: serial("id").primaryKey(),
operationEvent: integer("operation_event_id")
.notNull()
.references(() => operation_events.id, {
onDelete: "set null",
}),
sourceEvent: integer("source_event_id")
.notNull()
.references(() => arma_sync_events.id, {
onDelete: "set null",
}),
operationId: varchar("operation_id").notNull(),
effectKey: varchar("effect_key").notNull(),
effectType: enum_operation_effects_effect_type("effect_type").notNull(),
status: enum_operation_effects_status("status").notNull().default("applied"),
payload: jsonb("payload"),
reversalOf: integer("reversal_of_id").references((): AnyPgColumn => operation_effects.id, {
onDelete: "set null",
}),
reversedBy: integer("reversed_by_id").references((): AnyPgColumn => operation_effects.id, {
onDelete: "set null",
}),
reconciliationNotes: varchar("reconciliation_notes"),
appliedAt: timestamp("applied_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) => [
index("operation_effects_operation_event_idx").on(columns.operationEvent),
index("operation_effects_source_event_idx").on(columns.sourceEvent),
index("operation_effects_operation_id_idx").on(columns.operationId),
uniqueIndex("operation_effects_effect_key_idx").on(columns.effectKey),
index("operation_effects_reversal_of_idx").on(columns.reversalOf),
index("operation_effects_reversed_by_idx").on(columns.reversedBy),
index("operation_effects_updated_at_idx").on(columns.updatedAt),
index("operation_effects_created_at_idx").on(columns.createdAt),
],
);
export const operation_reservations_personnel = pgTable(
"operation_reservations_personnel",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
slot: varchar("slot"),
},
(columns) => [
index("operation_reservations_personnel_order_idx").on(columns._order),
index("operation_reservations_personnel_parent_id_idx").on(columns._parentID),
index("operation_reservations_personnel_user_idx").on(columns.user),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [operation_reservations.id],
name: "operation_reservations_personnel_parent_id_fk",
}).onDelete("cascade"),
],
);
export const operation_reservations_vehicles = pgTable(
"operation_reservations_vehicles",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
vehicle: integer("vehicle_id")
.notNull()
.references(() => game_vehicles.id, {
onDelete: "set null",
}),
},
(columns) => [
index("operation_reservations_vehicles_order_idx").on(columns._order),
index("operation_reservations_vehicles_parent_id_idx").on(columns._parentID),
index("operation_reservations_vehicles_vehicle_idx").on(columns.vehicle),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [operation_reservations.id],
name: "operation_reservations_vehicles_parent_id_fk",
}).onDelete("cascade"),
],
);
export const operation_reservations_cargo = pgTable(
"operation_reservations_cargo",
{
_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(),
},
(columns) => [
index("operation_reservations_cargo_order_idx").on(columns._order),
index("operation_reservations_cargo_parent_id_idx").on(columns._parentID),
index("operation_reservations_cargo_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [operation_reservations.id],
name: "operation_reservations_cargo_parent_id_fk",
}).onDelete("cascade"),
],
);
export const operation_reservations = pgTable(
"operation_reservations",
{
id: serial("id").primaryKey(),
reservationKey: varchar("reservation_key").notNull(),
operationId: varchar("operation_id").notNull(),
mission: integer("mission_id").references(() => missions.id, {
onDelete: "set null",
}),
status: enum_operation_reservations_status("status").notNull().default("reserved"),
budget_account: integer("budget_account_id").references(() => bank_accounts.id, {
onDelete: "set null",
}),
budget_amount: numeric("budget_amount", { mode: "number" }),
origin: integer("origin_id").references(() => game_structures.id, {
onDelete: "set null",
}),
destination: integer("destination_id").references(() => game_structures.id, {
onDelete: "set null",
}),
expiresAt: timestamp("expires_at", { mode: "string", withTimezone: true, precision: 3 }),
createdBy: integer("created_by_id").references(() => users.id, {
onDelete: "set null",
}),
settledAt: timestamp("settled_at", { mode: "string", withTimezone: true, precision: 3 }),
settledByEffect: integer("settled_by_effect_id").references(() => operation_effects.id, {
onDelete: "set null",
}),
settlement: jsonb("settlement"),
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("operation_reservations_reservation_key_idx").on(columns.reservationKey),
index("operation_reservations_operation_id_idx").on(columns.operationId),
index("operation_reservations_mission_idx").on(columns.mission),
index("operation_reservations_budget_budget_account_idx").on(columns.budget_account),
index("operation_reservations_origin_idx").on(columns.origin),
index("operation_reservations_destination_idx").on(columns.destination),
index("operation_reservations_created_by_idx").on(columns.createdBy),
index("operation_reservations_settled_by_effect_idx").on(columns.settledByEffect),
index("operation_reservations_updated_at_idx").on(columns.updatedAt),
index("operation_reservations_created_at_idx").on(columns.createdAt),
],
);
export const operation_readiness = pgTable(
"operation_readiness",
{
id: serial("id").primaryKey(),
subjectType: enum_operation_readiness_subject_type("subject_type").notNull(),
subjectId: numeric("subject_id", { mode: "number" }),
subjectLabel: varchar("subject_label"),
windowStart: timestamp("window_start", {
mode: "string",
withTimezone: true,
precision: 3,
}).notNull(),
windowEnd: timestamp("window_end", { mode: "string", withTimezone: true, precision: 3 }),
windowLabel: varchar("window_label"),
operationId: varchar("operation_id"),
calculationVersion: varchar("calculation_version").notNull().default("1.0.0"),
nature: enum_operation_readiness_nature("nature").notNull().default("advisory"),
readinessScore: numeric("readiness_score", { mode: "number" }),
planningConfidenceScore: numeric("planning_confidence_score", { mode: "number" }),
contributingCategories: jsonb("contributing_categories"),
inputCount: numeric("input_count", { mode: "number" }),
explanation: varchar("explanation"),
recomputedAt: timestamp("recomputed_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) => [
index("operation_readiness_updated_at_idx").on(columns.updatedAt),
index("operation_readiness_created_at_idx").on(columns.createdAt),
],
);
export const zone_pressure = pgTable(
"zone_pressure",
{
id: serial("id").primaryKey(),
zone: integer("zone_id")
.notNull()
.references(() => map_zones.id, {
onDelete: "set null",
}),
faction: integer("faction_id").references(() => factions.id, {
onDelete: "set null",
}),
operationId: varchar("operation_id").notNull(),
mission: integer("mission_id").references(() => missions.id, {
onDelete: "set null",
}),
sourceEffect: integer("source_effect_id")
.notNull()
.references(() => operation_effects.id, {
onDelete: "set null",
}),
delta: numeric("delta", { mode: "number" }).notNull(),
note: varchar("note"),
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("zone_pressure_zone_idx").on(columns.zone),
index("zone_pressure_faction_idx").on(columns.faction),
index("zone_pressure_operation_id_idx").on(columns.operationId),
index("zone_pressure_mission_idx").on(columns.mission),
uniqueIndex("zone_pressure_source_effect_idx").on(columns.sourceEffect),
index("zone_pressure_updated_at_idx").on(columns.updatedAt),
index("zone_pressure_created_at_idx").on(columns.createdAt),
],
);
export const custom_minefields = pgTable(
"custom_minefields",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
author: integer("author_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
rows: numeric("rows", { mode: "number" }).notNull(),
cols: numeric("cols", { mode: "number" }).notNull(),
mines: jsonb("mines").notNull(),
mineCount: numeric("mine_count", { mode: "number" }).notNull(),
published: boolean("published").default(true),
exposeEdgeMines: boolean("expose_edge_mines").default(true),
playCount: numeric("play_count", { mode: "number" }).default(0),
creatorXpBank: numeric("creator_xp_bank", { 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("custom_minefields_author_idx").on(columns.author),
index("custom_minefields_updated_at_idx").on(columns.updatedAt),
index("custom_minefields_created_at_idx").on(columns.createdAt),
],
);
export const custom_minefield_scores = pgTable(
"custom_minefield_scores",
{
id: serial("id").primaryKey(),
minefield: integer("minefield_id")
.notNull()
.references(() => custom_minefields.id, {
onDelete: "set null",
}),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
seconds: numeric("seconds", { mode: "number" }).notNull(),
flags: numeric("flags", { mode: "number" }).default(0),
won: boolean("won").notNull().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("custom_minefield_scores_minefield_idx").on(columns.minefield),
index("custom_minefield_scores_user_idx").on(columns.user),
index("custom_minefield_scores_updated_at_idx").on(columns.updatedAt),
index("custom_minefield_scores_created_at_idx").on(columns.createdAt),
],
);
export const custom_radio_tests = pgTable(
"custom_radio_tests",
{
id: serial("id").primaryKey(),
name: varchar("name").notNull(),
author: integer("author_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
messages: jsonb("messages").notNull(),
messageCount: numeric("message_count", { mode: "number" }).notNull(),
order: enum_custom_radio_tests_order("order").default("fixed"),
published: boolean("published").default(true),
playCount: numeric("play_count", { 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("custom_radio_tests_author_idx").on(columns.author),
index("custom_radio_tests_updated_at_idx").on(columns.updatedAt),
index("custom_radio_tests_created_at_idx").on(columns.createdAt),
],
);
export const custom_radio_test_scores = pgTable(
"custom_radio_test_scores",
{
id: serial("id").primaryKey(),
test: integer("test_id")
.notNull()
.references(() => custom_radio_tests.id, {
onDelete: "set null",
}),
user: integer("user_id")
.notNull()
.references(() => users.id, {
onDelete: "set null",
}),
score: numeric("score", { mode: "number" }).notNull(),
accuracy: numeric("accuracy", { mode: "number" }).notNull(),
correctMessages: numeric("correct_messages", { mode: "number" }).notNull(),
incorrectMessages: numeric("incorrect_messages", { mode: "number" }).notNull(),
mode: enum_custom_radio_test_scores_mode("mode").notNull(),
timeMs: numeric("time_ms", { 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("custom_radio_test_scores_test_idx").on(columns.test),
index("custom_radio_test_scores_user_idx").on(columns.user),
index("custom_radio_test_scores_updated_at_idx").on(columns.updatedAt),
index("custom_radio_test_scores_created_at_idx").on(columns.createdAt),
],
);
export const forms_blocks_checkbox = pgTable(
"forms_blocks_checkbox",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
required: boolean("required"),
defaultValue: boolean("default_value"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_checkbox_order_idx").on(columns._order),
index("forms_blocks_checkbox_parent_id_idx").on(columns._parentID),
index("forms_blocks_checkbox_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_checkbox_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_country = pgTable(
"forms_blocks_country",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_country_order_idx").on(columns._order),
index("forms_blocks_country_parent_id_idx").on(columns._parentID),
index("forms_blocks_country_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_country_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_email = pgTable(
"forms_blocks_email",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_email_order_idx").on(columns._order),
index("forms_blocks_email_parent_id_idx").on(columns._parentID),
index("forms_blocks_email_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_email_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_message = pgTable(
"forms_blocks_message",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
message: jsonb("message"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_message_order_idx").on(columns._order),
index("forms_blocks_message_parent_id_idx").on(columns._parentID),
index("forms_blocks_message_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_message_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_number = pgTable(
"forms_blocks_number",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
defaultValue: numeric("default_value", { mode: "number" }),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_number_order_idx").on(columns._order),
index("forms_blocks_number_parent_id_idx").on(columns._parentID),
index("forms_blocks_number_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_number_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_select_options = pgTable(
"forms_blocks_select_options",
{
_order: integer("_order").notNull(),
_parentID: varchar("_parent_id").notNull(),
id: varchar("id").primaryKey(),
label: varchar("label").notNull(),
value: varchar("value").notNull(),
},
(columns) => [
index("forms_blocks_select_options_order_idx").on(columns._order),
index("forms_blocks_select_options_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms_blocks_select.id],
name: "forms_blocks_select_options_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_select = pgTable(
"forms_blocks_select",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
defaultValue: varchar("default_value"),
placeholder: varchar("placeholder"),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_select_order_idx").on(columns._order),
index("forms_blocks_select_parent_id_idx").on(columns._parentID),
index("forms_blocks_select_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_select_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_state = pgTable(
"forms_blocks_state",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_state_order_idx").on(columns._order),
index("forms_blocks_state_parent_id_idx").on(columns._parentID),
index("forms_blocks_state_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_state_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_text = pgTable(
"forms_blocks_text",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
defaultValue: varchar("default_value"),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_text_order_idx").on(columns._order),
index("forms_blocks_text_parent_id_idx").on(columns._parentID),
index("forms_blocks_text_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_text_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_textarea = pgTable(
"forms_blocks_textarea",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
defaultValue: varchar("default_value"),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_textarea_order_idx").on(columns._order),
index("forms_blocks_textarea_parent_id_idx").on(columns._parentID),
index("forms_blocks_textarea_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_textarea_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_radio_options = pgTable(
"forms_blocks_radio_options",
{
_order: integer("_order").notNull(),
_parentID: varchar("_parent_id").notNull(),
id: varchar("id").primaryKey(),
label: varchar("label").notNull(),
value: varchar("value").notNull(),
},
(columns) => [
index("forms_blocks_radio_options_order_idx").on(columns._order),
index("forms_blocks_radio_options_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms_blocks_radio.id],
name: "forms_blocks_radio_options_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_radio = pgTable(
"forms_blocks_radio",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
defaultValue: varchar("default_value"),
required: boolean("required"),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_radio_order_idx").on(columns._order),
index("forms_blocks_radio_parent_id_idx").on(columns._parentID),
index("forms_blocks_radio_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_radio_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_blocks_date = pgTable(
"forms_blocks_date",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
_path: text("_path").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
label: varchar("label"),
width: numeric("width", { mode: "number" }),
required: boolean("required"),
defaultValue: timestamp("default_value", { mode: "string", withTimezone: true, precision: 3 }),
blockName: varchar("block_name"),
},
(columns) => [
index("forms_blocks_date_order_idx").on(columns._order),
index("forms_blocks_date_parent_id_idx").on(columns._parentID),
index("forms_blocks_date_path_idx").on(columns._path),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_blocks_date_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms_emails = pgTable(
"forms_emails",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
emailTo: varchar("email_to"),
cc: varchar("cc"),
bcc: varchar("bcc"),
replyTo: varchar("reply_to"),
emailFrom: varchar("email_from"),
subject: varchar("subject").notNull().default("You've received a new message."),
message: jsonb("message"),
},
(columns) => [
index("forms_emails_order_idx").on(columns._order),
index("forms_emails_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [forms.id],
name: "forms_emails_parent_id_fk",
}).onDelete("cascade"),
],
);
export const forms = pgTable(
"forms",
{
id: serial("id").primaryKey(),
title: varchar("title").notNull(),
submitButtonLabel: varchar("submit_button_label"),
confirmationType: enum_forms_confirmation_type("confirmation_type").default("message"),
confirmationMessage: jsonb("confirmation_message"),
redirect_url: varchar("redirect_url"),
activeFrom: timestamp("active_from", { mode: "string", withTimezone: true, precision: 3 }),
activeUntil: timestamp("active_until", { mode: "string", withTimezone: true, precision: 3 }),
targeting_audience: enum_forms_targeting_audience("targeting_audience")
.notNull()
.default("all"),
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("forms_updated_at_idx").on(columns.updatedAt),
index("forms_created_at_idx").on(columns.createdAt),
],
);
export const forms_rels = pgTable(
"forms_rels",
{
id: serial("id").primaryKey(),
order: integer("order"),
parent: integer("parent_id").notNull(),
path: varchar("path").notNull(),
usersID: integer("users_id"),
rolesID: integer("roles_id"),
qualificationsID: integer("qualifications_id"),
},
(columns) => [
index("forms_rels_order_idx").on(columns.order),
index("forms_rels_parent_idx").on(columns.parent),
index("forms_rels_path_idx").on(columns.path),
index("forms_rels_users_id_idx").on(columns.usersID),
index("forms_rels_roles_id_idx").on(columns.rolesID),
index("forms_rels_qualifications_id_idx").on(columns.qualificationsID),
foreignKey({
columns: [columns["parent"]],
foreignColumns: [forms.id],
name: "forms_rels_parent_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["usersID"]],
foreignColumns: [users.id],
name: "forms_rels_users_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["rolesID"]],
foreignColumns: [roles.id],
name: "forms_rels_roles_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["qualificationsID"]],
foreignColumns: [qualifications.id],
name: "forms_rels_qualifications_fk",
}).onDelete("cascade"),
],
);
export const form_submissions_submission_data = pgTable(
"form_submissions_submission_data",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
field: varchar("field").notNull(),
value: varchar("value").notNull(),
},
(columns) => [
index("form_submissions_submission_data_order_idx").on(columns._order),
index("form_submissions_submission_data_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [form_submissions.id],
name: "form_submissions_submission_data_parent_id_fk",
}).onDelete("cascade"),
],
);
export const form_submissions = pgTable(
"form_submissions",
{
id: serial("id").primaryKey(),
form: integer("form_id")
.notNull()
.references(() => forms.id, {
onDelete: "set null",
}),
user: integer("user_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("form_submissions_form_idx").on(columns.form),
index("form_submissions_user_idx").on(columns.user),
index("form_submissions_updated_at_idx").on(columns.updatedAt),
index("form_submissions_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',
),
"ornith-9b-settings_model": varchar("ornith_9b_settings_model").default(
"unsloth/Ornith-1.0-9B-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"),
media_find: boolean("media_find").default(false),
media_create: boolean("media_create").default(false),
media_update: boolean("media_update").default(false),
media_delete: boolean("media_delete").default(false),
announcements_find: boolean("announcements_find").default(false),
announcements_create: boolean("announcements_create").default(false),
announcements_update: boolean("announcements_update").default(false),
announcements_delete: boolean("announcements_delete").default(false),
gameHardResources_find: boolean("game_hard_resources_find").default(false),
gameHardResources_create: boolean("game_hard_resources_create").default(false),
gameHardResources_update: boolean("game_hard_resources_update").default(false),
gameHardResources_delete: boolean("game_hard_resources_delete").default(false),
gameStructures_find: boolean("game_structures_find").default(false),
gameStructures_create: boolean("game_structures_create").default(false),
gameStructures_update: boolean("game_structures_update").default(false),
gameStructures_delete: boolean("game_structures_delete").default(false),
gameVehicles_find: boolean("game_vehicles_find").default(false),
gameVehicles_create: boolean("game_vehicles_create").default(false),
gameVehicles_update: boolean("game_vehicles_update").default(false),
gameVehicles_delete: boolean("game_vehicles_delete").default(false),
gameNpcs_find: boolean("game_npcs_find").default(false),
gameNpcs_create: boolean("game_npcs_create").default(false),
gameNpcs_update: boolean("game_npcs_update").default(false),
gameNpcs_delete: boolean("game_npcs_delete").default(false),
npcStaffing_find: boolean("npc_staffing_find").default(false),
npcStaffing_create: boolean("npc_staffing_create").default(false),
npcStaffing_update: boolean("npc_staffing_update").default(false),
npcStaffing_delete: boolean("npc_staffing_delete").default(false),
laborClassifications_find: boolean("labor_classifications_find").default(false),
laborClassifications_create: boolean("labor_classifications_create").default(false),
laborClassifications_update: boolean("labor_classifications_update").default(false),
laborClassifications_delete: boolean("labor_classifications_delete").default(false),
gameEventLogs_find: boolean("game_event_logs_find").default(false),
gameEventLogs_create: boolean("game_event_logs_create").default(false),
gameEventLogs_update: boolean("game_event_logs_update").default(false),
gameEventLogs_delete: boolean("game_event_logs_delete").default(false),
users_find: boolean("users_find").default(false),
users_create: boolean("users_create").default(false),
users_update: boolean("users_update").default(false),
users_delete: boolean("users_delete").default(false),
roles_find: boolean("roles_find").default(false),
roles_create: boolean("roles_create").default(false),
roles_update: boolean("roles_update").default(false),
roles_delete: boolean("roles_delete").default(false),
ranks_find: boolean("ranks_find").default(false),
ranks_create: boolean("ranks_create").default(false),
ranks_update: boolean("ranks_update").default(false),
ranks_delete: boolean("ranks_delete").default(false),
profiles_find: boolean("profiles_find").default(false),
profiles_create: boolean("profiles_create").default(false),
profiles_update: boolean("profiles_update").default(false),
profiles_delete: boolean("profiles_delete").default(false),
awards_find: boolean("awards_find").default(false),
awards_create: boolean("awards_create").default(false),
awards_update: boolean("awards_update").default(false),
awards_delete: boolean("awards_delete").default(false),
qualifications_find: boolean("qualifications_find").default(false),
qualifications_create: boolean("qualifications_create").default(false),
qualifications_update: boolean("qualifications_update").default(false),
qualifications_delete: boolean("qualifications_delete").default(false),
assignments_find: boolean("assignments_find").default(false),
assignments_create: boolean("assignments_create").default(false),
assignments_update: boolean("assignments_update").default(false),
assignments_delete: boolean("assignments_delete").default(false),
assignmentTransfers_find: boolean("assignment_transfers_find").default(false),
assignmentTransfers_create: boolean("assignment_transfers_create").default(false),
assignmentTransfers_update: boolean("assignment_transfers_update").default(false),
assignmentTransfers_delete: boolean("assignment_transfers_delete").default(false),
experience_find: boolean("experience_find").default(false),
experience_create: boolean("experience_create").default(false),
experience_update: boolean("experience_update").default(false),
experience_delete: boolean("experience_delete").default(false),
userNotifications_find: boolean("user_notifications_find").default(false),
userNotifications_create: boolean("user_notifications_create").default(false),
userNotifications_update: boolean("user_notifications_update").default(false),
userNotifications_delete: boolean("user_notifications_delete").default(false),
evaluations_find: boolean("evaluations_find").default(false),
evaluations_create: boolean("evaluations_create").default(false),
evaluations_update: boolean("evaluations_update").default(false),
evaluations_delete: boolean("evaluations_delete").default(false),
ribbonSubmissions_find: boolean("ribbon_submissions_find").default(false),
ribbonSubmissions_create: boolean("ribbon_submissions_create").default(false),
ribbonSubmissions_update: boolean("ribbon_submissions_update").default(false),
ribbonSubmissions_delete: boolean("ribbon_submissions_delete").default(false),
promotionNominations_find: boolean("promotion_nominations_find").default(false),
promotionNominations_create: boolean("promotion_nominations_create").default(false),
promotionNominations_update: boolean("promotion_nominations_update").default(false),
promotionNominations_delete: boolean("promotion_nominations_delete").default(false),
leadershipTransfers_find: boolean("leadership_transfers_find").default(false),
leadershipTransfers_create: boolean("leadership_transfers_create").default(false),
leadershipTransfers_update: boolean("leadership_transfers_update").default(false),
leadershipTransfers_delete: boolean("leadership_transfers_delete").default(false),
missions_find: boolean("missions_find").default(false),
missions_create: boolean("missions_create").default(false),
missions_update: boolean("missions_update").default(false),
missions_delete: boolean("missions_delete").default(false),
missionAttendances_find: boolean("mission_attendances_find").default(false),
missionAttendances_create: boolean("mission_attendances_create").default(false),
missionAttendances_update: boolean("mission_attendances_update").default(false),
missionAttendances_delete: boolean("mission_attendances_delete").default(false),
missionRoleSignups_find: boolean("mission_role_signups_find").default(false),
missionRoleSignups_create: boolean("mission_role_signups_create").default(false),
missionRoleSignups_update: boolean("mission_role_signups_update").default(false),
missionRoleSignups_delete: boolean("mission_role_signups_delete").default(false),
missionMapMarkers_find: boolean("mission_map_markers_find").default(false),
missionMapMarkers_create: boolean("mission_map_markers_create").default(false),
missionMapMarkers_update: boolean("mission_map_markers_update").default(false),
missionMapMarkers_delete: boolean("mission_map_markers_delete").default(false),
campaigns_find: boolean("campaigns_find").default(false),
campaigns_create: boolean("campaigns_create").default(false),
campaigns_update: boolean("campaigns_update").default(false),
campaigns_delete: boolean("campaigns_delete").default(false),
factions_find: boolean("factions_find").default(false),
factions_create: boolean("factions_create").default(false),
factions_update: boolean("factions_update").default(false),
factions_delete: boolean("factions_delete").default(false),
technologies_find: boolean("technologies_find").default(false),
technologies_create: boolean("technologies_create").default(false),
technologies_update: boolean("technologies_update").default(false),
technologies_delete: boolean("technologies_delete").default(false),
techCategories_find: boolean("tech_categories_find").default(false),
techCategories_create: boolean("tech_categories_create").default(false),
techCategories_update: boolean("tech_categories_update").default(false),
techCategories_delete: boolean("tech_categories_delete").default(false),
assets_find: boolean("assets_find").default(false),
assets_create: boolean("assets_create").default(false),
assets_update: boolean("assets_update").default(false),
assets_delete: boolean("assets_delete").default(false),
resources_find: boolean("resources_find").default(false),
resources_create: boolean("resources_create").default(false),
resources_update: boolean("resources_update").default(false),
resources_delete: boolean("resources_delete").default(false),
vehicles_find: boolean("vehicles_find").default(false),
vehicles_create: boolean("vehicles_create").default(false),
vehicles_update: boolean("vehicles_update").default(false),
vehicles_delete: boolean("vehicles_delete").default(false),
structures_find: boolean("structures_find").default(false),
structures_create: boolean("structures_create").default(false),
structures_update: boolean("structures_update").default(false),
structures_delete: boolean("structures_delete").default(false),
shipments_find: boolean("shipments_find").default(false),
shipments_create: boolean("shipments_create").default(false),
shipments_update: boolean("shipments_update").default(false),
shipments_delete: boolean("shipments_delete").default(false),
bankAccounts_find: boolean("bank_accounts_find").default(false),
bankAccounts_create: boolean("bank_accounts_create").default(false),
bankAccounts_update: boolean("bank_accounts_update").default(false),
bankAccounts_delete: boolean("bank_accounts_delete").default(false),
bankTransactions_find: boolean("bank_transactions_find").default(false),
bankTransactions_create: boolean("bank_transactions_create").default(false),
bankTransactions_update: boolean("bank_transactions_update").default(false),
bankTransactions_delete: boolean("bank_transactions_delete").default(false),
ledgerEntries_find: boolean("ledger_entries_find").default(false),
ledgerEntries_create: boolean("ledger_entries_create").default(false),
ledgerEntries_update: boolean("ledger_entries_update").default(false),
ledgerEntries_delete: boolean("ledger_entries_delete").default(false),
lockerStorages_find: boolean("locker_storages_find").default(false),
lockerStorages_create: boolean("locker_storages_create").default(false),
lockerStorages_update: boolean("locker_storages_update").default(false),
lockerStorages_delete: boolean("locker_storages_delete").default(false),
loadouts_find: boolean("loadouts_find").default(false),
loadouts_create: boolean("loadouts_create").default(false),
loadouts_update: boolean("loadouts_update").default(false),
loadouts_delete: boolean("loadouts_delete").default(false),
marketListings_find: boolean("market_listings_find").default(false),
marketListings_create: boolean("market_listings_create").default(false),
marketListings_update: boolean("market_listings_update").default(false),
marketListings_delete: boolean("market_listings_delete").default(false),
marketNegotiations_find: boolean("market_negotiations_find").default(false),
marketNegotiations_create: boolean("market_negotiations_create").default(false),
marketNegotiations_update: boolean("market_negotiations_update").default(false),
marketNegotiations_delete: boolean("market_negotiations_delete").default(false),
marketState_find: boolean("market_state_find").default(false),
marketState_create: boolean("market_state_create").default(false),
marketState_update: boolean("market_state_update").default(false),
marketState_delete: boolean("market_state_delete").default(false),
voiceScripts_find: boolean("voice_scripts_find").default(false),
voiceScripts_create: boolean("voice_scripts_create").default(false),
voiceScripts_update: boolean("voice_scripts_update").default(false),
voiceScripts_delete: boolean("voice_scripts_delete").default(false),
voiceSubmissions_find: boolean("voice_submissions_find").default(false),
voiceSubmissions_create: boolean("voice_submissions_create").default(false),
voiceSubmissions_update: boolean("voice_submissions_update").default(false),
voiceSubmissions_delete: boolean("voice_submissions_delete").default(false),
tickets_find: boolean("tickets_find").default(false),
tickets_create: boolean("tickets_create").default(false),
tickets_update: boolean("tickets_update").default(false),
tickets_delete: boolean("tickets_delete").default(false),
ticketVotes_find: boolean("ticket_votes_find").default(false),
ticketVotes_create: boolean("ticket_votes_create").default(false),
ticketVotes_update: boolean("ticket_votes_update").default(false),
ticketVotes_delete: boolean("ticket_votes_delete").default(false),
wikiPages_find: boolean("wiki_pages_find").default(false),
wikiPages_create: boolean("wiki_pages_create").default(false),
wikiPages_update: boolean("wiki_pages_update").default(false),
wikiPages_delete: boolean("wiki_pages_delete").default(false),
wikiRevisions_find: boolean("wiki_revisions_find").default(false),
wikiRevisions_create: boolean("wiki_revisions_create").default(false),
wikiRevisions_update: boolean("wiki_revisions_update").default(false),
wikiRevisions_delete: boolean("wiki_revisions_delete").default(false),
wikiTemplates_find: boolean("wiki_templates_find").default(false),
wikiTemplates_create: boolean("wiki_templates_create").default(false),
wikiTemplates_update: boolean("wiki_templates_update").default(false),
wikiTemplates_delete: boolean("wiki_templates_delete").default(false),
projects_find: boolean("projects_find").default(false),
projects_create: boolean("projects_create").default(false),
projects_update: boolean("projects_update").default(false),
projects_delete: boolean("projects_delete").default(false),
sprints_find: boolean("sprints_find").default(false),
sprints_create: boolean("sprints_create").default(false),
sprints_update: boolean("sprints_update").default(false),
sprints_delete: boolean("sprints_delete").default(false),
releases_find: boolean("releases_find").default(false),
releases_create: boolean("releases_create").default(false),
releases_update: boolean("releases_update").default(false),
releases_delete: boolean("releases_delete").default(false),
labels_find: boolean("labels_find").default(false),
labels_create: boolean("labels_create").default(false),
labels_update: boolean("labels_update").default(false),
labels_delete: boolean("labels_delete").default(false),
maps_find: boolean("maps_find").default(false),
maps_create: boolean("maps_create").default(false),
maps_update: boolean("maps_update").default(false),
maps_delete: boolean("maps_delete").default(false),
mapRoads_find: boolean("map_roads_find").default(false),
mapRoads_create: boolean("map_roads_create").default(false),
mapRoads_update: boolean("map_roads_update").default(false),
mapRoads_delete: boolean("map_roads_delete").default(false),
mapZones_find: boolean("map_zones_find").default(false),
mapZones_create: boolean("map_zones_create").default(false),
mapZones_update: boolean("map_zones_update").default(false),
mapZones_delete: boolean("map_zones_delete").default(false),
resourceNodes_find: boolean("resource_nodes_find").default(false),
resourceNodes_create: boolean("resource_nodes_create").default(false),
resourceNodes_update: boolean("resource_nodes_update").default(false),
resourceNodes_delete: boolean("resource_nodes_delete").default(false),
narrativeEvents_find: boolean("narrative_events_find").default(false),
narrativeEvents_create: boolean("narrative_events_create").default(false),
narrativeEvents_update: boolean("narrative_events_update").default(false),
narrativeEvents_delete: boolean("narrative_events_delete").default(false),
storyBeats_find: boolean("story_beats_find").default(false),
storyBeats_create: boolean("story_beats_create").default(false),
storyBeats_update: boolean("story_beats_update").default(false),
storyBeats_delete: boolean("story_beats_delete").default(false),
storyBeatStates_find: boolean("story_beat_states_find").default(false),
storyBeatStates_create: boolean("story_beat_states_create").default(false),
storyBeatStates_update: boolean("story_beat_states_update").default(false),
storyBeatStates_delete: boolean("story_beat_states_delete").default(false),
storyVoiceovers_find: boolean("story_voiceovers_find").default(false),
storyVoiceovers_create: boolean("story_voiceovers_create").default(false),
storyVoiceovers_update: boolean("story_voiceovers_update").default(false),
storyVoiceovers_delete: boolean("story_voiceovers_delete").default(false),
missionFiles_find: boolean("mission_files_find").default(false),
missionFiles_create: boolean("mission_files_create").default(false),
missionFiles_update: boolean("mission_files_update").default(false),
missionFiles_delete: boolean("mission_files_delete").default(false),
modLists_find: boolean("mod_lists_find").default(false),
modLists_create: boolean("mod_lists_create").default(false),
modLists_update: boolean("mod_lists_update").default(false),
modLists_delete: boolean("mod_lists_delete").default(false),
gameServers_find: boolean("game_servers_find").default(false),
gameServers_create: boolean("game_servers_create").default(false),
gameServers_update: boolean("game_servers_update").default(false),
gameServers_delete: boolean("game_servers_delete").default(false),
armaSyncEvents_find: boolean("arma_sync_events_find").default(false),
armaSyncEvents_create: boolean("arma_sync_events_create").default(false),
armaSyncEvents_update: boolean("arma_sync_events_update").default(false),
armaSyncEvents_delete: boolean("arma_sync_events_delete").default(false),
armaCommands_find: boolean("arma_commands_find").default(false),
armaCommands_create: boolean("arma_commands_create").default(false),
armaCommands_update: boolean("arma_commands_update").default(false),
armaCommands_delete: boolean("arma_commands_delete").default(false),
respawnTickets_find: boolean("respawn_tickets_find").default(false),
respawnTickets_create: boolean("respawn_tickets_create").default(false),
respawnTickets_update: boolean("respawn_tickets_update").default(false),
respawnTickets_delete: boolean("respawn_tickets_delete").default(false),
supplyBoxes_find: boolean("supply_boxes_find").default(false),
supplyBoxes_create: boolean("supply_boxes_create").default(false),
supplyBoxes_update: boolean("supply_boxes_update").default(false),
supplyBoxes_delete: boolean("supply_boxes_delete").default(false),
operationEvents_find: boolean("operation_events_find").default(false),
operationEvents_create: boolean("operation_events_create").default(false),
operationEvents_update: boolean("operation_events_update").default(false),
operationEvents_delete: boolean("operation_events_delete").default(false),
operationEffects_find: boolean("operation_effects_find").default(false),
operationEffects_create: boolean("operation_effects_create").default(false),
operationEffects_update: boolean("operation_effects_update").default(false),
operationEffects_delete: boolean("operation_effects_delete").default(false),
operationReservations_find: boolean("operation_reservations_find").default(false),
operationReservations_create: boolean("operation_reservations_create").default(false),
operationReservations_update: boolean("operation_reservations_update").default(false),
operationReservations_delete: boolean("operation_reservations_delete").default(false),
operationReadiness_find: boolean("operation_readiness_find").default(false),
operationReadiness_create: boolean("operation_readiness_create").default(false),
operationReadiness_update: boolean("operation_readiness_update").default(false),
operationReadiness_delete: boolean("operation_readiness_delete").default(false),
zonePressure_find: boolean("zone_pressure_find").default(false),
zonePressure_create: boolean("zone_pressure_create").default(false),
zonePressure_update: boolean("zone_pressure_update").default(false),
zonePressure_delete: boolean("zone_pressure_delete").default(false),
customMinefields_find: boolean("custom_minefields_find").default(false),
customMinefields_create: boolean("custom_minefields_create").default(false),
customMinefields_update: boolean("custom_minefields_update").default(false),
customMinefields_delete: boolean("custom_minefields_delete").default(false),
customMinefieldScores_find: boolean("custom_minefield_scores_find").default(false),
customMinefieldScores_create: boolean("custom_minefield_scores_create").default(false),
customMinefieldScores_update: boolean("custom_minefield_scores_update").default(false),
customMinefieldScores_delete: boolean("custom_minefield_scores_delete").default(false),
customRadioTests_find: boolean("custom_radio_tests_find").default(false),
customRadioTests_create: boolean("custom_radio_tests_create").default(false),
customRadioTests_update: boolean("custom_radio_tests_update").default(false),
customRadioTests_delete: boolean("custom_radio_tests_delete").default(false),
customRadioTestScores_find: boolean("custom_radio_test_scores_find").default(false),
customRadioTestScores_create: boolean("custom_radio_test_scores_create").default(false),
customRadioTestScores_update: boolean("custom_radio_test_scores_update").default(false),
customRadioTestScores_delete: boolean("custom_radio_test_scores_delete").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(),
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"),
announcementsID: integer("announcements_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"),
"npc-staffingID": integer("npc_staffing_id"),
"labor-classificationsID": integer("labor_classifications_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"),
"ribbon-submissionsID": integer("ribbon_submissions_id"),
"promotion-nominationsID": integer("promotion_nominations_id"),
"leadership-transfersID": integer("leadership_transfers_id"),
missionsID: integer("missions_id"),
"mission-attendancesID": integer("mission_attendances_id"),
"mission-role-signupsID": integer("mission_role_signups_id"),
"mission-map-markersID": integer("mission_map_markers_id"),
campaignsID: integer("campaigns_id"),
factionsID: integer("factions_id"),
technologiesID: integer("technologies_id"),
"tech-categoriesID": integer("tech_categories_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"),
"market-stateID": integer("market_state_id"),
"voice-scriptsID": integer("voice_scripts_id"),
"voice-submissionsID": integer("voice_submissions_id"),
ticketsID: integer("tickets_id"),
"ticket-votesID": integer("ticket_votes_id"),
"wiki-pagesID": integer("wiki_pages_id"),
"wiki-revisionsID": integer("wiki_revisions_id"),
"wiki-templatesID": integer("wiki_templates_id"),
projectsID: integer("projects_id"),
sprintsID: integer("sprints_id"),
releasesID: integer("releases_id"),
labelsID: integer("labels_id"),
mapsID: integer("maps_id"),
"map-roadsID": integer("map_roads_id"),
"map-zonesID": integer("map_zones_id"),
"resource-nodesID": integer("resource_nodes_id"),
"narrative-eventsID": integer("narrative_events_id"),
"story-beatsID": integer("story_beats_id"),
"story-beat-statesID": integer("story_beat_states_id"),
"story-voiceoversID": integer("story_voiceovers_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"),
"respawn-ticketsID": integer("respawn_tickets_id"),
"supply-boxesID": integer("supply_boxes_id"),
"operation-eventsID": integer("operation_events_id"),
"operation-effectsID": integer("operation_effects_id"),
"operation-reservationsID": integer("operation_reservations_id"),
"operation-readinessID": integer("operation_readiness_id"),
"zone-pressureID": integer("zone_pressure_id"),
"custom-minefieldsID": integer("custom_minefields_id"),
"custom-minefield-scoresID": integer("custom_minefield_scores_id"),
"custom-radio-testsID": integer("custom_radio_tests_id"),
"custom-radio-test-scoresID": integer("custom_radio_test_scores_id"),
formsID: integer("forms_id"),
"form-submissionsID": integer("form_submissions_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_announcements_id_idx").on(columns.announcementsID),
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_npc_staffing_id_idx").on(columns["npc-staffingID"]),
index("payload_locked_documents_rels_labor_classifications_id_idx").on(
columns["labor-classificationsID"],
),
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_ribbon_submissions_id_idx").on(
columns["ribbon-submissionsID"],
),
index("payload_locked_documents_rels_promotion_nominations_id_idx").on(
columns["promotion-nominationsID"],
),
index("payload_locked_documents_rels_leadership_transfers_id_idx").on(
columns["leadership-transfersID"],
),
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_mission_role_signups_id_idx").on(
columns["mission-role-signupsID"],
),
index("payload_locked_documents_rels_mission_map_markers_id_idx").on(
columns["mission-map-markersID"],
),
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_tech_categories_id_idx").on(columns["tech-categoriesID"]),
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_market_state_id_idx").on(columns["market-stateID"]),
index("payload_locked_documents_rels_voice_scripts_id_idx").on(columns["voice-scriptsID"]),
index("payload_locked_documents_rels_voice_submissions_id_idx").on(
columns["voice-submissionsID"],
),
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_wiki_pages_id_idx").on(columns["wiki-pagesID"]),
index("payload_locked_documents_rels_wiki_revisions_id_idx").on(columns["wiki-revisionsID"]),
index("payload_locked_documents_rels_wiki_templates_id_idx").on(columns["wiki-templatesID"]),
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_map_roads_id_idx").on(columns["map-roadsID"]),
index("payload_locked_documents_rels_map_zones_id_idx").on(columns["map-zonesID"]),
index("payload_locked_documents_rels_resource_nodes_id_idx").on(columns["resource-nodesID"]),
index("payload_locked_documents_rels_narrative_events_id_idx").on(
columns["narrative-eventsID"],
),
index("payload_locked_documents_rels_story_beats_id_idx").on(columns["story-beatsID"]),
index("payload_locked_documents_rels_story_beat_states_id_idx").on(
columns["story-beat-statesID"],
),
index("payload_locked_documents_rels_story_voiceovers_id_idx").on(
columns["story-voiceoversID"],
),
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_respawn_tickets_id_idx").on(columns["respawn-ticketsID"]),
index("payload_locked_documents_rels_supply_boxes_id_idx").on(columns["supply-boxesID"]),
index("payload_locked_documents_rels_operation_events_id_idx").on(
columns["operation-eventsID"],
),
index("payload_locked_documents_rels_operation_effects_id_idx").on(
columns["operation-effectsID"],
),
index("payload_locked_documents_rels_operation_reservations_id_idx").on(
columns["operation-reservationsID"],
),
index("payload_locked_documents_rels_operation_readiness_id_idx").on(
columns["operation-readinessID"],
),
index("payload_locked_documents_rels_zone_pressure_id_idx").on(columns["zone-pressureID"]),
index("payload_locked_documents_rels_custom_minefields_id_idx").on(
columns["custom-minefieldsID"],
),
index("payload_locked_documents_rels_custom_minefield_scores_id_idx").on(
columns["custom-minefield-scoresID"],
),
index("payload_locked_documents_rels_custom_radio_tests_id_idx").on(
columns["custom-radio-testsID"],
),
index("payload_locked_documents_rels_custom_radio_test_scores_i_idx").on(
columns["custom-radio-test-scoresID"],
),
index("payload_locked_documents_rels_forms_id_idx").on(columns.formsID),
index("payload_locked_documents_rels_form_submissions_id_idx").on(
columns["form-submissionsID"],
),
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["announcementsID"]],
foreignColumns: [announcements.id],
name: "payload_locked_documents_rels_announcements_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["npc-staffingID"]],
foreignColumns: [npc_staffing.id],
name: "payload_locked_documents_rels_npc_staffing_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["labor-classificationsID"]],
foreignColumns: [labor_classifications.id],
name: "payload_locked_documents_rels_labor_classifications_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["ribbon-submissionsID"]],
foreignColumns: [ribbon_submissions.id],
name: "payload_locked_documents_rels_ribbon_submissions_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["promotion-nominationsID"]],
foreignColumns: [promotion_nominations.id],
name: "payload_locked_documents_rels_promotion_nominations_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["leadership-transfersID"]],
foreignColumns: [leadership_transfers.id],
name: "payload_locked_documents_rels_leadership_transfers_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["mission-role-signupsID"]],
foreignColumns: [mission_role_signups.id],
name: "payload_locked_documents_rels_mission_role_signups_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["mission-map-markersID"]],
foreignColumns: [mission_map_markers.id],
name: "payload_locked_documents_rels_mission_map_markers_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["tech-categoriesID"]],
foreignColumns: [tech_categories.id],
name: "payload_locked_documents_rels_tech_categories_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["market-stateID"]],
foreignColumns: [market_state.id],
name: "payload_locked_documents_rels_market_state_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["voice-scriptsID"]],
foreignColumns: [voice_scripts.id],
name: "payload_locked_documents_rels_voice_scripts_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["voice-submissionsID"]],
foreignColumns: [voice_submissions.id],
name: "payload_locked_documents_rels_voice_submissions_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["wiki-pagesID"]],
foreignColumns: [wiki_pages.id],
name: "payload_locked_documents_rels_wiki_pages_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["wiki-revisionsID"]],
foreignColumns: [wiki_revisions.id],
name: "payload_locked_documents_rels_wiki_revisions_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["wiki-templatesID"]],
foreignColumns: [wiki_templates.id],
name: "payload_locked_documents_rels_wiki_templates_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["map-roadsID"]],
foreignColumns: [map_roads.id],
name: "payload_locked_documents_rels_map_roads_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["map-zonesID"]],
foreignColumns: [map_zones.id],
name: "payload_locked_documents_rels_map_zones_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["resource-nodesID"]],
foreignColumns: [resource_nodes.id],
name: "payload_locked_documents_rels_resource_nodes_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["story-beatsID"]],
foreignColumns: [story_beats.id],
name: "payload_locked_documents_rels_story_beats_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["story-beat-statesID"]],
foreignColumns: [story_beat_states.id],
name: "payload_locked_documents_rels_story_beat_states_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["story-voiceoversID"]],
foreignColumns: [story_voiceovers.id],
name: "payload_locked_documents_rels_story_voiceovers_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["respawn-ticketsID"]],
foreignColumns: [respawn_tickets.id],
name: "payload_locked_documents_rels_respawn_tickets_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["supply-boxesID"]],
foreignColumns: [supply_boxes.id],
name: "payload_locked_documents_rels_supply_boxes_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["operation-eventsID"]],
foreignColumns: [operation_events.id],
name: "payload_locked_documents_rels_operation_events_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["operation-effectsID"]],
foreignColumns: [operation_effects.id],
name: "payload_locked_documents_rels_operation_effects_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["operation-reservationsID"]],
foreignColumns: [operation_reservations.id],
name: "payload_locked_documents_rels_operation_reservations_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["operation-readinessID"]],
foreignColumns: [operation_readiness.id],
name: "payload_locked_documents_rels_operation_readiness_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["zone-pressureID"]],
foreignColumns: [zone_pressure.id],
name: "payload_locked_documents_rels_zone_pressure_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["custom-minefieldsID"]],
foreignColumns: [custom_minefields.id],
name: "payload_locked_documents_rels_custom_minefields_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["custom-minefield-scoresID"]],
foreignColumns: [custom_minefield_scores.id],
name: "payload_locked_documents_rels_custom_minefield_scores_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["custom-radio-testsID"]],
foreignColumns: [custom_radio_tests.id],
name: "payload_locked_documents_rels_custom_radio_tests_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["custom-radio-test-scoresID"]],
foreignColumns: [custom_radio_test_scores.id],
name: "payload_locked_documents_rels_custom_radio_test_scores_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["formsID"]],
foreignColumns: [forms.id],
name: "payload_locked_documents_rels_forms_fk",
}).onDelete("cascade"),
foreignKey({
columns: [columns["form-submissionsID"]],
foreignColumns: [form_submissions.id],
name: "payload_locked_documents_rels_form_submissions_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",
}),
currencyName: varchar("currency_name"),
currencySymbol: integer("currency_symbol_id").references(() => media.id, {
onDelete: "set null",
}),
currencySingular: varchar("currency_singular"),
currencyPlural: varchar("currency_plural"),
currencyDenomination: varchar("currency_denomination"),
infantryAssignment: integer("infantry_assignment_id").references(() => assignments.id, {
onDelete: "set null",
}),
proximityThreshold: numeric("proximity_threshold", { mode: "number" }).default(1000),
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),
staffHiringEnabled: boolean("staff_hiring_enabled").default(false),
staffHiringDisabledMessage: varchar("staff_hiring_disabled_message"),
economy_enabled: boolean("economy_enabled").default(false),
economy_defaultPriceBand: numeric("economy_default_price_band", { mode: "number" }).default(
0.5,
),
economy_realDemandWindowTicks: numeric("economy_real_demand_window_ticks", {
mode: "number",
}).default(24),
economy_realDemandDecay: numeric("economy_real_demand_decay", { mode: "number" }).default(0.5),
economy_artificialDemandDrift: numeric("economy_artificial_demand_drift", {
mode: "number",
}).default(0.05),
economy_coldStartObservations: numeric("economy_cold_start_observations", {
mode: "number",
}).default(5),
economy_tickIntervalHintMinutes: numeric("economy_tick_interval_hint_minutes", {
mode: "number",
}).default(60),
zonePressureEnabled: boolean("zone_pressure_enabled").default(true),
statisticsEnabled: boolean("statistics_enabled").default(true),
helpdeskEnabled: boolean("helpdesk_enabled").default(true),
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),
index("game_rules_currency_symbol_idx").on(columns.currencySymbol),
index("game_rules_infantry_assignment_idx").on(columns.infantryAssignment),
],
);
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_announcements_buttons = relations(announcements_buttons, ({ one }) => ({
_parentID: one(announcements, {
fields: [announcements_buttons._parentID],
references: [announcements.id],
relationName: "buttons",
}),
}));
export const relations_announcements_texts = relations(announcements_texts, ({ one }) => ({
parent: one(announcements, {
fields: [announcements_texts.parent],
references: [announcements.id],
relationName: "_texts",
}),
}));
export const relations_announcements_rels = relations(announcements_rels, ({ one }) => ({
parent: one(announcements, {
fields: [announcements_rels.parent],
references: [announcements.id],
relationName: "_rels",
}),
usersID: one(users, {
fields: [announcements_rels.usersID],
references: [users.id],
relationName: "users",
}),
rolesID: one(roles, {
fields: [announcements_rels.rolesID],
references: [roles.id],
relationName: "roles",
}),
}));
export const relations_announcements = relations(announcements, ({ many }) => ({
buttons: many(announcements_buttons, {
relationName: "buttons",
}),
_texts: many(announcements_texts, {
relationName: "_texts",
}),
_rels: many(announcements_rels, {
relationName: "_rels",
}),
}));
export const relations_game_hard_resources = relations(game_hard_resources, () => ({}));
export const relations_game_structures_labor_requirements = relations(
game_structures_labor_requirements,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_labor_requirements._parentID],
references: [game_structures.id],
relationName: "laborRequirements",
}),
classification: one(labor_classifications, {
fields: [game_structures_labor_requirements.classification],
references: [labor_classifications.id],
relationName: "classification",
}),
}),
);
export const relations_game_structures_staff_positions = relations(
game_structures_staff_positions,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_staff_positions._parentID],
references: [game_structures.id],
relationName: "staffPositions",
}),
}),
);
export const relations_game_structures_production_inputs = relations(
game_structures_production_inputs,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_production_inputs._parentID],
references: [game_structures.id],
relationName: "productionInputs",
}),
resource: one(resources, {
fields: [game_structures_production_inputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_game_structures_production_outputs = relations(
game_structures_production_outputs,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_production_outputs._parentID],
references: [game_structures.id],
relationName: "productionOutputs",
}),
resource: one(resources, {
fields: [game_structures_production_outputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_game_structures_installed_modules = relations(
game_structures_installed_modules,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_installed_modules._parentID],
references: [game_structures.id],
relationName: "installedModules",
}),
}),
);
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",
}),
map: one(maps, {
fields: [game_structures.map],
references: [maps.id],
relationName: "map",
}),
laborRequirements: many(game_structures_labor_requirements, {
relationName: "laborRequirements",
}),
staffPositions: many(game_structures_staff_positions, {
relationName: "staffPositions",
}),
productionInputs: many(game_structures_production_inputs, {
relationName: "productionInputs",
}),
productionOutputs: many(game_structures_production_outputs, {
relationName: "productionOutputs",
}),
installedModules: many(game_structures_installed_modules, {
relationName: "installedModules",
}),
parentStructure: one(game_structures, {
fields: [game_structures.parentStructure],
references: [game_structures.id],
relationName: "parentStructure",
}),
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_npc_staffing = relations(npc_staffing, ({ one }) => ({
npc: one(game_npcs, {
fields: [npc_staffing.npc],
references: [game_npcs.id],
relationName: "npc",
}),
structure: one(game_structures, {
fields: [npc_staffing.structure],
references: [game_structures.id],
relationName: "structure",
}),
laborClassification: one(labor_classifications, {
fields: [npc_staffing.laborClassification],
references: [labor_classifications.id],
relationName: "laborClassification",
}),
}));
export const relations_labor_classifications = relations(labor_classifications, () => ({}));
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",
}),
promotionCeiling: one(ranks, {
fields: [ranks.promotionCeiling],
references: [ranks.id],
relationName: "promotionCeiling",
}),
}));
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",
}),
upgradedFrom: one(awards, {
fields: [profiles_progression_awards.upgradedFrom],
references: [awards.id],
relationName: "upgradedFrom",
}),
}),
);
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",
}),
backgroundImage: one(media, {
fields: [awards.backgroundImage],
references: [media.id],
relationName: "backgroundImage",
}),
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_ribbon_submissions_grantor_types = relations(
ribbon_submissions_grantor_types,
({ one }) => ({
parent: one(ribbon_submissions, {
fields: [ribbon_submissions_grantor_types.parent],
references: [ribbon_submissions.id],
relationName: "grantorTypes",
}),
}),
);
export const relations_ribbon_submissions = relations(ribbon_submissions, ({ one, many }) => ({
user: one(users, {
fields: [ribbon_submissions.user],
references: [users.id],
relationName: "user",
}),
reviewedBy: one(users, {
fields: [ribbon_submissions.reviewedBy],
references: [users.id],
relationName: "reviewedBy",
}),
award: one(awards, {
fields: [ribbon_submissions.award],
references: [awards.id],
relationName: "award",
}),
grantorTypes: many(ribbon_submissions_grantor_types, {
relationName: "grantorTypes",
}),
}));
export const relations_promotion_nominations = relations(promotion_nominations, ({ one }) => ({
nominee: one(users, {
fields: [promotion_nominations.nominee],
references: [users.id],
relationName: "nominee",
}),
nominator: one(users, {
fields: [promotion_nominations.nominator],
references: [users.id],
relationName: "nominator",
}),
leaderDecisionBy: one(users, {
fields: [promotion_nominations.leaderDecisionBy],
references: [users.id],
relationName: "leaderDecisionBy",
}),
reviewedBy: one(users, {
fields: [promotion_nominations.reviewedBy],
references: [users.id],
relationName: "reviewedBy",
}),
}));
export const relations_leadership_transfers = relations(leadership_transfers, ({ one }) => ({
initiator: one(users, {
fields: [leadership_transfers.initiator],
references: [users.id],
relationName: "initiator",
}),
subject: one(users, {
fields: [leadership_transfers.subject],
references: [users.id],
relationName: "subject",
}),
fromAssignment: one(assignments, {
fields: [leadership_transfers.fromAssignment],
references: [assignments.id],
relationName: "fromAssignment",
}),
toAssignment: one(assignments, {
fields: [leadership_transfers.toAssignment],
references: [assignments.id],
relationName: "toAssignment",
}),
reviewedBy: one(users, {
fields: [leadership_transfers.reviewedBy],
references: [users.id],
relationName: "reviewedBy",
}),
}));
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 }) => ({
createdBy: one(users, {
fields: [missions.createdBy],
references: [users.id],
relationName: "createdBy",
}),
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_mission_role_signups = relations(mission_role_signups, ({ one }) => ({
mission: one(missions, {
fields: [mission_role_signups.mission],
references: [missions.id],
relationName: "mission",
}),
user: one(users, {
fields: [mission_role_signups.user],
references: [users.id],
relationName: "user",
}),
}));
export const relations_mission_map_markers = relations(mission_map_markers, ({ one }) => ({
mission: one(missions, {
fields: [mission_map_markers.mission],
references: [missions.id],
relationName: "mission",
}),
createdBy: one(users, {
fields: [mission_map_markers.createdBy],
references: [users.id],
relationName: "createdBy",
}),
}));
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, ({ one, many }) => ({
category: one(tech_categories, {
fields: [technologies.category],
references: [tech_categories.id],
relationName: "category",
}),
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_tech_categories = relations(tech_categories, () => ({}));
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_labor_requirements = relations(
structures_labor_requirements,
({ one }) => ({
_parentID: one(structures, {
fields: [structures_labor_requirements._parentID],
references: [structures.id],
relationName: "laborRequirements",
}),
classification: one(labor_classifications, {
fields: [structures_labor_requirements.classification],
references: [labor_classifications.id],
relationName: "classification",
}),
}),
);
export const relations_structures_staff_positions = relations(
structures_staff_positions,
({ one }) => ({
_parentID: one(structures, {
fields: [structures_staff_positions._parentID],
references: [structures.id],
relationName: "staffPositions",
}),
}),
);
export const relations_structures_production_inputs = relations(
structures_production_inputs,
({ one }) => ({
_parentID: one(structures, {
fields: [structures_production_inputs._parentID],
references: [structures.id],
relationName: "productionInputs",
}),
resource: one(resources, {
fields: [structures_production_inputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_structures_production_outputs = relations(
structures_production_outputs,
({ one }) => ({
_parentID: one(structures, {
fields: [structures_production_outputs._parentID],
references: [structures.id],
relationName: "productionOutputs",
}),
resource: one(resources, {
fields: [structures_production_outputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_structures_module_options_effects = relations(
structures_module_options_effects,
({ one }) => ({
_parentID: one(structures_module_options, {
fields: [structures_module_options_effects._parentID],
references: [structures_module_options.id],
relationName: "effects",
}),
}),
);
export const relations_structures_module_options_materials = relations(
structures_module_options_materials,
({ one }) => ({
_parentID: one(structures_module_options, {
fields: [structures_module_options_materials._parentID],
references: [structures_module_options.id],
relationName: "materials",
}),
resource: one(resources, {
fields: [structures_module_options_materials.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_structures_module_options = relations(
structures_module_options,
({ one, many }) => ({
_parentID: one(structures, {
fields: [structures_module_options._parentID],
references: [structures.id],
relationName: "moduleOptions",
}),
effects: many(structures_module_options_effects, {
relationName: "effects",
}),
materials: many(structures_module_options_materials, {
relationName: "materials",
}),
}),
);
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",
}),
laborRequirements: many(structures_labor_requirements, {
relationName: "laborRequirements",
}),
staffPositions: many(structures_staff_positions, {
relationName: "staffPositions",
}),
productionInputs: many(structures_production_inputs, {
relationName: "productionInputs",
}),
productionOutputs: many(structures_production_outputs, {
relationName: "productionOutputs",
}),
moduleOptions: many(structures_module_options, {
relationName: "moduleOptions",
}),
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",
}),
map: one(maps, {
fields: [shipments.map],
references: [maps.id],
relationName: "map",
}),
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_market_state = relations(market_state, () => ({}));
export const relations_voice_scripts = relations(voice_scripts, () => ({}));
export const relations_voice_submissions = relations(voice_submissions, ({ one }) => ({
script: one(voice_scripts, {
fields: [voice_submissions.script],
references: [voice_scripts.id],
relationName: "script",
}),
user: one(users, {
fields: [voice_submissions.user],
references: [users.id],
relationName: "user",
}),
}));
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_wiki_pages_texts = relations(wiki_pages_texts, ({ one }) => ({
parent: one(wiki_pages, {
fields: [wiki_pages_texts.parent],
references: [wiki_pages.id],
relationName: "_texts",
}),
}));
export const relations_wiki_pages = relations(wiki_pages, ({ one, many }) => ({
lockedBy: one(users, {
fields: [wiki_pages.lockedBy],
references: [users.id],
relationName: "lockedBy",
}),
lastEditor: one(users, {
fields: [wiki_pages.lastEditor],
references: [users.id],
relationName: "lastEditor",
}),
_texts: many(wiki_pages_texts, {
relationName: "_texts",
}),
}));
export const relations_wiki_revisions = relations(wiki_revisions, ({ one }) => ({
page: one(wiki_pages, {
fields: [wiki_revisions.page],
references: [wiki_pages.id],
relationName: "page",
}),
editor: one(users, {
fields: [wiki_revisions.editor],
references: [users.id],
relationName: "editor",
}),
}));
export const relations_wiki_templates = relations(wiki_templates, () => ({}));
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, ({ one }) => ({
campaign: one(campaigns, {
fields: [maps.campaign],
references: [campaigns.id],
relationName: "campaign",
}),
factionControl: one(factions, {
fields: [maps.factionControl],
references: [factions.id],
relationName: "factionControl",
}),
basemapImage: one(media, {
fields: [maps.basemapImage],
references: [media.id],
relationName: "basemapImage",
}),
}));
export const relations_map_roads = relations(map_roads, ({ one }) => ({
map: one(maps, {
fields: [map_roads.map],
references: [maps.id],
relationName: "map",
}),
}));
export const relations_map_zones_rels = relations(map_zones_rels, ({ one }) => ({
parent: one(map_zones, {
fields: [map_zones_rels.parent],
references: [map_zones.id],
relationName: "_rels",
}),
resourcesID: one(resources, {
fields: [map_zones_rels.resourcesID],
references: [resources.id],
relationName: "resources",
}),
}));
export const relations_map_zones = relations(map_zones, ({ one, many }) => ({
map: one(maps, {
fields: [map_zones.map],
references: [maps.id],
relationName: "map",
}),
_rels: many(map_zones_rels, {
relationName: "_rels",
}),
}));
export const relations_resource_nodes_rels = relations(resource_nodes_rels, ({ one }) => ({
parent: one(resource_nodes, {
fields: [resource_nodes_rels.parent],
references: [resource_nodes.id],
relationName: "_rels",
}),
resourcesID: one(resources, {
fields: [resource_nodes_rels.resourcesID],
references: [resources.id],
relationName: "resources",
}),
}));
export const relations_resource_nodes = relations(resource_nodes, ({ one, many }) => ({
map: one(maps, {
fields: [resource_nodes.map],
references: [maps.id],
relationName: "map",
}),
_rels: many(resource_nodes_rels, {
relationName: "_rels",
}),
}));
export const relations_narrative_events = relations(narrative_events, () => ({}));
export const relations_story_beats = relations(story_beats, ({ one }) => ({
mission: one(missions, {
fields: [story_beats.mission],
references: [missions.id],
relationName: "mission",
}),
voiceover: one(story_voiceovers, {
fields: [story_beats.voiceover],
references: [story_voiceovers.id],
relationName: "voiceover",
}),
}));
export const relations_story_beat_states = relations(story_beat_states, ({ one }) => ({
user: one(users, {
fields: [story_beat_states.user],
references: [users.id],
relationName: "user",
}),
beat: one(story_beats, {
fields: [story_beat_states.beat],
references: [story_beats.id],
relationName: "beat",
}),
}));
export const relations_story_voiceovers = relations(story_voiceovers, () => ({}));
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_respawn_tickets = relations(respawn_tickets, ({ one }) => ({
user: one(users, {
fields: [respawn_tickets.user],
references: [users.id],
relationName: "user",
}),
}));
export const relations_supply_boxes = relations(supply_boxes, ({ one }) => ({
server: one(game_servers, {
fields: [supply_boxes.server],
references: [game_servers.id],
relationName: "server",
}),
sourceEvent: one(arma_sync_events, {
fields: [supply_boxes.sourceEvent],
references: [arma_sync_events.id],
relationName: "sourceEvent",
}),
}));
export const relations_operation_events = relations(operation_events, ({ one }) => ({
sourceEvent: one(arma_sync_events, {
fields: [operation_events.sourceEvent],
references: [arma_sync_events.id],
relationName: "sourceEvent",
}),
actor: one(users, {
fields: [operation_events.actor],
references: [users.id],
relationName: "actor",
}),
server: one(game_servers, {
fields: [operation_events.server],
references: [game_servers.id],
relationName: "server",
}),
mission: one(missions, {
fields: [operation_events.mission],
references: [missions.id],
relationName: "mission",
}),
}));
export const relations_operation_effects = relations(operation_effects, ({ one }) => ({
operationEvent: one(operation_events, {
fields: [operation_effects.operationEvent],
references: [operation_events.id],
relationName: "operationEvent",
}),
sourceEvent: one(arma_sync_events, {
fields: [operation_effects.sourceEvent],
references: [arma_sync_events.id],
relationName: "sourceEvent",
}),
reversalOf: one(operation_effects, {
fields: [operation_effects.reversalOf],
references: [operation_effects.id],
relationName: "reversalOf",
}),
reversedBy: one(operation_effects, {
fields: [operation_effects.reversedBy],
references: [operation_effects.id],
relationName: "reversedBy",
}),
}));
export const relations_operation_reservations_personnel = relations(
operation_reservations_personnel,
({ one }) => ({
_parentID: one(operation_reservations, {
fields: [operation_reservations_personnel._parentID],
references: [operation_reservations.id],
relationName: "personnel",
}),
user: one(users, {
fields: [operation_reservations_personnel.user],
references: [users.id],
relationName: "user",
}),
}),
);
export const relations_operation_reservations_vehicles = relations(
operation_reservations_vehicles,
({ one }) => ({
_parentID: one(operation_reservations, {
fields: [operation_reservations_vehicles._parentID],
references: [operation_reservations.id],
relationName: "vehicles",
}),
vehicle: one(game_vehicles, {
fields: [operation_reservations_vehicles.vehicle],
references: [game_vehicles.id],
relationName: "vehicle",
}),
}),
);
export const relations_operation_reservations_cargo = relations(
operation_reservations_cargo,
({ one }) => ({
_parentID: one(operation_reservations, {
fields: [operation_reservations_cargo._parentID],
references: [operation_reservations.id],
relationName: "cargo",
}),
resource: one(resources, {
fields: [operation_reservations_cargo.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_operation_reservations = relations(
operation_reservations,
({ one, many }) => ({
mission: one(missions, {
fields: [operation_reservations.mission],
references: [missions.id],
relationName: "mission",
}),
personnel: many(operation_reservations_personnel, {
relationName: "personnel",
}),
vehicles: many(operation_reservations_vehicles, {
relationName: "vehicles",
}),
cargo: many(operation_reservations_cargo, {
relationName: "cargo",
}),
budget_account: one(bank_accounts, {
fields: [operation_reservations.budget_account],
references: [bank_accounts.id],
relationName: "budget_account",
}),
origin: one(game_structures, {
fields: [operation_reservations.origin],
references: [game_structures.id],
relationName: "origin",
}),
destination: one(game_structures, {
fields: [operation_reservations.destination],
references: [game_structures.id],
relationName: "destination",
}),
createdBy: one(users, {
fields: [operation_reservations.createdBy],
references: [users.id],
relationName: "createdBy",
}),
settledByEffect: one(operation_effects, {
fields: [operation_reservations.settledByEffect],
references: [operation_effects.id],
relationName: "settledByEffect",
}),
}),
);
export const relations_operation_readiness = relations(operation_readiness, () => ({}));
export const relations_zone_pressure = relations(zone_pressure, ({ one }) => ({
zone: one(map_zones, {
fields: [zone_pressure.zone],
references: [map_zones.id],
relationName: "zone",
}),
faction: one(factions, {
fields: [zone_pressure.faction],
references: [factions.id],
relationName: "faction",
}),
mission: one(missions, {
fields: [zone_pressure.mission],
references: [missions.id],
relationName: "mission",
}),
sourceEffect: one(operation_effects, {
fields: [zone_pressure.sourceEffect],
references: [operation_effects.id],
relationName: "sourceEffect",
}),
}));
export const relations_custom_minefields = relations(custom_minefields, ({ one }) => ({
author: one(users, {
fields: [custom_minefields.author],
references: [users.id],
relationName: "author",
}),
}));
export const relations_custom_minefield_scores = relations(custom_minefield_scores, ({ one }) => ({
minefield: one(custom_minefields, {
fields: [custom_minefield_scores.minefield],
references: [custom_minefields.id],
relationName: "minefield",
}),
user: one(users, {
fields: [custom_minefield_scores.user],
references: [users.id],
relationName: "user",
}),
}));
export const relations_custom_radio_tests = relations(custom_radio_tests, ({ one }) => ({
author: one(users, {
fields: [custom_radio_tests.author],
references: [users.id],
relationName: "author",
}),
}));
export const relations_custom_radio_test_scores = relations(
custom_radio_test_scores,
({ one }) => ({
test: one(custom_radio_tests, {
fields: [custom_radio_test_scores.test],
references: [custom_radio_tests.id],
relationName: "test",
}),
user: one(users, {
fields: [custom_radio_test_scores.user],
references: [users.id],
relationName: "user",
}),
}),
);
export const relations_forms_blocks_checkbox = relations(forms_blocks_checkbox, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_checkbox._parentID],
references: [forms.id],
relationName: "_blocks_checkbox",
}),
}));
export const relations_forms_blocks_country = relations(forms_blocks_country, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_country._parentID],
references: [forms.id],
relationName: "_blocks_country",
}),
}));
export const relations_forms_blocks_email = relations(forms_blocks_email, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_email._parentID],
references: [forms.id],
relationName: "_blocks_email",
}),
}));
export const relations_forms_blocks_message = relations(forms_blocks_message, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_message._parentID],
references: [forms.id],
relationName: "_blocks_message",
}),
}));
export const relations_forms_blocks_number = relations(forms_blocks_number, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_number._parentID],
references: [forms.id],
relationName: "_blocks_number",
}),
}));
export const relations_forms_blocks_select_options = relations(
forms_blocks_select_options,
({ one }) => ({
_parentID: one(forms_blocks_select, {
fields: [forms_blocks_select_options._parentID],
references: [forms_blocks_select.id],
relationName: "options",
}),
}),
);
export const relations_forms_blocks_select = relations(forms_blocks_select, ({ one, many }) => ({
_parentID: one(forms, {
fields: [forms_blocks_select._parentID],
references: [forms.id],
relationName: "_blocks_select",
}),
options: many(forms_blocks_select_options, {
relationName: "options",
}),
}));
export const relations_forms_blocks_state = relations(forms_blocks_state, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_state._parentID],
references: [forms.id],
relationName: "_blocks_state",
}),
}));
export const relations_forms_blocks_text = relations(forms_blocks_text, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_text._parentID],
references: [forms.id],
relationName: "_blocks_text",
}),
}));
export const relations_forms_blocks_textarea = relations(forms_blocks_textarea, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_textarea._parentID],
references: [forms.id],
relationName: "_blocks_textarea",
}),
}));
export const relations_forms_blocks_radio_options = relations(
forms_blocks_radio_options,
({ one }) => ({
_parentID: one(forms_blocks_radio, {
fields: [forms_blocks_radio_options._parentID],
references: [forms_blocks_radio.id],
relationName: "options",
}),
}),
);
export const relations_forms_blocks_radio = relations(forms_blocks_radio, ({ one, many }) => ({
_parentID: one(forms, {
fields: [forms_blocks_radio._parentID],
references: [forms.id],
relationName: "_blocks_radio",
}),
options: many(forms_blocks_radio_options, {
relationName: "options",
}),
}));
export const relations_forms_blocks_date = relations(forms_blocks_date, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_blocks_date._parentID],
references: [forms.id],
relationName: "_blocks_date",
}),
}));
export const relations_forms_emails = relations(forms_emails, ({ one }) => ({
_parentID: one(forms, {
fields: [forms_emails._parentID],
references: [forms.id],
relationName: "emails",
}),
}));
export const relations_forms_rels = relations(forms_rels, ({ one }) => ({
parent: one(forms, {
fields: [forms_rels.parent],
references: [forms.id],
relationName: "_rels",
}),
usersID: one(users, {
fields: [forms_rels.usersID],
references: [users.id],
relationName: "users",
}),
rolesID: one(roles, {
fields: [forms_rels.rolesID],
references: [roles.id],
relationName: "roles",
}),
qualificationsID: one(qualifications, {
fields: [forms_rels.qualificationsID],
references: [qualifications.id],
relationName: "qualifications",
}),
}));
export const relations_forms = relations(forms, ({ many }) => ({
_blocks_checkbox: many(forms_blocks_checkbox, {
relationName: "_blocks_checkbox",
}),
_blocks_country: many(forms_blocks_country, {
relationName: "_blocks_country",
}),
_blocks_email: many(forms_blocks_email, {
relationName: "_blocks_email",
}),
_blocks_message: many(forms_blocks_message, {
relationName: "_blocks_message",
}),
_blocks_number: many(forms_blocks_number, {
relationName: "_blocks_number",
}),
_blocks_select: many(forms_blocks_select, {
relationName: "_blocks_select",
}),
_blocks_state: many(forms_blocks_state, {
relationName: "_blocks_state",
}),
_blocks_text: many(forms_blocks_text, {
relationName: "_blocks_text",
}),
_blocks_textarea: many(forms_blocks_textarea, {
relationName: "_blocks_textarea",
}),
_blocks_radio: many(forms_blocks_radio, {
relationName: "_blocks_radio",
}),
_blocks_date: many(forms_blocks_date, {
relationName: "_blocks_date",
}),
emails: many(forms_emails, {
relationName: "emails",
}),
_rels: many(forms_rels, {
relationName: "_rels",
}),
}));
export const relations_form_submissions_submission_data = relations(
form_submissions_submission_data,
({ one }) => ({
_parentID: one(form_submissions, {
fields: [form_submissions_submission_data._parentID],
references: [form_submissions.id],
relationName: "submissionData",
}),
}),
);
export const relations_form_submissions = relations(form_submissions, ({ one, many }) => ({
form: one(forms, {
fields: [form_submissions.form],
references: [forms.id],
relationName: "form",
}),
submissionData: many(form_submissions_submission_data, {
relationName: "submissionData",
}),
user: one(users, {
fields: [form_submissions.user],
references: [users.id],
relationName: "user",
}),
}));
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",
}),
announcementsID: one(announcements, {
fields: [payload_locked_documents_rels.announcementsID],
references: [announcements.id],
relationName: "announcements",
}),
"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",
}),
"npc-staffingID": one(npc_staffing, {
fields: [payload_locked_documents_rels["npc-staffingID"]],
references: [npc_staffing.id],
relationName: "npc-staffing",
}),
"labor-classificationsID": one(labor_classifications, {
fields: [payload_locked_documents_rels["labor-classificationsID"]],
references: [labor_classifications.id],
relationName: "labor-classifications",
}),
"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",
}),
"ribbon-submissionsID": one(ribbon_submissions, {
fields: [payload_locked_documents_rels["ribbon-submissionsID"]],
references: [ribbon_submissions.id],
relationName: "ribbon-submissions",
}),
"promotion-nominationsID": one(promotion_nominations, {
fields: [payload_locked_documents_rels["promotion-nominationsID"]],
references: [promotion_nominations.id],
relationName: "promotion-nominations",
}),
"leadership-transfersID": one(leadership_transfers, {
fields: [payload_locked_documents_rels["leadership-transfersID"]],
references: [leadership_transfers.id],
relationName: "leadership-transfers",
}),
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",
}),
"mission-role-signupsID": one(mission_role_signups, {
fields: [payload_locked_documents_rels["mission-role-signupsID"]],
references: [mission_role_signups.id],
relationName: "mission-role-signups",
}),
"mission-map-markersID": one(mission_map_markers, {
fields: [payload_locked_documents_rels["mission-map-markersID"]],
references: [mission_map_markers.id],
relationName: "mission-map-markers",
}),
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",
}),
"tech-categoriesID": one(tech_categories, {
fields: [payload_locked_documents_rels["tech-categoriesID"]],
references: [tech_categories.id],
relationName: "tech-categories",
}),
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",
}),
"market-stateID": one(market_state, {
fields: [payload_locked_documents_rels["market-stateID"]],
references: [market_state.id],
relationName: "market-state",
}),
"voice-scriptsID": one(voice_scripts, {
fields: [payload_locked_documents_rels["voice-scriptsID"]],
references: [voice_scripts.id],
relationName: "voice-scripts",
}),
"voice-submissionsID": one(voice_submissions, {
fields: [payload_locked_documents_rels["voice-submissionsID"]],
references: [voice_submissions.id],
relationName: "voice-submissions",
}),
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",
}),
"wiki-pagesID": one(wiki_pages, {
fields: [payload_locked_documents_rels["wiki-pagesID"]],
references: [wiki_pages.id],
relationName: "wiki-pages",
}),
"wiki-revisionsID": one(wiki_revisions, {
fields: [payload_locked_documents_rels["wiki-revisionsID"]],
references: [wiki_revisions.id],
relationName: "wiki-revisions",
}),
"wiki-templatesID": one(wiki_templates, {
fields: [payload_locked_documents_rels["wiki-templatesID"]],
references: [wiki_templates.id],
relationName: "wiki-templates",
}),
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",
}),
"map-roadsID": one(map_roads, {
fields: [payload_locked_documents_rels["map-roadsID"]],
references: [map_roads.id],
relationName: "map-roads",
}),
"map-zonesID": one(map_zones, {
fields: [payload_locked_documents_rels["map-zonesID"]],
references: [map_zones.id],
relationName: "map-zones",
}),
"resource-nodesID": one(resource_nodes, {
fields: [payload_locked_documents_rels["resource-nodesID"]],
references: [resource_nodes.id],
relationName: "resource-nodes",
}),
"narrative-eventsID": one(narrative_events, {
fields: [payload_locked_documents_rels["narrative-eventsID"]],
references: [narrative_events.id],
relationName: "narrative-events",
}),
"story-beatsID": one(story_beats, {
fields: [payload_locked_documents_rels["story-beatsID"]],
references: [story_beats.id],
relationName: "story-beats",
}),
"story-beat-statesID": one(story_beat_states, {
fields: [payload_locked_documents_rels["story-beat-statesID"]],
references: [story_beat_states.id],
relationName: "story-beat-states",
}),
"story-voiceoversID": one(story_voiceovers, {
fields: [payload_locked_documents_rels["story-voiceoversID"]],
references: [story_voiceovers.id],
relationName: "story-voiceovers",
}),
"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",
}),
"respawn-ticketsID": one(respawn_tickets, {
fields: [payload_locked_documents_rels["respawn-ticketsID"]],
references: [respawn_tickets.id],
relationName: "respawn-tickets",
}),
"supply-boxesID": one(supply_boxes, {
fields: [payload_locked_documents_rels["supply-boxesID"]],
references: [supply_boxes.id],
relationName: "supply-boxes",
}),
"operation-eventsID": one(operation_events, {
fields: [payload_locked_documents_rels["operation-eventsID"]],
references: [operation_events.id],
relationName: "operation-events",
}),
"operation-effectsID": one(operation_effects, {
fields: [payload_locked_documents_rels["operation-effectsID"]],
references: [operation_effects.id],
relationName: "operation-effects",
}),
"operation-reservationsID": one(operation_reservations, {
fields: [payload_locked_documents_rels["operation-reservationsID"]],
references: [operation_reservations.id],
relationName: "operation-reservations",
}),
"operation-readinessID": one(operation_readiness, {
fields: [payload_locked_documents_rels["operation-readinessID"]],
references: [operation_readiness.id],
relationName: "operation-readiness",
}),
"zone-pressureID": one(zone_pressure, {
fields: [payload_locked_documents_rels["zone-pressureID"]],
references: [zone_pressure.id],
relationName: "zone-pressure",
}),
"custom-minefieldsID": one(custom_minefields, {
fields: [payload_locked_documents_rels["custom-minefieldsID"]],
references: [custom_minefields.id],
relationName: "custom-minefields",
}),
"custom-minefield-scoresID": one(custom_minefield_scores, {
fields: [payload_locked_documents_rels["custom-minefield-scoresID"]],
references: [custom_minefield_scores.id],
relationName: "custom-minefield-scores",
}),
"custom-radio-testsID": one(custom_radio_tests, {
fields: [payload_locked_documents_rels["custom-radio-testsID"]],
references: [custom_radio_tests.id],
relationName: "custom-radio-tests",
}),
"custom-radio-test-scoresID": one(custom_radio_test_scores, {
fields: [payload_locked_documents_rels["custom-radio-test-scoresID"]],
references: [custom_radio_test_scores.id],
relationName: "custom-radio-test-scores",
}),
formsID: one(forms, {
fields: [payload_locked_documents_rels.formsID],
references: [forms.id],
relationName: "forms",
}),
"form-submissionsID": one(form_submissions, {
fields: [payload_locked_documents_rels["form-submissionsID"]],
references: [form_submissions.id],
relationName: "form-submissions",
}),
"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",
}),
currencySymbol: one(media, {
fields: [game_rules.currencySymbol],
references: [media.id],
relationName: "currencySymbol",
}),
infantryAssignment: one(assignments, {
fields: [game_rules.infantryAssignment],
references: [assignments.id],
relationName: "infantryAssignment",
}),
_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_announcements_buttons_style: typeof enum_announcements_buttons_style;
enum_announcements_variant: typeof enum_announcements_variant;
enum_announcements_display_type: typeof enum_announcements_display_type;
enum_announcements_targeting_audience: typeof enum_announcements_targeting_audience;
enum_announcements_paths_match_type: typeof enum_announcements_paths_match_type;
enum_game_structures_staff_positions_position_type: typeof enum_game_structures_staff_positions_position_type;
enum_game_structures_construction_status: typeof enum_game_structures_construction_status;
enum_game_vehicles_status: typeof enum_game_vehicles_status;
enum_npc_staffing_position_type: typeof enum_npc_staffing_position_type;
enum_npc_staffing_status: typeof enum_npc_staffing_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_ribbon_submissions_grantor_types: typeof enum_ribbon_submissions_grantor_types;
enum_ribbon_submissions_status: typeof enum_ribbon_submissions_status;
enum_ribbon_submissions_recipient_scope: typeof enum_ribbon_submissions_recipient_scope;
enum_promotion_nominations_status: typeof enum_promotion_nominations_status;
enum_promotion_nominations_leader_decision: typeof enum_promotion_nominations_leader_decision;
enum_leadership_transfers_status: typeof enum_leadership_transfers_status;
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_mission_map_markers_shape: typeof enum_mission_map_markers_shape;
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_transport_mode: typeof enum_vehicles_transport_mode;
enum_vehicles_armor_rating: typeof enum_vehicles_armor_rating;
enum_structures_staff_positions_position_type: typeof enum_structures_staff_positions_position_type;
enum_structures_module_options_effects_type: typeof enum_structures_module_options_effects_type;
enum_structures_module_options_category: typeof enum_structures_module_options_category;
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_aura_effect_type: typeof enum_structures_aura_effect_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_market_state_item_type: typeof enum_market_state_item_type;
enum_voice_scripts_status: typeof enum_voice_scripts_status;
enum_voice_submissions_status: typeof enum_voice_submissions_status;
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_wiki_pages_category: typeof enum_wiki_pages_category;
enum_wiki_revisions_type: typeof enum_wiki_revisions_type;
enum_projects_status: typeof enum_projects_status;
enum_sprints_status: typeof enum_sprints_status;
enum_releases_status: typeof enum_releases_status;
enum_maps_ease_of_access: typeof enum_maps_ease_of_access;
enum_maps_basemap_mode: typeof enum_maps_basemap_mode;
enum_map_roads_surface: typeof enum_map_roads_surface;
enum_map_roads_stroke_style: typeof enum_map_roads_stroke_style;
enum_map_zones_type: typeof enum_map_zones_type;
enum_resource_nodes_icon: typeof enum_resource_nodes_icon;
enum_narrative_events_triggers_type: typeof enum_narrative_events_triggers_type;
enum_story_beats_status: typeof enum_story_beats_status;
enum_story_beat_states_reaction: typeof enum_story_beat_states_reaction;
enum_game_servers_status: typeof enum_game_servers_status;
enum_arma_commands_status: typeof enum_arma_commands_status;
enum_supply_boxes_status: typeof enum_supply_boxes_status;
enum_operation_events_status: typeof enum_operation_events_status;
enum_operation_effects_effect_type: typeof enum_operation_effects_effect_type;
enum_operation_effects_status: typeof enum_operation_effects_status;
enum_operation_reservations_status: typeof enum_operation_reservations_status;
enum_operation_readiness_subject_type: typeof enum_operation_readiness_subject_type;
enum_operation_readiness_nature: typeof enum_operation_readiness_nature;
enum_custom_radio_tests_order: typeof enum_custom_radio_tests_order;
enum_custom_radio_test_scores_mode: typeof enum_custom_radio_test_scores_mode;
enum_forms_confirmation_type: typeof enum_forms_confirmation_type;
enum_forms_targeting_audience: typeof enum_forms_targeting_audience;
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;
announcements_buttons: typeof announcements_buttons;
announcements: typeof announcements;
announcements_texts: typeof announcements_texts;
announcements_rels: typeof announcements_rels;
game_hard_resources: typeof game_hard_resources;
game_structures_labor_requirements: typeof game_structures_labor_requirements;
game_structures_staff_positions: typeof game_structures_staff_positions;
game_structures_production_inputs: typeof game_structures_production_inputs;
game_structures_production_outputs: typeof game_structures_production_outputs;
game_structures_installed_modules: typeof game_structures_installed_modules;
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;
npc_staffing: typeof npc_staffing;
labor_classifications: typeof labor_classifications;
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;
ribbon_submissions_grantor_types: typeof ribbon_submissions_grantor_types;
ribbon_submissions: typeof ribbon_submissions;
promotion_nominations: typeof promotion_nominations;
leadership_transfers: typeof leadership_transfers;
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;
mission_role_signups: typeof mission_role_signups;
mission_map_markers: typeof mission_map_markers;
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;
tech_categories: typeof tech_categories;
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_labor_requirements: typeof structures_labor_requirements;
structures_staff_positions: typeof structures_staff_positions;
structures_production_inputs: typeof structures_production_inputs;
structures_production_outputs: typeof structures_production_outputs;
structures_module_options_effects: typeof structures_module_options_effects;
structures_module_options_materials: typeof structures_module_options_materials;
structures_module_options: typeof structures_module_options;
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;
market_state: typeof market_state;
voice_scripts: typeof voice_scripts;
voice_submissions: typeof voice_submissions;
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;
wiki_pages: typeof wiki_pages;
wiki_pages_texts: typeof wiki_pages_texts;
wiki_revisions: typeof wiki_revisions;
wiki_templates: typeof wiki_templates;
projects: typeof projects;
sprints: typeof sprints;
releases: typeof releases;
labels: typeof labels;
maps: typeof maps;
map_roads: typeof map_roads;
map_zones: typeof map_zones;
map_zones_rels: typeof map_zones_rels;
resource_nodes: typeof resource_nodes;
resource_nodes_rels: typeof resource_nodes_rels;
narrative_events: typeof narrative_events;
story_beats: typeof story_beats;
story_beat_states: typeof story_beat_states;
story_voiceovers: typeof story_voiceovers;
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;
respawn_tickets: typeof respawn_tickets;
supply_boxes: typeof supply_boxes;
operation_events: typeof operation_events;
operation_effects: typeof operation_effects;
operation_reservations_personnel: typeof operation_reservations_personnel;
operation_reservations_vehicles: typeof operation_reservations_vehicles;
operation_reservations_cargo: typeof operation_reservations_cargo;
operation_reservations: typeof operation_reservations;
operation_readiness: typeof operation_readiness;
zone_pressure: typeof zone_pressure;
custom_minefields: typeof custom_minefields;
custom_minefield_scores: typeof custom_minefield_scores;
custom_radio_tests: typeof custom_radio_tests;
custom_radio_test_scores: typeof custom_radio_test_scores;
forms_blocks_checkbox: typeof forms_blocks_checkbox;
forms_blocks_country: typeof forms_blocks_country;
forms_blocks_email: typeof forms_blocks_email;
forms_blocks_message: typeof forms_blocks_message;
forms_blocks_number: typeof forms_blocks_number;
forms_blocks_select_options: typeof forms_blocks_select_options;
forms_blocks_select: typeof forms_blocks_select;
forms_blocks_state: typeof forms_blocks_state;
forms_blocks_text: typeof forms_blocks_text;
forms_blocks_textarea: typeof forms_blocks_textarea;
forms_blocks_radio_options: typeof forms_blocks_radio_options;
forms_blocks_radio: typeof forms_blocks_radio;
forms_blocks_date: typeof forms_blocks_date;
forms_emails: typeof forms_emails;
forms: typeof forms;
forms_rels: typeof forms_rels;
form_submissions_submission_data: typeof form_submissions_submission_data;
form_submissions: typeof form_submissions;
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_announcements_buttons: typeof relations_announcements_buttons;
relations_announcements_texts: typeof relations_announcements_texts;
relations_announcements_rels: typeof relations_announcements_rels;
relations_announcements: typeof relations_announcements;
relations_game_hard_resources: typeof relations_game_hard_resources;
relations_game_structures_labor_requirements: typeof relations_game_structures_labor_requirements;
relations_game_structures_staff_positions: typeof relations_game_structures_staff_positions;
relations_game_structures_production_inputs: typeof relations_game_structures_production_inputs;
relations_game_structures_production_outputs: typeof relations_game_structures_production_outputs;
relations_game_structures_installed_modules: typeof relations_game_structures_installed_modules;
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_npc_staffing: typeof relations_npc_staffing;
relations_labor_classifications: typeof relations_labor_classifications;
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_ribbon_submissions_grantor_types: typeof relations_ribbon_submissions_grantor_types;
relations_ribbon_submissions: typeof relations_ribbon_submissions;
relations_promotion_nominations: typeof relations_promotion_nominations;
relations_leadership_transfers: typeof relations_leadership_transfers;
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_mission_role_signups: typeof relations_mission_role_signups;
relations_mission_map_markers: typeof relations_mission_map_markers;
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_tech_categories: typeof relations_tech_categories;
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_labor_requirements: typeof relations_structures_labor_requirements;
relations_structures_staff_positions: typeof relations_structures_staff_positions;
relations_structures_production_inputs: typeof relations_structures_production_inputs;
relations_structures_production_outputs: typeof relations_structures_production_outputs;
relations_structures_module_options_effects: typeof relations_structures_module_options_effects;
relations_structures_module_options_materials: typeof relations_structures_module_options_materials;
relations_structures_module_options: typeof relations_structures_module_options;
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_market_state: typeof relations_market_state;
relations_voice_scripts: typeof relations_voice_scripts;
relations_voice_submissions: typeof relations_voice_submissions;
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_wiki_pages_texts: typeof relations_wiki_pages_texts;
relations_wiki_pages: typeof relations_wiki_pages;
relations_wiki_revisions: typeof relations_wiki_revisions;
relations_wiki_templates: typeof relations_wiki_templates;
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_map_roads: typeof relations_map_roads;
relations_map_zones_rels: typeof relations_map_zones_rels;
relations_map_zones: typeof relations_map_zones;
relations_resource_nodes_rels: typeof relations_resource_nodes_rels;
relations_resource_nodes: typeof relations_resource_nodes;
relations_narrative_events: typeof relations_narrative_events;
relations_story_beats: typeof relations_story_beats;
relations_story_beat_states: typeof relations_story_beat_states;
relations_story_voiceovers: typeof relations_story_voiceovers;
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_respawn_tickets: typeof relations_respawn_tickets;
relations_supply_boxes: typeof relations_supply_boxes;
relations_operation_events: typeof relations_operation_events;
relations_operation_effects: typeof relations_operation_effects;
relations_operation_reservations_personnel: typeof relations_operation_reservations_personnel;
relations_operation_reservations_vehicles: typeof relations_operation_reservations_vehicles;
relations_operation_reservations_cargo: typeof relations_operation_reservations_cargo;
relations_operation_reservations: typeof relations_operation_reservations;
relations_operation_readiness: typeof relations_operation_readiness;
relations_zone_pressure: typeof relations_zone_pressure;
relations_custom_minefields: typeof relations_custom_minefields;
relations_custom_minefield_scores: typeof relations_custom_minefield_scores;
relations_custom_radio_tests: typeof relations_custom_radio_tests;
relations_custom_radio_test_scores: typeof relations_custom_radio_test_scores;
relations_forms_blocks_checkbox: typeof relations_forms_blocks_checkbox;
relations_forms_blocks_country: typeof relations_forms_blocks_country;
relations_forms_blocks_email: typeof relations_forms_blocks_email;
relations_forms_blocks_message: typeof relations_forms_blocks_message;
relations_forms_blocks_number: typeof relations_forms_blocks_number;
relations_forms_blocks_select_options: typeof relations_forms_blocks_select_options;
relations_forms_blocks_select: typeof relations_forms_blocks_select;
relations_forms_blocks_state: typeof relations_forms_blocks_state;
relations_forms_blocks_text: typeof relations_forms_blocks_text;
relations_forms_blocks_textarea: typeof relations_forms_blocks_textarea;
relations_forms_blocks_radio_options: typeof relations_forms_blocks_radio_options;
relations_forms_blocks_radio: typeof relations_forms_blocks_radio;
relations_forms_blocks_date: typeof relations_forms_blocks_date;
relations_forms_emails: typeof relations_forms_emails;
relations_forms_rels: typeof relations_forms_rels;
relations_forms: typeof relations_forms;
relations_form_submissions_submission_data: typeof relations_form_submissions_submission_data;
relations_form_submissions: typeof relations_form_submissions;
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;
}
}