15 minutes before a posted op starts, the bot opens a thread on the roll-call message and pings everyone who RSVP'd yes, as a last-call nudge that the op is imminent. One-shot per mission via a new imminentReminderSentAt marker on Missions (migration included); the cancel flow clears it so a rescheduled op re-reminds for its new start time. Poll cadence via DISCORD_IMMINENT_POLL_MS (default 60s).
9179 lines
332 KiB
TypeScript
9179 lines
332 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,
|
|
jsonb,
|
|
integer,
|
|
boolean,
|
|
type AnyPgColumn,
|
|
pgEnum,
|
|
} from "@payloadcms/db-postgres/drizzle/pg-core";
|
|
import { sql, relations } from "@payloadcms/db-postgres/drizzle";
|
|
import { geometryColumn } from "@payloadcms/db-postgres";
|
|
export const enum_game_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",
|
|
],
|
|
);
|
|
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",
|
|
],
|
|
);
|
|
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",
|
|
],
|
|
);
|
|
export const enum_users_preferences_display_lead_or_actual = pgEnum(
|
|
"enum_users_preferences_display_lead_or_actual",
|
|
["lead", "actual"],
|
|
);
|
|
export const enum_roles_permissions = pgEnum("enum_roles_permissions", [
|
|
"system:admin-access",
|
|
"media:create",
|
|
"media:read",
|
|
"media:update",
|
|
"media:delete",
|
|
"admin:media:manage",
|
|
"users:create",
|
|
"users:read",
|
|
"users:update",
|
|
"users:delete",
|
|
"users:unlock",
|
|
"users:assign-roles",
|
|
"admin:users:manage",
|
|
"roles:create",
|
|
"roles:read",
|
|
"roles:update",
|
|
"roles:delete",
|
|
"admin:roles:manage",
|
|
"ranks:create",
|
|
"ranks:read",
|
|
"ranks:update",
|
|
"ranks:delete",
|
|
"admin:ranks:manage",
|
|
"profiles:create",
|
|
"profiles:read",
|
|
"profiles:update",
|
|
"profiles:delete",
|
|
"admin:profiles:manage",
|
|
"awards:create",
|
|
"awards:read",
|
|
"awards:update",
|
|
"awards:delete",
|
|
"admin:awards:manage",
|
|
"qualifications:create",
|
|
"qualifications:read",
|
|
"qualifications:update",
|
|
"qualifications:delete",
|
|
"admin:qualifications:manage",
|
|
"assignments:create",
|
|
"assignments:read",
|
|
"assignments:update",
|
|
"assignments:delete",
|
|
"admin:assignments:manage",
|
|
"assignment-transfers:create",
|
|
"assignment-transfers:read",
|
|
"assignment-transfers:update",
|
|
"assignment-transfers:delete",
|
|
"admin:assignment-transfers:manage",
|
|
"experience:create",
|
|
"experience:read",
|
|
"experience:update",
|
|
"experience:delete",
|
|
"admin:experience:manage",
|
|
"user-notifications:create",
|
|
"user-notifications:read",
|
|
"user-notifications:update",
|
|
"user-notifications:delete",
|
|
"admin:user-notifications:manage",
|
|
"evaluations:create",
|
|
"evaluations:read",
|
|
"evaluations:update",
|
|
"evaluations:delete",
|
|
"admin:evaluations:manage",
|
|
"missions:create",
|
|
"missions:read",
|
|
"missions:update",
|
|
"missions:delete",
|
|
"missions:read-sensitive",
|
|
"admin:missions:manage",
|
|
"mission-attendances:create",
|
|
"mission-attendances:read",
|
|
"mission-attendances:update",
|
|
"mission-attendances:delete",
|
|
"admin:mission-attendances:manage",
|
|
"campaigns:create",
|
|
"campaigns:read",
|
|
"campaigns:update",
|
|
"campaigns:delete",
|
|
"admin:campaigns:manage",
|
|
"campaigns:manage",
|
|
"factions:create",
|
|
"factions:read",
|
|
"factions:update",
|
|
"factions:delete",
|
|
"admin:factions:manage",
|
|
"technologies:create",
|
|
"technologies:read",
|
|
"technologies:update",
|
|
"technologies:delete",
|
|
"admin:technologies:manage",
|
|
"assets:create",
|
|
"assets:read",
|
|
"assets:update",
|
|
"assets:delete",
|
|
"admin:assets:manage",
|
|
"resources:create",
|
|
"resources:read",
|
|
"resources:update",
|
|
"resources:delete",
|
|
"admin:resources:manage",
|
|
"vehicles:create",
|
|
"vehicles:read",
|
|
"vehicles:update",
|
|
"vehicles:delete",
|
|
"admin:vehicles:manage",
|
|
"structures:create",
|
|
"structures:read",
|
|
"structures:update",
|
|
"structures:delete",
|
|
"admin:structures:manage",
|
|
"shipments:create",
|
|
"shipments:read",
|
|
"shipments:update",
|
|
"shipments:delete",
|
|
"admin:shipments:manage",
|
|
"bank-accounts:create",
|
|
"bank-accounts:read",
|
|
"bank-accounts:update",
|
|
"bank-accounts:delete",
|
|
"admin:bank-accounts:manage",
|
|
"bank-transactions:create",
|
|
"bank-transactions:read",
|
|
"bank-transactions:update",
|
|
"bank-transactions:delete",
|
|
"admin:bank-transactions:manage",
|
|
"ledger-entries:create",
|
|
"ledger-entries:read",
|
|
"ledger-entries:update",
|
|
"ledger-entries:delete",
|
|
"admin:ledger-entries:manage",
|
|
"locker-storages:create",
|
|
"locker-storages:read",
|
|
"locker-storages:update",
|
|
"locker-storages:delete",
|
|
"admin:locker-storages:manage",
|
|
"loadouts:create",
|
|
"loadouts:read",
|
|
"loadouts:update",
|
|
"loadouts:delete",
|
|
"admin:loadouts:manage",
|
|
"market-listings:create",
|
|
"market-listings:read",
|
|
"market-listings:update",
|
|
"market-listings:delete",
|
|
"admin:market-listings:manage",
|
|
"market-negotiations:create",
|
|
"market-negotiations:read",
|
|
"market-negotiations:update",
|
|
"market-negotiations:delete",
|
|
"admin:market-negotiations:manage",
|
|
"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",
|
|
"admin:maps:manage",
|
|
"map-roads:read",
|
|
"admin:map-roads:manage",
|
|
"map-zones:read",
|
|
"admin:map-zones:manage",
|
|
"resource-nodes:read",
|
|
"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",
|
|
"game-servers:create",
|
|
"game-servers:read",
|
|
"game-servers:update",
|
|
"game-servers:delete",
|
|
"admin:game-servers:manage",
|
|
"arma-sync-events:create",
|
|
"arma-sync-events:read",
|
|
"arma-sync-events:update",
|
|
"arma-sync-events:delete",
|
|
"admin:arma-sync-events:manage",
|
|
"arma-commands:create",
|
|
"arma-commands:read",
|
|
"arma-commands:update",
|
|
"arma-commands:delete",
|
|
"admin:arma-commands:manage",
|
|
"game-rules:read",
|
|
"game-rules:update",
|
|
"shims:read",
|
|
"shims:update",
|
|
"logistics:manage",
|
|
"intelligence:manage",
|
|
"profiles:intel_excerpt:update",
|
|
"banking:manage",
|
|
"tickets:staff",
|
|
"discord:staff",
|
|
"discord:announce",
|
|
"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_missions_factions_involved_threat_level = pgEnum(
|
|
"enum_missions_factions_involved_threat_level",
|
|
["ally", "friendly", "neutral", "hostile"],
|
|
);
|
|
export const enum_missions_logistics_and_support_insertion = pgEnum(
|
|
"enum_missions_logistics_and_support_insertion",
|
|
["helicopter", "aircraft", "paradrop", "boat", "car", "onFoot"],
|
|
);
|
|
export const enum_missions_logistics_and_support_extraction = pgEnum(
|
|
"enum_missions_logistics_and_support_extraction",
|
|
["helicopter", "aircraft", "paradrop", "boat", "car", "onFoot"],
|
|
);
|
|
export const enum_missions_operation_type = pgEnum("enum_missions_operation_type", [
|
|
"main",
|
|
"side",
|
|
"external",
|
|
]);
|
|
export const enum_missions_classification_mission_type = pgEnum(
|
|
"enum_missions_classification_mission_type",
|
|
["Zeus", "PvE", "PvP", "PvPvE", "Training", "Special"],
|
|
);
|
|
export const enum_missions_ownership_and_status_status = pgEnum(
|
|
"enum_missions_ownership_and_status_status",
|
|
["Concept", "Planning", "Ready", "Scheduled", "Active", "Completed", "Cancelled"],
|
|
);
|
|
export const enum_missions_ownership_and_status_visibility = pgEnum(
|
|
"enum_missions_ownership_and_status_visibility",
|
|
["unit", "leadership", "intel", "private"],
|
|
);
|
|
export const enum_missions_civilian_presence = pgEnum("enum_missions_civilian_presence", [
|
|
"None",
|
|
"Low",
|
|
"Medium",
|
|
"High",
|
|
]);
|
|
export const enum_mission_attendances_response = pgEnum("enum_mission_attendances_response", [
|
|
"yes",
|
|
"no",
|
|
"tentative",
|
|
]);
|
|
export const enum_campaigns_status = pgEnum("enum_campaigns_status", [
|
|
"concept",
|
|
"inProgress",
|
|
"completed",
|
|
]);
|
|
export const enum_campaigns_campaign_mode = pgEnum("enum_campaigns_campaign_mode", [
|
|
"official",
|
|
"custom",
|
|
]);
|
|
export const enum_factions_type = pgEnum("enum_factions_type", [
|
|
"playerFaction",
|
|
"majorFaction",
|
|
"minorFaction",
|
|
"corporation",
|
|
"special",
|
|
]);
|
|
export const enum_technologies_approval_status = pgEnum("enum_technologies_approval_status", [
|
|
"in_progress",
|
|
"ready_for_review",
|
|
"approved",
|
|
"rejected",
|
|
"revision_requested",
|
|
]);
|
|
export const enum_technologies_type = pgEnum("enum_technologies_type", ["asset", "upgrade"]);
|
|
export const enum_assets_skin_configuration_applies_to_asset_types = pgEnum(
|
|
"enum_assets_skin_configuration_applies_to_asset_types",
|
|
["weapon", "uniform", "vest", "backpack", "helmet"],
|
|
);
|
|
export const enum_assets_approval_status = pgEnum("enum_assets_approval_status", [
|
|
"in_progress",
|
|
"ready_for_review",
|
|
"approved",
|
|
"rejected",
|
|
"revision_requested",
|
|
]);
|
|
export const enum_assets_asset_type = pgEnum("enum_assets_asset_type", [
|
|
"weapon",
|
|
"magazine",
|
|
"optic",
|
|
"muzzle",
|
|
"bipod",
|
|
"uniform",
|
|
"vest",
|
|
"backpack",
|
|
"helmet",
|
|
"facewear",
|
|
"nvg",
|
|
"radio",
|
|
"medical",
|
|
"tool",
|
|
"explosive",
|
|
"skin",
|
|
"miscellaneous",
|
|
]);
|
|
export const enum_assets_weapon_configuration_slot_type = pgEnum(
|
|
"enum_assets_weapon_configuration_slot_type",
|
|
["primary", "secondary", "launcher"],
|
|
);
|
|
export const enum_assets_nightvision_configuration_nvg_generation = pgEnum(
|
|
"enum_assets_nightvision_configuration_nvg_generation",
|
|
["gen1", "gen2", "gen3"],
|
|
);
|
|
export const enum_assets_market_trading_rarity = pgEnum("enum_assets_market_trading_rarity", [
|
|
"basic",
|
|
"common",
|
|
"uncommon",
|
|
"rare",
|
|
"veryRare",
|
|
"epic",
|
|
"legendary",
|
|
"unique",
|
|
]);
|
|
export const enum_resources_approval_status = pgEnum("enum_resources_approval_status", [
|
|
"in_progress",
|
|
"ready_for_review",
|
|
"approved",
|
|
"rejected",
|
|
"revision_requested",
|
|
]);
|
|
export const enum_resources_type = pgEnum("enum_resources_type", [
|
|
"physical",
|
|
"fluid",
|
|
"energy",
|
|
"abstract",
|
|
]);
|
|
export const enum_resources_rarity = pgEnum("enum_resources_rarity", [
|
|
"common",
|
|
"uncommon",
|
|
"rare",
|
|
"epic",
|
|
"legendary",
|
|
"exotic",
|
|
"unique",
|
|
]);
|
|
export const enum_vehicles_category = pgEnum("enum_vehicles_category", [
|
|
"civilian",
|
|
"utility",
|
|
"transport",
|
|
"weaponized",
|
|
"military",
|
|
]);
|
|
export const enum_vehicles_pylons_pylon_type = pgEnum("enum_vehicles_pylons_pylon_type", [
|
|
"mountedWeapon",
|
|
"pylon",
|
|
]);
|
|
export const enum_vehicles_approval_status = pgEnum("enum_vehicles_approval_status", [
|
|
"in_progress",
|
|
"ready_for_review",
|
|
"approved",
|
|
"rejected",
|
|
"revision_requested",
|
|
]);
|
|
export const enum_vehicles_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_approval_status = pgEnum("enum_structures_approval_status", [
|
|
"in_progress",
|
|
"ready_for_review",
|
|
"approved",
|
|
"rejected",
|
|
"revision_requested",
|
|
]);
|
|
export const enum_structures_category = pgEnum("enum_structures_category", [
|
|
"logistics",
|
|
"military",
|
|
"civilian",
|
|
]);
|
|
export const enum_structures_terrain_type = pgEnum("enum_structures_terrain_type", [
|
|
"land",
|
|
"water",
|
|
]);
|
|
export const enum_structures_function_type = pgEnum("enum_structures_function_type", [
|
|
"producer",
|
|
"storage",
|
|
"sensor",
|
|
"converter",
|
|
"defense",
|
|
"miscellaneous",
|
|
]);
|
|
export const enum_shipments_status = pgEnum("enum_shipments_status", [
|
|
"pending",
|
|
"dispatched",
|
|
"in_transit",
|
|
"arrived",
|
|
"completed",
|
|
"cancelled",
|
|
"failed",
|
|
"stranded",
|
|
]);
|
|
export const enum_bank_accounts_account_type = pgEnum("enum_bank_accounts_account_type", [
|
|
"treasury",
|
|
"faction",
|
|
"personal",
|
|
]);
|
|
export const enum_bank_accounts_status = pgEnum("enum_bank_accounts_status", [
|
|
"open",
|
|
"frozen",
|
|
"closed",
|
|
]);
|
|
export const enum_bank_transactions_type = pgEnum("enum_bank_transactions_type", [
|
|
"deposit",
|
|
"withdrawal",
|
|
"transfer",
|
|
"payment",
|
|
"fee",
|
|
"salary",
|
|
"adjustment",
|
|
]);
|
|
export const enum_bank_transactions_status = pgEnum("enum_bank_transactions_status", [
|
|
"completed",
|
|
"reversed",
|
|
]);
|
|
export const enum_ledger_entries_type = pgEnum("enum_ledger_entries_type", [
|
|
"deposit",
|
|
"withdrawal",
|
|
"transfer",
|
|
"payment",
|
|
"fee",
|
|
"salary",
|
|
"adjustment",
|
|
]);
|
|
export const enum_market_listings_status = pgEnum("enum_market_listings_status", [
|
|
"active",
|
|
"sold",
|
|
"cancelled",
|
|
"expired",
|
|
]);
|
|
export const enum_market_negotiations_history_from = pgEnum(
|
|
"enum_market_negotiations_history_from",
|
|
["buyer", "seller"],
|
|
);
|
|
export const enum_market_negotiations_status = pgEnum("enum_market_negotiations_status", [
|
|
"open",
|
|
"accepted",
|
|
"rejected",
|
|
"closed",
|
|
"cancelled",
|
|
"expired",
|
|
]);
|
|
export const enum_market_negotiations_proposed_by = pgEnum("enum_market_negotiations_proposed_by", [
|
|
"buyer",
|
|
"seller",
|
|
]);
|
|
export const enum_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",
|
|
]);
|
|
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_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",
|
|
]);
|
|
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_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_plugin_ai_instructions_field_type = pgEnum(
|
|
"enum_plugin_ai_instructions_field_type",
|
|
["text", "textarea", "upload", "richText"],
|
|
);
|
|
export const enum_plugin_ai_instructions_model_id = pgEnum("enum_plugin_ai_instructions_model_id", [
|
|
"unsloth-text",
|
|
]);
|
|
export const enum_shims_shims_targeting_roles = pgEnum("enum_shims_shims_targeting_roles", [
|
|
"guest",
|
|
"user",
|
|
"trusted",
|
|
"admin",
|
|
"developer",
|
|
]);
|
|
export const enum_shims_shims_type = pgEnum("enum_shims_shims_type", ["css", "js"]);
|
|
export const enum_shims_shims_targeting_audience = pgEnum("enum_shims_shims_targeting_audience", [
|
|
"all",
|
|
"percentage",
|
|
"users",
|
|
"roles",
|
|
]);
|
|
export const enum_shims_shims_paths_match_type = pgEnum("enum_shims_shims_paths_match_type", [
|
|
"all",
|
|
"include",
|
|
"exclude",
|
|
]);
|
|
|
|
export const media = pgTable(
|
|
"media",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
alt: varchar("alt"),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
url: varchar("url"),
|
|
thumbnailURL: varchar("thumbnail_u_r_l"),
|
|
filename: varchar("filename"),
|
|
mimeType: varchar("mime_type"),
|
|
filesize: numeric("filesize", { mode: "number" }),
|
|
width: numeric("width", { mode: "number" }),
|
|
height: numeric("height", { mode: "number" }),
|
|
focalX: numeric("focal_x", { mode: "number" }),
|
|
focalY: numeric("focal_y", { mode: "number" }),
|
|
},
|
|
(columns) => [
|
|
index("media_updated_at_idx").on(columns.updatedAt),
|
|
index("media_created_at_idx").on(columns.createdAt),
|
|
uniqueIndex("media_filename_idx").on(columns.filename),
|
|
],
|
|
);
|
|
|
|
export const game_hard_resources = pgTable(
|
|
"game_hard_resources",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
amount: numeric("amount", { mode: "number" }).notNull().default(0),
|
|
description: jsonb("description").notNull(),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
},
|
|
(columns) => [
|
|
uniqueIndex("game_hard_resources_name_idx").on(columns.name),
|
|
index("game_hard_resources_updated_at_idx").on(columns.updatedAt),
|
|
index("game_hard_resources_created_at_idx").on(columns.createdAt),
|
|
],
|
|
);
|
|
|
|
export const game_structures_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_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),
|
|
coordinates: geometryColumn("coordinates"),
|
|
labelVisible: boolean("label_visible").default(true),
|
|
labelPriority: numeric("label_priority", { 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("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_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"),
|
|
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 missions_mission_roles_provided_roles = pgTable(
|
|
"missions_mission_roles_provided_roles",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
roleName: varchar("role_name").notNull(),
|
|
missionCritical: boolean("mission_critical").default(true),
|
|
minimumRank: integer("minimum_rank_id").references(() => ranks.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
},
|
|
(columns) => [
|
|
index("missions_mission_roles_provided_roles_order_idx").on(columns._order),
|
|
index("missions_mission_roles_provided_roles_parent_id_idx").on(columns._parentID),
|
|
index("missions_mission_roles_provided_roles_minimum_rank_idx").on(columns.minimumRank),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_mission_roles_provided_roles_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_briefing = pgTable(
|
|
"missions_briefing",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
sectionName: varchar("section_name").notNull(),
|
|
details: jsonb("details").notNull(),
|
|
},
|
|
(columns) => [
|
|
index("missions_briefing_order_idx").on(columns._order),
|
|
index("missions_briefing_parent_id_idx").on(columns._parentID),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_briefing_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_mission_objectives = pgTable(
|
|
"missions_mission_objectives",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
title: varchar("title").notNull(),
|
|
description: varchar("description"),
|
|
missionCritical: boolean("mission_critical").default(true),
|
|
successOrFailConditions: varchar("success_or_fail_conditions"),
|
|
redacted: boolean("redacted").default(false),
|
|
},
|
|
(columns) => [
|
|
index("missions_mission_objectives_order_idx").on(columns._order),
|
|
index("missions_mission_objectives_parent_id_idx").on(columns._parentID),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_mission_objectives_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_factions_involved = pgTable(
|
|
"missions_factions_involved",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
faction: integer("faction_id")
|
|
.notNull()
|
|
.references(() => factions.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
threatLevel: enum_missions_factions_involved_threat_level("threat_level")
|
|
.notNull()
|
|
.default("hostile"),
|
|
},
|
|
(columns) => [
|
|
index("missions_factions_involved_order_idx").on(columns._order),
|
|
index("missions_factions_involved_parent_id_idx").on(columns._parentID),
|
|
index("missions_factions_involved_faction_idx").on(columns.faction),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_factions_involved_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_logistics_and_support_insertion = pgTable(
|
|
"missions_logistics_and_support_insertion",
|
|
{
|
|
order: integer("order").notNull(),
|
|
parent: integer("parent_id").notNull(),
|
|
value: enum_missions_logistics_and_support_insertion("value"),
|
|
id: serial("id").primaryKey(),
|
|
},
|
|
(columns) => [
|
|
index("missions_logistics_and_support_insertion_order_idx").on(columns.order),
|
|
index("missions_logistics_and_support_insertion_parent_idx").on(columns.parent),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_logistics_and_support_insertion_parent_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_logistics_and_support_extraction = pgTable(
|
|
"missions_logistics_and_support_extraction",
|
|
{
|
|
order: integer("order").notNull(),
|
|
parent: integer("parent_id").notNull(),
|
|
value: enum_missions_logistics_and_support_extraction("value"),
|
|
id: serial("id").primaryKey(),
|
|
},
|
|
(columns) => [
|
|
index("missions_logistics_and_support_extraction_order_idx").on(columns.order),
|
|
index("missions_logistics_and_support_extraction_parent_idx").on(columns.parent),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_logistics_and_support_extraction_parent_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_logistics_and_support_assets_available = pgTable(
|
|
"missions_logistics_and_support_assets_available",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
assetType: varchar("asset_type").notNull(),
|
|
assetCount: varchar("asset_count"),
|
|
doesRespawn: boolean("does_respawn"),
|
|
assetCallsign: varchar("asset_callsign"),
|
|
},
|
|
(columns) => [
|
|
index("missions_logistics_and_support_assets_available_order_idx").on(columns._order),
|
|
index("missions_logistics_and_support_assets_available_parent_id_idx").on(columns._parentID),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_logistics_and_support_assets_available_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions_comms_and_docs_frequencies = pgTable(
|
|
"missions_comms_and_docs_frequencies",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
frequency: numeric("frequency", { mode: "number" }).notNull(),
|
|
channel: numeric("channel", { mode: "number" }),
|
|
netName: varchar("net_name").notNull(),
|
|
freqUsage: varchar("freq_usage").notNull(),
|
|
},
|
|
(columns) => [
|
|
index("missions_comms_and_docs_frequencies_order_idx").on(columns._order),
|
|
index("missions_comms_and_docs_frequencies_parent_id_idx").on(columns._parentID),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "missions_comms_and_docs_frequencies_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const missions = pgTable(
|
|
"missions",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
codeName: varchar("code_name"),
|
|
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_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 campaigns = pgTable(
|
|
"campaigns",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
summary: varchar("summary").notNull().default("An Arma 3 campaign."),
|
|
status: enum_campaigns_status("status").notNull().default("concept"),
|
|
campaignMode: enum_campaigns_campaign_mode("campaign_mode").notNull().default("custom"),
|
|
description: jsonb("description"),
|
|
startDate: timestamp("start_date", { mode: "string", withTimezone: true, precision: 3 }),
|
|
endDate: timestamp("end_date", { mode: "string", withTimezone: true, precision: 3 }),
|
|
coverImage: integer("cover_image_id").references(() => media.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
owner: integer("owner_id").references(() => users.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
},
|
|
(columns) => [
|
|
uniqueIndex("campaigns_name_idx").on(columns.name),
|
|
index("campaigns_cover_image_idx").on(columns.coverImage),
|
|
index("campaigns_owner_idx").on(columns.owner),
|
|
index("campaigns_updated_at_idx").on(columns.updatedAt),
|
|
index("campaigns_created_at_idx").on(columns.createdAt),
|
|
],
|
|
);
|
|
|
|
export const factions_relationships = pgTable(
|
|
"factions_relationships",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
targetFaction: integer("target_faction_id")
|
|
.notNull()
|
|
.references(() => factions.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
value: numeric("value", { mode: "number" }).notNull().default(0),
|
|
notes: varchar("notes"),
|
|
},
|
|
(columns) => [
|
|
index("factions_relationships_order_idx").on(columns._order),
|
|
index("factions_relationships_parent_id_idx").on(columns._parentID),
|
|
index("factions_relationships_target_faction_idx").on(columns.targetFaction),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [factions.id],
|
|
name: "factions_relationships_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const factions = pgTable(
|
|
"factions",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
type: enum_factions_type("type").notNull().default("minorFaction"),
|
|
description: jsonb("description"),
|
|
reputation: numeric("reputation", { mode: "number" }).default(0),
|
|
playableFaction: boolean("playable_faction"),
|
|
startingFaction: boolean("starting_faction"),
|
|
coverImage: integer("cover_image_id").references(() => media.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
},
|
|
(columns) => [
|
|
uniqueIndex("factions_name_idx").on(columns.name),
|
|
index("factions_cover_image_idx").on(columns.coverImage),
|
|
index("factions_updated_at_idx").on(columns.updatedAt),
|
|
index("factions_created_at_idx").on(columns.createdAt),
|
|
],
|
|
);
|
|
|
|
export const factions_rels = pgTable(
|
|
"factions_rels",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
order: integer("order"),
|
|
parent: integer("parent_id").notNull(),
|
|
path: varchar("path").notNull(),
|
|
campaignsID: integer("campaigns_id"),
|
|
},
|
|
(columns) => [
|
|
index("factions_rels_order_idx").on(columns.order),
|
|
index("factions_rels_parent_idx").on(columns.parent),
|
|
index("factions_rels_path_idx").on(columns.path),
|
|
index("factions_rels_campaigns_id_idx").on(columns.campaignsID),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [factions.id],
|
|
name: "factions_rels_parent_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["campaignsID"]],
|
|
foreignColumns: [campaigns.id],
|
|
name: "factions_rels_campaigns_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const technologies_requirements_prerequisite_technologies = pgTable(
|
|
"technologies_requirements_prerequisite_technologies",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
},
|
|
(columns) => [
|
|
index("technologies_requirements_prerequisite_technologies_order_idx").on(columns._order),
|
|
index("technologies_requirements_prerequisite_technologies_parent_id_idx").on(
|
|
columns._parentID,
|
|
),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [technologies.id],
|
|
name: "technologies_requirements_prerequisite_technologies_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const technologies_research_costs_resources = pgTable(
|
|
"technologies_research_costs_resources",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
resource: integer("resource_id")
|
|
.notNull()
|
|
.references(() => resources.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
amount: numeric("amount", { mode: "number" }).notNull().default(1),
|
|
},
|
|
(columns) => [
|
|
index("technologies_research_costs_resources_order_idx").on(columns._order),
|
|
index("technologies_research_costs_resources_parent_id_idx").on(columns._parentID),
|
|
index("technologies_research_costs_resources_resource_idx").on(columns.resource),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [technologies.id],
|
|
name: "technologies_research_costs_resources_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const technologies = pgTable(
|
|
"technologies",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
approvalStatus: enum_technologies_approval_status("approval_status")
|
|
.notNull()
|
|
.default("in_progress"),
|
|
type: enum_technologies_type("type").notNull().default("upgrade"),
|
|
summary: varchar("summary").notNull(),
|
|
description: jsonb("description"),
|
|
researchCosts_minimumResearchDuration: numeric("research_costs_minimum_research_duration", {
|
|
mode: "number",
|
|
})
|
|
.notNull()
|
|
.default(0),
|
|
researchCosts_maximumResearchDuration: numeric("research_costs_maximum_research_duration", {
|
|
mode: "number",
|
|
}),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
},
|
|
(columns) => [
|
|
index("technologies_updated_at_idx").on(columns.updatedAt),
|
|
index("technologies_created_at_idx").on(columns.createdAt),
|
|
],
|
|
);
|
|
|
|
export const technologies_rels = pgTable(
|
|
"technologies_rels",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
order: integer("order"),
|
|
parent: integer("parent_id").notNull(),
|
|
path: varchar("path").notNull(),
|
|
technologiesID: integer("technologies_id"),
|
|
},
|
|
(columns) => [
|
|
index("technologies_rels_order_idx").on(columns.order),
|
|
index("technologies_rels_parent_idx").on(columns.parent),
|
|
index("technologies_rels_path_idx").on(columns.path),
|
|
index("technologies_rels_technologies_id_idx").on(columns.technologiesID),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [technologies.id],
|
|
name: "technologies_rels_parent_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["technologiesID"]],
|
|
foreignColumns: [technologies.id],
|
|
name: "technologies_rels_technologies_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const assets_skin_configuration_applies_to_asset_types = pgTable(
|
|
"assets_skin_configuration_applies_to_asset_types",
|
|
{
|
|
order: integer("order").notNull(),
|
|
parent: integer("parent_id").notNull(),
|
|
value: enum_assets_skin_configuration_applies_to_asset_types("value"),
|
|
id: serial("id").primaryKey(),
|
|
},
|
|
(columns) => [
|
|
index("assets_skin_configuration_applies_to_asset_types_order_idx").on(columns.order),
|
|
index("assets_skin_configuration_applies_to_asset_types_parent_idx").on(columns.parent),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [assets.id],
|
|
name: "assets_skin_configuration_applies_to_asset_types_parent_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const assets_crafting_crafting_data_inputs = pgTable(
|
|
"assets_crafting_crafting_data_inputs",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
quantity: numeric("quantity", { mode: "number" }),
|
|
lended: boolean("lended"),
|
|
},
|
|
(columns) => [
|
|
index("assets_crafting_crafting_data_inputs_order_idx").on(columns._order),
|
|
index("assets_crafting_crafting_data_inputs_parent_id_idx").on(columns._parentID),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [assets.id],
|
|
name: "assets_crafting_crafting_data_inputs_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const assets_crafting_crafting_data_byproducts = pgTable(
|
|
"assets_crafting_crafting_data_byproducts",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
quantity: numeric("quantity", { mode: "number" }),
|
|
},
|
|
(columns) => [
|
|
index("assets_crafting_crafting_data_byproducts_order_idx").on(columns._order),
|
|
index("assets_crafting_crafting_data_byproducts_parent_id_idx").on(columns._parentID),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [assets.id],
|
|
name: "assets_crafting_crafting_data_byproducts_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const assets = pgTable(
|
|
"assets",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
approvalStatus: enum_assets_approval_status("approval_status").notNull().default("in_progress"),
|
|
className: varchar("class_name").notNull().default(""),
|
|
assetType: enum_assets_asset_type("asset_type").notNull().default("weapon"),
|
|
"Weapon Configuration_slotType": enum_assets_weapon_configuration_slot_type(
|
|
"weapon_configuration_slot_type",
|
|
),
|
|
"Nightvision Configuration_nvgGeneration": enum_assets_nightvision_configuration_nvg_generation(
|
|
"nightvision_configuration_nvg_generation",
|
|
),
|
|
"Nightvision Configuration_nvgHasThermals": boolean(
|
|
"nightvision_configuration_nvg_has_thermals",
|
|
),
|
|
"Container Configuration_capacityKg": numeric("container_configuration_capacity_kg", {
|
|
mode: "number",
|
|
}),
|
|
"Container Configuration_weightKg": numeric("container_configuration_weight_kg", {
|
|
mode: "number",
|
|
}),
|
|
"Magazine Configuration_roundCapacity": numeric("magazine_configuration_round_capacity", {
|
|
mode: "number",
|
|
}),
|
|
"Magazine Configuration_ammoType": varchar("magazine_configuration_ammo_type"),
|
|
"Magazine Configuration_greenmagCompatible": boolean(
|
|
"magazine_configuration_greenmag_compatible",
|
|
),
|
|
"Asset Metadata_mod": varchar("asset_metadata_mod"),
|
|
"Asset Metadata_thumbnail": integer("asset_metadata_thumbnail_id").references(() => media.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
"Asset Metadata_gameDescription": varchar("asset_metadata_game_description"),
|
|
tradeable: boolean("tradeable"),
|
|
marketTrading_Rarity: enum_assets_market_trading_rarity("market_trading_rarity"),
|
|
marketTrading_perceivedValue_baseBuyPrice: numeric(
|
|
"market_trading_perceived_value_base_buy_price",
|
|
{ mode: "number" },
|
|
),
|
|
marketTrading_perceivedValue_baseSellPrice: numeric(
|
|
"market_trading_perceived_value_base_sell_price",
|
|
{ mode: "number" },
|
|
),
|
|
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_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(),
|
|
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),
|
|
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),
|
|
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_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",
|
|
}),
|
|
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",
|
|
}),
|
|
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_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 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 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 plugin_ai_instructions_images = pgTable(
|
|
"plugin_ai_instructions_images",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
image: integer("image_id").references(() => media.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
},
|
|
(columns) => [
|
|
index("plugin_ai_instructions_images_order_idx").on(columns._order),
|
|
index("plugin_ai_instructions_images_parent_id_idx").on(columns._parentID),
|
|
index("plugin_ai_instructions_images_image_idx").on(columns.image),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [plugin_ai_instructions.id],
|
|
name: "plugin_ai_instructions_images_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const plugin_ai_instructions = pgTable(
|
|
"plugin_ai_instructions",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
"schema-path": varchar("schema_path"),
|
|
"field-type": enum_plugin_ai_instructions_field_type("field_type").default("text"),
|
|
"relation-to": varchar("relation_to"),
|
|
"model-id": enum_plugin_ai_instructions_model_id("model_id"),
|
|
disabled: boolean("disabled").default(false),
|
|
prompt: varchar("prompt"),
|
|
system: varchar("system").default(
|
|
"INSTRUCTIONS:\nYou are a highly skilled and professional blog writer,\nrenowned for crafting engaging and well-organized articles.\nWhen given a title, you meticulously create blogs that are not only\ninformative and accurate but also captivating and beautifully structured.",
|
|
),
|
|
layout: varchar("layout").default(
|
|
'[paragraph] - Write a concise introduction (2-3 sentences) that outlines the main topic.\n[horizontalrule] - Insert a horizontal rule to separate the introduction from the main content.\n[list] - Create a list with 3-5 items. Each list item should contain:\n a. [heading] - A brief, descriptive heading (up to 5 words)\n b. [paragraph] - A short explanation or elaboration (1-2 sentences)\n[horizontalrule] - Insert another horizontal rule to separate the main content from the conclusion.\n[paragraph] - Compose a brief conclusion (2-3 sentences) summarizing the key points.\n[quote] - Include a relevant quote from a famous person, directly related to the topic. Format: "Quote text." - Author Name',
|
|
),
|
|
"unsloth-text-settings_model": varchar("unsloth_text_settings_model").default(
|
|
"unsloth/gemma-4-E4B-it-qat-GGUF",
|
|
),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 })
|
|
.defaultNow()
|
|
.notNull(),
|
|
},
|
|
(columns) => [
|
|
uniqueIndex("plugin_ai_instructions_schema_path_idx").on(columns["schema-path"]),
|
|
index("plugin_ai_instructions_updated_at_idx").on(columns.updatedAt),
|
|
index("plugin_ai_instructions_created_at_idx").on(columns.createdAt),
|
|
],
|
|
);
|
|
|
|
export const payload_mcp_api_keys = pgTable(
|
|
"payload_mcp_api_keys",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
user: integer("user_id")
|
|
.notNull()
|
|
.references(() => users.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
label: varchar("label"),
|
|
description: varchar("description"),
|
|
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),
|
|
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),
|
|
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),
|
|
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),
|
|
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),
|
|
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),
|
|
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"),
|
|
"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"),
|
|
missionsID: integer("missions_id"),
|
|
"mission-attendancesID": integer("mission_attendances_id"),
|
|
campaignsID: integer("campaigns_id"),
|
|
factionsID: integer("factions_id"),
|
|
technologiesID: integer("technologies_id"),
|
|
assetsID: integer("assets_id"),
|
|
resourcesID: integer("resources_id"),
|
|
vehiclesID: integer("vehicles_id"),
|
|
structuresID: integer("structures_id"),
|
|
shipmentsID: integer("shipments_id"),
|
|
"bank-accountsID": integer("bank_accounts_id"),
|
|
"bank-transactionsID": integer("bank_transactions_id"),
|
|
"ledger-entriesID": integer("ledger_entries_id"),
|
|
"locker-storagesID": integer("locker_storages_id"),
|
|
loadoutsID: integer("loadouts_id"),
|
|
"market-listingsID": integer("market_listings_id"),
|
|
"market-negotiationsID": integer("market_negotiations_id"),
|
|
"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"),
|
|
"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"),
|
|
"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"),
|
|
"plugin-ai-instructionsID": integer("plugin_ai_instructions_id"),
|
|
"payload-mcp-api-keysID": integer("payload_mcp_api_keys_id"),
|
|
},
|
|
(columns) => [
|
|
index("payload_locked_documents_rels_order_idx").on(columns.order),
|
|
index("payload_locked_documents_rels_parent_idx").on(columns.parent),
|
|
index("payload_locked_documents_rels_path_idx").on(columns.path),
|
|
index("payload_locked_documents_rels_media_id_idx").on(columns.mediaID),
|
|
index("payload_locked_documents_rels_game_hard_resources_id_idx").on(
|
|
columns["game-hard-resourcesID"],
|
|
),
|
|
index("payload_locked_documents_rels_game_structures_id_idx").on(columns["game-structuresID"]),
|
|
index("payload_locked_documents_rels_game_vehicles_id_idx").on(columns["game-vehiclesID"]),
|
|
index("payload_locked_documents_rels_game_npcs_id_idx").on(columns["game-npcsID"]),
|
|
index("payload_locked_documents_rels_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_missions_id_idx").on(columns.missionsID),
|
|
index("payload_locked_documents_rels_mission_attendances_id_idx").on(
|
|
columns["mission-attendancesID"],
|
|
),
|
|
index("payload_locked_documents_rels_campaigns_id_idx").on(columns.campaignsID),
|
|
index("payload_locked_documents_rels_factions_id_idx").on(columns.factionsID),
|
|
index("payload_locked_documents_rels_technologies_id_idx").on(columns.technologiesID),
|
|
index("payload_locked_documents_rels_assets_id_idx").on(columns.assetsID),
|
|
index("payload_locked_documents_rels_resources_id_idx").on(columns.resourcesID),
|
|
index("payload_locked_documents_rels_vehicles_id_idx").on(columns.vehiclesID),
|
|
index("payload_locked_documents_rels_structures_id_idx").on(columns.structuresID),
|
|
index("payload_locked_documents_rels_shipments_id_idx").on(columns.shipmentsID),
|
|
index("payload_locked_documents_rels_bank_accounts_id_idx").on(columns["bank-accountsID"]),
|
|
index("payload_locked_documents_rels_bank_transactions_id_idx").on(
|
|
columns["bank-transactionsID"],
|
|
),
|
|
index("payload_locked_documents_rels_ledger_entries_id_idx").on(columns["ledger-entriesID"]),
|
|
index("payload_locked_documents_rels_locker_storages_id_idx").on(columns["locker-storagesID"]),
|
|
index("payload_locked_documents_rels_loadouts_id_idx").on(columns.loadoutsID),
|
|
index("payload_locked_documents_rels_market_listings_id_idx").on(columns["market-listingsID"]),
|
|
index("payload_locked_documents_rels_market_negotiations_id_idx").on(
|
|
columns["market-negotiationsID"],
|
|
),
|
|
index("payload_locked_documents_rels_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_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_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_plugin_ai_instructions_id_idx").on(
|
|
columns["plugin-ai-instructionsID"],
|
|
),
|
|
index("payload_locked_documents_rels_payload_mcp_api_keys_id_idx").on(
|
|
columns["payload-mcp-api-keysID"],
|
|
),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [payload_locked_documents.id],
|
|
name: "payload_locked_documents_rels_parent_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["mediaID"]],
|
|
foreignColumns: [media.id],
|
|
name: "payload_locked_documents_rels_media_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["game-hard-resourcesID"]],
|
|
foreignColumns: [game_hard_resources.id],
|
|
name: "payload_locked_documents_rels_game_hard_resources_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["game-structuresID"]],
|
|
foreignColumns: [game_structures.id],
|
|
name: "payload_locked_documents_rels_game_structures_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["game-vehiclesID"]],
|
|
foreignColumns: [game_vehicles.id],
|
|
name: "payload_locked_documents_rels_game_vehicles_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["game-npcsID"]],
|
|
foreignColumns: [game_npcs.id],
|
|
name: "payload_locked_documents_rels_game_npcs_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["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["missionsID"]],
|
|
foreignColumns: [missions.id],
|
|
name: "payload_locked_documents_rels_missions_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["mission-attendancesID"]],
|
|
foreignColumns: [mission_attendances.id],
|
|
name: "payload_locked_documents_rels_mission_attendances_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["campaignsID"]],
|
|
foreignColumns: [campaigns.id],
|
|
name: "payload_locked_documents_rels_campaigns_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["factionsID"]],
|
|
foreignColumns: [factions.id],
|
|
name: "payload_locked_documents_rels_factions_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["technologiesID"]],
|
|
foreignColumns: [technologies.id],
|
|
name: "payload_locked_documents_rels_technologies_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["assetsID"]],
|
|
foreignColumns: [assets.id],
|
|
name: "payload_locked_documents_rels_assets_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["resourcesID"]],
|
|
foreignColumns: [resources.id],
|
|
name: "payload_locked_documents_rels_resources_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["vehiclesID"]],
|
|
foreignColumns: [vehicles.id],
|
|
name: "payload_locked_documents_rels_vehicles_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["structuresID"]],
|
|
foreignColumns: [structures.id],
|
|
name: "payload_locked_documents_rels_structures_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["shipmentsID"]],
|
|
foreignColumns: [shipments.id],
|
|
name: "payload_locked_documents_rels_shipments_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["bank-accountsID"]],
|
|
foreignColumns: [bank_accounts.id],
|
|
name: "payload_locked_documents_rels_bank_accounts_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["bank-transactionsID"]],
|
|
foreignColumns: [bank_transactions.id],
|
|
name: "payload_locked_documents_rels_bank_transactions_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["ledger-entriesID"]],
|
|
foreignColumns: [ledger_entries.id],
|
|
name: "payload_locked_documents_rels_ledger_entries_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["locker-storagesID"]],
|
|
foreignColumns: [locker_storages.id],
|
|
name: "payload_locked_documents_rels_locker_storages_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["loadoutsID"]],
|
|
foreignColumns: [loadouts.id],
|
|
name: "payload_locked_documents_rels_loadouts_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["market-listingsID"]],
|
|
foreignColumns: [market_listings.id],
|
|
name: "payload_locked_documents_rels_market_listings_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["market-negotiationsID"]],
|
|
foreignColumns: [market_negotiations.id],
|
|
name: "payload_locked_documents_rels_market_negotiations_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["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["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["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["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: varchar("currency_symbol"),
|
|
currencySingular: varchar("currency_singular"),
|
|
currencyPlural: varchar("currency_plural"),
|
|
currencyDenomination: varchar("currency_denomination"),
|
|
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),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }),
|
|
},
|
|
(columns) => [index("game_rules_main_currency_idx").on(columns.mainCurrency)],
|
|
);
|
|
|
|
export const game_rules_rels = pgTable(
|
|
"game_rules_rels",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
order: integer("order"),
|
|
parent: integer("parent_id").notNull(),
|
|
path: varchar("path").notNull(),
|
|
assignmentsID: integer("assignments_id"),
|
|
},
|
|
(columns) => [
|
|
index("game_rules_rels_order_idx").on(columns.order),
|
|
index("game_rules_rels_parent_idx").on(columns.parent),
|
|
index("game_rules_rels_path_idx").on(columns.path),
|
|
index("game_rules_rels_assignments_id_idx").on(columns.assignmentsID),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [game_rules.id],
|
|
name: "game_rules_rels_parent_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["assignmentsID"]],
|
|
foreignColumns: [assignments.id],
|
|
name: "game_rules_rels_assignments_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const shims_shims_targeting_roles = pgTable(
|
|
"shims_shims_targeting_roles",
|
|
{
|
|
order: integer("order").notNull(),
|
|
parent: varchar("parent_id").notNull(),
|
|
value: enum_shims_shims_targeting_roles("value"),
|
|
id: serial("id").primaryKey(),
|
|
},
|
|
(columns) => [
|
|
index("shims_shims_targeting_roles_order_idx").on(columns.order),
|
|
index("shims_shims_targeting_roles_parent_idx").on(columns.parent),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [shims_shims.id],
|
|
name: "shims_shims_targeting_roles_parent_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const shims_shims = pgTable(
|
|
"shims_shims",
|
|
{
|
|
_order: integer("_order").notNull(),
|
|
_parentID: integer("_parent_id").notNull(),
|
|
id: varchar("id").primaryKey(),
|
|
name: varchar("name").notNull(),
|
|
summary: varchar("summary"),
|
|
enabled: boolean("enabled").default(false),
|
|
type: enum_shims_shims_type("type").notNull().default("css"),
|
|
content: varchar("content").notNull(),
|
|
targeting_audience: enum_shims_shims_targeting_audience("targeting_audience")
|
|
.notNull()
|
|
.default("all"),
|
|
targeting_percentage: numeric("targeting_percentage", { mode: "number" }).default(50),
|
|
paths_matchType: enum_shims_shims_paths_match_type("paths_match_type").notNull().default("all"),
|
|
},
|
|
(columns) => [
|
|
index("shims_shims_order_idx").on(columns._order),
|
|
index("shims_shims_parent_id_idx").on(columns._parentID),
|
|
uniqueIndex("shims_shims_name_idx").on(columns.name),
|
|
foreignKey({
|
|
columns: [columns["_parentID"]],
|
|
foreignColumns: [shims.id],
|
|
name: "shims_shims_parent_id_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const shims = pgTable("shims", {
|
|
id: serial("id").primaryKey(),
|
|
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 }),
|
|
createdAt: timestamp("created_at", { mode: "string", withTimezone: true, precision: 3 }),
|
|
});
|
|
|
|
export const shims_texts = pgTable(
|
|
"shims_texts",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
order: integer("order").notNull(),
|
|
parent: integer("parent_id").notNull(),
|
|
path: varchar("path").notNull(),
|
|
text: varchar("text"),
|
|
},
|
|
(columns) => [
|
|
index("shims_texts_order_parent").on(columns.order, columns.parent),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [shims.id],
|
|
name: "shims_texts_parent_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const shims_rels = pgTable(
|
|
"shims_rels",
|
|
{
|
|
id: serial("id").primaryKey(),
|
|
order: integer("order"),
|
|
parent: integer("parent_id").notNull(),
|
|
path: varchar("path").notNull(),
|
|
usersID: integer("users_id"),
|
|
},
|
|
(columns) => [
|
|
index("shims_rels_order_idx").on(columns.order),
|
|
index("shims_rels_parent_idx").on(columns.parent),
|
|
index("shims_rels_path_idx").on(columns.path),
|
|
index("shims_rels_users_id_idx").on(columns.usersID),
|
|
foreignKey({
|
|
columns: [columns["parent"]],
|
|
foreignColumns: [shims.id],
|
|
name: "shims_rels_parent_fk",
|
|
}).onDelete("cascade"),
|
|
foreignKey({
|
|
columns: [columns["usersID"]],
|
|
foreignColumns: [users.id],
|
|
name: "shims_rels_users_fk",
|
|
}).onDelete("cascade"),
|
|
],
|
|
);
|
|
|
|
export const relations_media = relations(media, () => ({}));
|
|
export const relations_game_hard_resources = relations(game_hard_resources, () => ({}));
|
|
export const relations_game_structures_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_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",
|
|
}),
|
|
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_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_campaigns = relations(campaigns, ({ one }) => ({
|
|
coverImage: one(media, {
|
|
fields: [campaigns.coverImage],
|
|
references: [media.id],
|
|
relationName: "coverImage",
|
|
}),
|
|
owner: one(users, {
|
|
fields: [campaigns.owner],
|
|
references: [users.id],
|
|
relationName: "owner",
|
|
}),
|
|
}));
|
|
export const relations_factions_relationships = relations(factions_relationships, ({ one }) => ({
|
|
_parentID: one(factions, {
|
|
fields: [factions_relationships._parentID],
|
|
references: [factions.id],
|
|
relationName: "relationships",
|
|
}),
|
|
targetFaction: one(factions, {
|
|
fields: [factions_relationships.targetFaction],
|
|
references: [factions.id],
|
|
relationName: "targetFaction",
|
|
}),
|
|
}));
|
|
export const relations_factions_rels = relations(factions_rels, ({ one }) => ({
|
|
parent: one(factions, {
|
|
fields: [factions_rels.parent],
|
|
references: [factions.id],
|
|
relationName: "_rels",
|
|
}),
|
|
campaignsID: one(campaigns, {
|
|
fields: [factions_rels.campaignsID],
|
|
references: [campaigns.id],
|
|
relationName: "campaigns",
|
|
}),
|
|
}));
|
|
export const relations_factions = relations(factions, ({ one, many }) => ({
|
|
relationships: many(factions_relationships, {
|
|
relationName: "relationships",
|
|
}),
|
|
coverImage: one(media, {
|
|
fields: [factions.coverImage],
|
|
references: [media.id],
|
|
relationName: "coverImage",
|
|
}),
|
|
_rels: many(factions_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
export const relations_technologies_requirements_prerequisite_technologies = relations(
|
|
technologies_requirements_prerequisite_technologies,
|
|
({ one }) => ({
|
|
_parentID: one(technologies, {
|
|
fields: [technologies_requirements_prerequisite_technologies._parentID],
|
|
references: [technologies.id],
|
|
relationName: "requirements_prerequisiteTechnologies",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_technologies_research_costs_resources = relations(
|
|
technologies_research_costs_resources,
|
|
({ one }) => ({
|
|
_parentID: one(technologies, {
|
|
fields: [technologies_research_costs_resources._parentID],
|
|
references: [technologies.id],
|
|
relationName: "researchCosts_resources",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [technologies_research_costs_resources.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_technologies_rels = relations(technologies_rels, ({ one }) => ({
|
|
parent: one(technologies, {
|
|
fields: [technologies_rels.parent],
|
|
references: [technologies.id],
|
|
relationName: "_rels",
|
|
}),
|
|
technologiesID: one(technologies, {
|
|
fields: [technologies_rels.technologiesID],
|
|
references: [technologies.id],
|
|
relationName: "technologies",
|
|
}),
|
|
}));
|
|
export const relations_technologies = relations(technologies, ({ many }) => ({
|
|
requirements_prerequisiteTechnologies: many(technologies_requirements_prerequisite_technologies, {
|
|
relationName: "requirements_prerequisiteTechnologies",
|
|
}),
|
|
researchCosts_resources: many(technologies_research_costs_resources, {
|
|
relationName: "researchCosts_resources",
|
|
}),
|
|
_rels: many(technologies_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
export const relations_assets_skin_configuration_applies_to_asset_types = relations(
|
|
assets_skin_configuration_applies_to_asset_types,
|
|
({ one }) => ({
|
|
parent: one(assets, {
|
|
fields: [assets_skin_configuration_applies_to_asset_types.parent],
|
|
references: [assets.id],
|
|
relationName: "Skin Configuration_appliesToAssetTypes",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_assets_crafting_crafting_data_inputs = relations(
|
|
assets_crafting_crafting_data_inputs,
|
|
({ one }) => ({
|
|
_parentID: one(assets, {
|
|
fields: [assets_crafting_crafting_data_inputs._parentID],
|
|
references: [assets.id],
|
|
relationName: "crafting_craftingData_inputs",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_assets_crafting_crafting_data_byproducts = relations(
|
|
assets_crafting_crafting_data_byproducts,
|
|
({ one }) => ({
|
|
_parentID: one(assets, {
|
|
fields: [assets_crafting_crafting_data_byproducts._parentID],
|
|
references: [assets.id],
|
|
relationName: "crafting_craftingData_byproducts",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_assets_rels = relations(assets_rels, ({ one }) => ({
|
|
parent: one(assets, {
|
|
fields: [assets_rels.parent],
|
|
references: [assets.id],
|
|
relationName: "_rels",
|
|
}),
|
|
assetsID: one(assets, {
|
|
fields: [assets_rels.assetsID],
|
|
references: [assets.id],
|
|
relationName: "assets",
|
|
}),
|
|
technologiesID: one(technologies, {
|
|
fields: [assets_rels.technologiesID],
|
|
references: [technologies.id],
|
|
relationName: "technologies",
|
|
}),
|
|
resourcesID: one(resources, {
|
|
fields: [assets_rels.resourcesID],
|
|
references: [resources.id],
|
|
relationName: "resources",
|
|
}),
|
|
structuresID: one(structures, {
|
|
fields: [assets_rels.structuresID],
|
|
references: [structures.id],
|
|
relationName: "structures",
|
|
}),
|
|
}));
|
|
export const relations_assets = relations(assets, ({ one, many }) => ({
|
|
"Skin Configuration_appliesToAssetTypes": many(assets_skin_configuration_applies_to_asset_types, {
|
|
relationName: "Skin Configuration_appliesToAssetTypes",
|
|
}),
|
|
"Asset Metadata_thumbnail": one(media, {
|
|
fields: [assets["Asset Metadata_thumbnail"]],
|
|
references: [media.id],
|
|
relationName: "Asset Metadata_thumbnail",
|
|
}),
|
|
crafting_craftingData_inputs: many(assets_crafting_crafting_data_inputs, {
|
|
relationName: "crafting_craftingData_inputs",
|
|
}),
|
|
crafting_craftingData_byproducts: many(assets_crafting_crafting_data_byproducts, {
|
|
relationName: "crafting_craftingData_byproducts",
|
|
}),
|
|
_rels: many(assets_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
export const relations_resources = relations(resources, ({ one }) => ({
|
|
icon: one(media, {
|
|
fields: [resources.icon],
|
|
references: [media.id],
|
|
relationName: "icon",
|
|
}),
|
|
}));
|
|
export const relations_vehicles_category = relations(vehicles_category, ({ one }) => ({
|
|
parent: one(vehicles, {
|
|
fields: [vehicles_category.parent],
|
|
references: [vehicles.id],
|
|
relationName: "category",
|
|
}),
|
|
}));
|
|
export const relations_vehicles_materials = relations(vehicles_materials, ({ one }) => ({
|
|
_parentID: one(vehicles, {
|
|
fields: [vehicles_materials._parentID],
|
|
references: [vehicles.id],
|
|
relationName: "materials",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [vehicles_materials.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}));
|
|
export const relations_vehicles_scrap_returns = relations(vehicles_scrap_returns, ({ one }) => ({
|
|
_parentID: one(vehicles, {
|
|
fields: [vehicles_scrap_returns._parentID],
|
|
references: [vehicles.id],
|
|
relationName: "scrapReturns",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [vehicles_scrap_returns.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}));
|
|
export const relations_vehicles_upkeep_costs = relations(vehicles_upkeep_costs, ({ one }) => ({
|
|
_parentID: one(vehicles, {
|
|
fields: [vehicles_upkeep_costs._parentID],
|
|
references: [vehicles.id],
|
|
relationName: "upkeepCosts",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [vehicles_upkeep_costs.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}));
|
|
export const relations_vehicles_allowed_virtual_cargo = relations(
|
|
vehicles_allowed_virtual_cargo,
|
|
({ one }) => ({
|
|
_parentID: one(vehicles, {
|
|
fields: [vehicles_allowed_virtual_cargo._parentID],
|
|
references: [vehicles.id],
|
|
relationName: "allowedVirtualCargo",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_vehicles_pylons = relations(vehicles_pylons, ({ one }) => ({
|
|
_parentID: one(vehicles, {
|
|
fields: [vehicles_pylons._parentID],
|
|
references: [vehicles.id],
|
|
relationName: "pylons",
|
|
}),
|
|
ammoType: one(assets, {
|
|
fields: [vehicles_pylons.ammoType],
|
|
references: [assets.id],
|
|
relationName: "ammoType",
|
|
}),
|
|
}));
|
|
export const relations_vehicles_rels = relations(vehicles_rels, ({ one }) => ({
|
|
parent: one(vehicles, {
|
|
fields: [vehicles_rels.parent],
|
|
references: [vehicles.id],
|
|
relationName: "_rels",
|
|
}),
|
|
technologiesID: one(technologies, {
|
|
fields: [vehicles_rels.technologiesID],
|
|
references: [technologies.id],
|
|
relationName: "technologies",
|
|
}),
|
|
assetsID: one(assets, {
|
|
fields: [vehicles_rels.assetsID],
|
|
references: [assets.id],
|
|
relationName: "assets",
|
|
}),
|
|
vehiclesID: one(vehicles, {
|
|
fields: [vehicles_rels.vehiclesID],
|
|
references: [vehicles.id],
|
|
relationName: "vehicles",
|
|
}),
|
|
resourcesID: one(resources, {
|
|
fields: [vehicles_rels.resourcesID],
|
|
references: [resources.id],
|
|
relationName: "resources",
|
|
}),
|
|
}));
|
|
export const relations_vehicles = relations(vehicles, ({ one, many }) => ({
|
|
image: one(media, {
|
|
fields: [vehicles.image],
|
|
references: [media.id],
|
|
relationName: "image",
|
|
}),
|
|
category: many(vehicles_category, {
|
|
relationName: "category",
|
|
}),
|
|
fuel_fuelType: one(resources, {
|
|
fields: [vehicles.fuel_fuelType],
|
|
references: [resources.id],
|
|
relationName: "fuel_fuelType",
|
|
}),
|
|
materials: many(vehicles_materials, {
|
|
relationName: "materials",
|
|
}),
|
|
scrapReturns: many(vehicles_scrap_returns, {
|
|
relationName: "scrapReturns",
|
|
}),
|
|
upkeepCosts: many(vehicles_upkeep_costs, {
|
|
relationName: "upkeepCosts",
|
|
}),
|
|
allowedVirtualCargo: many(vehicles_allowed_virtual_cargo, {
|
|
relationName: "allowedVirtualCargo",
|
|
}),
|
|
pylons: many(vehicles_pylons, {
|
|
relationName: "pylons",
|
|
}),
|
|
_rels: many(vehicles_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
export const relations_structures_materials = relations(structures_materials, ({ one }) => ({
|
|
_parentID: one(structures, {
|
|
fields: [structures_materials._parentID],
|
|
references: [structures.id],
|
|
relationName: "materials",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [structures_materials.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}));
|
|
export const relations_structures_resources_in_range = relations(
|
|
structures_resources_in_range,
|
|
({ one }) => ({
|
|
_parentID: one(structures, {
|
|
fields: [structures_resources_in_range._parentID],
|
|
references: [structures.id],
|
|
relationName: "resourcesInRange",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [structures_resources_in_range.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_structures_structures_in_range = relations(
|
|
structures_structures_in_range,
|
|
({ one }) => ({
|
|
_parentID: one(structures, {
|
|
fields: [structures_structures_in_range._parentID],
|
|
references: [structures.id],
|
|
relationName: "structuresInRange",
|
|
}),
|
|
structure: one(structures, {
|
|
fields: [structures_structures_in_range.structure],
|
|
references: [structures.id],
|
|
relationName: "structure",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_structures_upkeep = relations(structures_upkeep, ({ one }) => ({
|
|
_parentID: one(structures, {
|
|
fields: [structures_upkeep._parentID],
|
|
references: [structures.id],
|
|
relationName: "upkeep",
|
|
}),
|
|
resource: one(resources, {
|
|
fields: [structures_upkeep.resource],
|
|
references: [resources.id],
|
|
relationName: "resource",
|
|
}),
|
|
}));
|
|
export const relations_structures_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_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",
|
|
}),
|
|
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 }) => ({
|
|
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",
|
|
}),
|
|
}));
|
|
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_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_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_plugin_ai_instructions_images = relations(
|
|
plugin_ai_instructions_images,
|
|
({ one }) => ({
|
|
_parentID: one(plugin_ai_instructions, {
|
|
fields: [plugin_ai_instructions_images._parentID],
|
|
references: [plugin_ai_instructions.id],
|
|
relationName: "images",
|
|
}),
|
|
image: one(media, {
|
|
fields: [plugin_ai_instructions_images.image],
|
|
references: [media.id],
|
|
relationName: "image",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_plugin_ai_instructions = relations(plugin_ai_instructions, ({ many }) => ({
|
|
images: many(plugin_ai_instructions_images, {
|
|
relationName: "images",
|
|
}),
|
|
}));
|
|
export const relations_payload_mcp_api_keys = relations(payload_mcp_api_keys, ({ one }) => ({
|
|
user: one(users, {
|
|
fields: [payload_mcp_api_keys.user],
|
|
references: [users.id],
|
|
relationName: "user",
|
|
}),
|
|
}));
|
|
export const relations_payload_kv = relations(payload_kv, () => ({}));
|
|
export const relations_payload_locked_documents_rels = relations(
|
|
payload_locked_documents_rels,
|
|
({ one }) => ({
|
|
parent: one(payload_locked_documents, {
|
|
fields: [payload_locked_documents_rels.parent],
|
|
references: [payload_locked_documents.id],
|
|
relationName: "_rels",
|
|
}),
|
|
mediaID: one(media, {
|
|
fields: [payload_locked_documents_rels.mediaID],
|
|
references: [media.id],
|
|
relationName: "media",
|
|
}),
|
|
"game-hard-resourcesID": one(game_hard_resources, {
|
|
fields: [payload_locked_documents_rels["game-hard-resourcesID"]],
|
|
references: [game_hard_resources.id],
|
|
relationName: "game-hard-resources",
|
|
}),
|
|
"game-structuresID": one(game_structures, {
|
|
fields: [payload_locked_documents_rels["game-structuresID"]],
|
|
references: [game_structures.id],
|
|
relationName: "game-structures",
|
|
}),
|
|
"game-vehiclesID": one(game_vehicles, {
|
|
fields: [payload_locked_documents_rels["game-vehiclesID"]],
|
|
references: [game_vehicles.id],
|
|
relationName: "game-vehicles",
|
|
}),
|
|
"game-npcsID": one(game_npcs, {
|
|
fields: [payload_locked_documents_rels["game-npcsID"]],
|
|
references: [game_npcs.id],
|
|
relationName: "game-npcs",
|
|
}),
|
|
"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",
|
|
}),
|
|
missionsID: one(missions, {
|
|
fields: [payload_locked_documents_rels.missionsID],
|
|
references: [missions.id],
|
|
relationName: "missions",
|
|
}),
|
|
"mission-attendancesID": one(mission_attendances, {
|
|
fields: [payload_locked_documents_rels["mission-attendancesID"]],
|
|
references: [mission_attendances.id],
|
|
relationName: "mission-attendances",
|
|
}),
|
|
campaignsID: one(campaigns, {
|
|
fields: [payload_locked_documents_rels.campaignsID],
|
|
references: [campaigns.id],
|
|
relationName: "campaigns",
|
|
}),
|
|
factionsID: one(factions, {
|
|
fields: [payload_locked_documents_rels.factionsID],
|
|
references: [factions.id],
|
|
relationName: "factions",
|
|
}),
|
|
technologiesID: one(technologies, {
|
|
fields: [payload_locked_documents_rels.technologiesID],
|
|
references: [technologies.id],
|
|
relationName: "technologies",
|
|
}),
|
|
assetsID: one(assets, {
|
|
fields: [payload_locked_documents_rels.assetsID],
|
|
references: [assets.id],
|
|
relationName: "assets",
|
|
}),
|
|
resourcesID: one(resources, {
|
|
fields: [payload_locked_documents_rels.resourcesID],
|
|
references: [resources.id],
|
|
relationName: "resources",
|
|
}),
|
|
vehiclesID: one(vehicles, {
|
|
fields: [payload_locked_documents_rels.vehiclesID],
|
|
references: [vehicles.id],
|
|
relationName: "vehicles",
|
|
}),
|
|
structuresID: one(structures, {
|
|
fields: [payload_locked_documents_rels.structuresID],
|
|
references: [structures.id],
|
|
relationName: "structures",
|
|
}),
|
|
shipmentsID: one(shipments, {
|
|
fields: [payload_locked_documents_rels.shipmentsID],
|
|
references: [shipments.id],
|
|
relationName: "shipments",
|
|
}),
|
|
"bank-accountsID": one(bank_accounts, {
|
|
fields: [payload_locked_documents_rels["bank-accountsID"]],
|
|
references: [bank_accounts.id],
|
|
relationName: "bank-accounts",
|
|
}),
|
|
"bank-transactionsID": one(bank_transactions, {
|
|
fields: [payload_locked_documents_rels["bank-transactionsID"]],
|
|
references: [bank_transactions.id],
|
|
relationName: "bank-transactions",
|
|
}),
|
|
"ledger-entriesID": one(ledger_entries, {
|
|
fields: [payload_locked_documents_rels["ledger-entriesID"]],
|
|
references: [ledger_entries.id],
|
|
relationName: "ledger-entries",
|
|
}),
|
|
"locker-storagesID": one(locker_storages, {
|
|
fields: [payload_locked_documents_rels["locker-storagesID"]],
|
|
references: [locker_storages.id],
|
|
relationName: "locker-storages",
|
|
}),
|
|
loadoutsID: one(loadouts, {
|
|
fields: [payload_locked_documents_rels.loadoutsID],
|
|
references: [loadouts.id],
|
|
relationName: "loadouts",
|
|
}),
|
|
"market-listingsID": one(market_listings, {
|
|
fields: [payload_locked_documents_rels["market-listingsID"]],
|
|
references: [market_listings.id],
|
|
relationName: "market-listings",
|
|
}),
|
|
"market-negotiationsID": one(market_negotiations, {
|
|
fields: [payload_locked_documents_rels["market-negotiationsID"]],
|
|
references: [market_negotiations.id],
|
|
relationName: "market-negotiations",
|
|
}),
|
|
"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",
|
|
}),
|
|
"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",
|
|
}),
|
|
"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",
|
|
}),
|
|
"plugin-ai-instructionsID": one(plugin_ai_instructions, {
|
|
fields: [payload_locked_documents_rels["plugin-ai-instructionsID"]],
|
|
references: [plugin_ai_instructions.id],
|
|
relationName: "plugin-ai-instructions",
|
|
}),
|
|
"payload-mcp-api-keysID": one(payload_mcp_api_keys, {
|
|
fields: [payload_locked_documents_rels["payload-mcp-api-keysID"]],
|
|
references: [payload_mcp_api_keys.id],
|
|
relationName: "payload-mcp-api-keys",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_payload_locked_documents = relations(
|
|
payload_locked_documents,
|
|
({ many }) => ({
|
|
_rels: many(payload_locked_documents_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_payload_preferences_rels = relations(
|
|
payload_preferences_rels,
|
|
({ one }) => ({
|
|
parent: one(payload_preferences, {
|
|
fields: [payload_preferences_rels.parent],
|
|
references: [payload_preferences.id],
|
|
relationName: "_rels",
|
|
}),
|
|
usersID: one(users, {
|
|
fields: [payload_preferences_rels.usersID],
|
|
references: [users.id],
|
|
relationName: "users",
|
|
}),
|
|
"payload-mcp-api-keysID": one(payload_mcp_api_keys, {
|
|
fields: [payload_preferences_rels["payload-mcp-api-keysID"]],
|
|
references: [payload_mcp_api_keys.id],
|
|
relationName: "payload-mcp-api-keys",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_payload_preferences = relations(payload_preferences, ({ many }) => ({
|
|
_rels: many(payload_preferences_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
export const relations_payload_migrations = relations(payload_migrations, () => ({}));
|
|
export const relations_game_rules_rels = relations(game_rules_rels, ({ one }) => ({
|
|
parent: one(game_rules, {
|
|
fields: [game_rules_rels.parent],
|
|
references: [game_rules.id],
|
|
relationName: "_rels",
|
|
}),
|
|
assignmentsID: one(assignments, {
|
|
fields: [game_rules_rels.assignmentsID],
|
|
references: [assignments.id],
|
|
relationName: "assignments",
|
|
}),
|
|
}));
|
|
export const relations_game_rules = relations(game_rules, ({ one, many }) => ({
|
|
mainCurrency: one(resources, {
|
|
fields: [game_rules.mainCurrency],
|
|
references: [resources.id],
|
|
relationName: "mainCurrency",
|
|
}),
|
|
_rels: many(game_rules_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
export const relations_shims_shims_targeting_roles = relations(
|
|
shims_shims_targeting_roles,
|
|
({ one }) => ({
|
|
parent: one(shims_shims, {
|
|
fields: [shims_shims_targeting_roles.parent],
|
|
references: [shims_shims.id],
|
|
relationName: "targeting_roles",
|
|
}),
|
|
}),
|
|
);
|
|
export const relations_shims_shims = relations(shims_shims, ({ one, many }) => ({
|
|
_parentID: one(shims, {
|
|
fields: [shims_shims._parentID],
|
|
references: [shims.id],
|
|
relationName: "shims",
|
|
}),
|
|
targeting_roles: many(shims_shims_targeting_roles, {
|
|
relationName: "targeting_roles",
|
|
}),
|
|
}));
|
|
export const relations_shims_texts = relations(shims_texts, ({ one }) => ({
|
|
parent: one(shims, {
|
|
fields: [shims_texts.parent],
|
|
references: [shims.id],
|
|
relationName: "_texts",
|
|
}),
|
|
}));
|
|
export const relations_shims_rels = relations(shims_rels, ({ one }) => ({
|
|
parent: one(shims, {
|
|
fields: [shims_rels.parent],
|
|
references: [shims.id],
|
|
relationName: "_rels",
|
|
}),
|
|
usersID: one(users, {
|
|
fields: [shims_rels.usersID],
|
|
references: [users.id],
|
|
relationName: "users",
|
|
}),
|
|
}));
|
|
export const relations_shims = relations(shims, ({ many }) => ({
|
|
shims: many(shims_shims, {
|
|
relationName: "shims",
|
|
}),
|
|
_texts: many(shims_texts, {
|
|
relationName: "_texts",
|
|
}),
|
|
_rels: many(shims_rels, {
|
|
relationName: "_rels",
|
|
}),
|
|
}));
|
|
|
|
type DatabaseSchema = {
|
|
enum_game_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_missions_factions_involved_threat_level: typeof enum_missions_factions_involved_threat_level;
|
|
enum_missions_logistics_and_support_insertion: typeof enum_missions_logistics_and_support_insertion;
|
|
enum_missions_logistics_and_support_extraction: typeof enum_missions_logistics_and_support_extraction;
|
|
enum_missions_operation_type: typeof enum_missions_operation_type;
|
|
enum_missions_classification_mission_type: typeof enum_missions_classification_mission_type;
|
|
enum_missions_ownership_and_status_status: typeof enum_missions_ownership_and_status_status;
|
|
enum_missions_ownership_and_status_visibility: typeof enum_missions_ownership_and_status_visibility;
|
|
enum_missions_civilian_presence: typeof enum_missions_civilian_presence;
|
|
enum_mission_attendances_response: typeof enum_mission_attendances_response;
|
|
enum_campaigns_status: typeof enum_campaigns_status;
|
|
enum_campaigns_campaign_mode: typeof enum_campaigns_campaign_mode;
|
|
enum_factions_type: typeof enum_factions_type;
|
|
enum_technologies_approval_status: typeof enum_technologies_approval_status;
|
|
enum_technologies_type: typeof enum_technologies_type;
|
|
enum_assets_skin_configuration_applies_to_asset_types: typeof enum_assets_skin_configuration_applies_to_asset_types;
|
|
enum_assets_approval_status: typeof enum_assets_approval_status;
|
|
enum_assets_asset_type: typeof enum_assets_asset_type;
|
|
enum_assets_weapon_configuration_slot_type: typeof enum_assets_weapon_configuration_slot_type;
|
|
enum_assets_nightvision_configuration_nvg_generation: typeof enum_assets_nightvision_configuration_nvg_generation;
|
|
enum_assets_market_trading_rarity: typeof enum_assets_market_trading_rarity;
|
|
enum_resources_approval_status: typeof enum_resources_approval_status;
|
|
enum_resources_type: typeof enum_resources_type;
|
|
enum_resources_rarity: typeof enum_resources_rarity;
|
|
enum_vehicles_category: typeof enum_vehicles_category;
|
|
enum_vehicles_pylons_pylon_type: typeof enum_vehicles_pylons_pylon_type;
|
|
enum_vehicles_approval_status: typeof enum_vehicles_approval_status;
|
|
enum_vehicles_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_approval_status: typeof enum_structures_approval_status;
|
|
enum_structures_category: typeof enum_structures_category;
|
|
enum_structures_terrain_type: typeof enum_structures_terrain_type;
|
|
enum_structures_function_type: typeof enum_structures_function_type;
|
|
enum_shipments_status: typeof enum_shipments_status;
|
|
enum_bank_accounts_account_type: typeof enum_bank_accounts_account_type;
|
|
enum_bank_accounts_status: typeof enum_bank_accounts_status;
|
|
enum_bank_transactions_type: typeof enum_bank_transactions_type;
|
|
enum_bank_transactions_status: typeof enum_bank_transactions_status;
|
|
enum_ledger_entries_type: typeof enum_ledger_entries_type;
|
|
enum_market_listings_status: typeof enum_market_listings_status;
|
|
enum_market_negotiations_history_from: typeof enum_market_negotiations_history_from;
|
|
enum_market_negotiations_status: typeof enum_market_negotiations_status;
|
|
enum_market_negotiations_proposed_by: typeof enum_market_negotiations_proposed_by;
|
|
enum_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_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_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_custom_radio_tests_order: typeof enum_custom_radio_tests_order;
|
|
enum_custom_radio_test_scores_mode: typeof enum_custom_radio_test_scores_mode;
|
|
enum_plugin_ai_instructions_field_type: typeof enum_plugin_ai_instructions_field_type;
|
|
enum_plugin_ai_instructions_model_id: typeof enum_plugin_ai_instructions_model_id;
|
|
enum_shims_shims_targeting_roles: typeof enum_shims_shims_targeting_roles;
|
|
enum_shims_shims_type: typeof enum_shims_shims_type;
|
|
enum_shims_shims_targeting_audience: typeof enum_shims_shims_targeting_audience;
|
|
enum_shims_shims_paths_match_type: typeof enum_shims_shims_paths_match_type;
|
|
media: typeof media;
|
|
game_hard_resources: typeof game_hard_resources;
|
|
game_structures_labor_requirements: typeof game_structures_labor_requirements;
|
|
game_structures_staff_positions: typeof game_structures_staff_positions;
|
|
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;
|
|
missions_mission_roles_provided_roles: typeof missions_mission_roles_provided_roles;
|
|
missions_briefing: typeof missions_briefing;
|
|
missions_mission_objectives: typeof missions_mission_objectives;
|
|
missions_factions_involved: typeof missions_factions_involved;
|
|
missions_logistics_and_support_insertion: typeof missions_logistics_and_support_insertion;
|
|
missions_logistics_and_support_extraction: typeof missions_logistics_and_support_extraction;
|
|
missions_logistics_and_support_assets_available: typeof missions_logistics_and_support_assets_available;
|
|
missions_comms_and_docs_frequencies: typeof missions_comms_and_docs_frequencies;
|
|
missions: typeof missions;
|
|
missions_rels: typeof missions_rels;
|
|
mission_attendances: typeof mission_attendances;
|
|
campaigns: typeof campaigns;
|
|
factions_relationships: typeof factions_relationships;
|
|
factions: typeof factions;
|
|
factions_rels: typeof factions_rels;
|
|
technologies_requirements_prerequisite_technologies: typeof technologies_requirements_prerequisite_technologies;
|
|
technologies_research_costs_resources: typeof technologies_research_costs_resources;
|
|
technologies: typeof technologies;
|
|
technologies_rels: typeof technologies_rels;
|
|
assets_skin_configuration_applies_to_asset_types: typeof assets_skin_configuration_applies_to_asset_types;
|
|
assets_crafting_crafting_data_inputs: typeof assets_crafting_crafting_data_inputs;
|
|
assets_crafting_crafting_data_byproducts: typeof assets_crafting_crafting_data_byproducts;
|
|
assets: typeof assets;
|
|
assets_rels: typeof assets_rels;
|
|
resources: typeof resources;
|
|
vehicles_category: typeof vehicles_category;
|
|
vehicles_materials: typeof vehicles_materials;
|
|
vehicles_scrap_returns: typeof vehicles_scrap_returns;
|
|
vehicles_upkeep_costs: typeof vehicles_upkeep_costs;
|
|
vehicles_allowed_virtual_cargo: typeof vehicles_allowed_virtual_cargo;
|
|
vehicles_pylons: typeof vehicles_pylons;
|
|
vehicles: typeof vehicles;
|
|
vehicles_rels: typeof vehicles_rels;
|
|
structures_materials: typeof structures_materials;
|
|
structures_resources_in_range: typeof structures_resources_in_range;
|
|
structures_structures_in_range: typeof structures_structures_in_range;
|
|
structures_upkeep: typeof structures_upkeep;
|
|
structures_labor_requirements: typeof structures_labor_requirements;
|
|
structures_staff_positions: typeof structures_staff_positions;
|
|
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;
|
|
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;
|
|
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;
|
|
plugin_ai_instructions_images: typeof plugin_ai_instructions_images;
|
|
plugin_ai_instructions: typeof plugin_ai_instructions;
|
|
payload_mcp_api_keys: typeof payload_mcp_api_keys;
|
|
payload_kv: typeof payload_kv;
|
|
payload_locked_documents: typeof payload_locked_documents;
|
|
payload_locked_documents_rels: typeof payload_locked_documents_rels;
|
|
payload_preferences: typeof payload_preferences;
|
|
payload_preferences_rels: typeof payload_preferences_rels;
|
|
payload_migrations: typeof payload_migrations;
|
|
game_rules: typeof game_rules;
|
|
game_rules_rels: typeof game_rules_rels;
|
|
shims_shims_targeting_roles: typeof shims_shims_targeting_roles;
|
|
shims_shims: typeof shims_shims;
|
|
shims: typeof shims;
|
|
shims_texts: typeof shims_texts;
|
|
shims_rels: typeof shims_rels;
|
|
relations_media: typeof relations_media;
|
|
relations_game_hard_resources: typeof relations_game_hard_resources;
|
|
relations_game_structures_labor_requirements: typeof relations_game_structures_labor_requirements;
|
|
relations_game_structures_staff_positions: typeof relations_game_structures_staff_positions;
|
|
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_missions_mission_roles_provided_roles: typeof relations_missions_mission_roles_provided_roles;
|
|
relations_missions_briefing: typeof relations_missions_briefing;
|
|
relations_missions_mission_objectives: typeof relations_missions_mission_objectives;
|
|
relations_missions_factions_involved: typeof relations_missions_factions_involved;
|
|
relations_missions_logistics_and_support_insertion: typeof relations_missions_logistics_and_support_insertion;
|
|
relations_missions_logistics_and_support_extraction: typeof relations_missions_logistics_and_support_extraction;
|
|
relations_missions_logistics_and_support_assets_available: typeof relations_missions_logistics_and_support_assets_available;
|
|
relations_missions_comms_and_docs_frequencies: typeof relations_missions_comms_and_docs_frequencies;
|
|
relations_missions_rels: typeof relations_missions_rels;
|
|
relations_missions: typeof relations_missions;
|
|
relations_mission_attendances: typeof relations_mission_attendances;
|
|
relations_campaigns: typeof relations_campaigns;
|
|
relations_factions_relationships: typeof relations_factions_relationships;
|
|
relations_factions_rels: typeof relations_factions_rels;
|
|
relations_factions: typeof relations_factions;
|
|
relations_technologies_requirements_prerequisite_technologies: typeof relations_technologies_requirements_prerequisite_technologies;
|
|
relations_technologies_research_costs_resources: typeof relations_technologies_research_costs_resources;
|
|
relations_technologies_rels: typeof relations_technologies_rels;
|
|
relations_technologies: typeof relations_technologies;
|
|
relations_assets_skin_configuration_applies_to_asset_types: typeof relations_assets_skin_configuration_applies_to_asset_types;
|
|
relations_assets_crafting_crafting_data_inputs: typeof relations_assets_crafting_crafting_data_inputs;
|
|
relations_assets_crafting_crafting_data_byproducts: typeof relations_assets_crafting_crafting_data_byproducts;
|
|
relations_assets_rels: typeof relations_assets_rels;
|
|
relations_assets: typeof relations_assets;
|
|
relations_resources: typeof relations_resources;
|
|
relations_vehicles_category: typeof relations_vehicles_category;
|
|
relations_vehicles_materials: typeof relations_vehicles_materials;
|
|
relations_vehicles_scrap_returns: typeof relations_vehicles_scrap_returns;
|
|
relations_vehicles_upkeep_costs: typeof relations_vehicles_upkeep_costs;
|
|
relations_vehicles_allowed_virtual_cargo: typeof relations_vehicles_allowed_virtual_cargo;
|
|
relations_vehicles_pylons: typeof relations_vehicles_pylons;
|
|
relations_vehicles_rels: typeof relations_vehicles_rels;
|
|
relations_vehicles: typeof relations_vehicles;
|
|
relations_structures_materials: typeof relations_structures_materials;
|
|
relations_structures_resources_in_range: typeof relations_structures_resources_in_range;
|
|
relations_structures_structures_in_range: typeof relations_structures_structures_in_range;
|
|
relations_structures_upkeep: typeof relations_structures_upkeep;
|
|
relations_structures_labor_requirements: typeof relations_structures_labor_requirements;
|
|
relations_structures_staff_positions: typeof relations_structures_staff_positions;
|
|
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_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_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_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;
|
|
}
|
|
}
|