1
0
Fork 0

chore(generated): regenerate types and schema, register operation migrations

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
Jason Fraley 2026-09-20 02:45:00 -04:00
parent 37d28893de
commit c0563dae30
3 changed files with 1375 additions and 139 deletions

View file

@ -1,411 +1,471 @@
import * as migration_20260820_004157 from "./20260820_004157";
import * as migration_20260825_220000 from "./20260825_220000";
import * as migration_20260826_050000_repair_shims_auxiliary_tables from "./20260826_050000_repair_shims_auxiliary_tables";
import * as migration_20260826_060000_add_game_servers_event_target from "./20260826_060000_add_game_servers_event_target";
import * as migration_20260827_005757 from "./20260827_005757";
import * as migration_20260827_022334_add_eod_minesweeper_best_flags from "./20260827_022334_add_eod_minesweeper_best_flags";
import * as migration_20260827_213857_add_evaluations_collection from "./20260827_213857_add_evaluations_collection";
import * as migration_20260827_233224_add_mission_completed_at from "./20260827_233224_add_mission_completed_at";
import * as migration_20260828_011500_add_background_texture_preference from "./20260828_011500_add_background_texture_preference";
import * as migration_20260828_041615_add_campaign_mode from "./20260828_041615_add_campaign_mode";
import * as migration_20260828_044506 from "./20260828_044506";
import * as migration_20260831_142503 from "./20260831_142503";
import * as migration_20260831_180233_assignment_transfers from "./20260831_180233_assignment_transfers";
import * as migration_20260901_014006_add_assignment_transfer_event_target from "./20260901_014006_add_assignment_transfer_event_target";
import * as migration_20260901_213108_add_ticket_votes_and_edit_history from "./20260901_213108_add_ticket_votes_and_edit_history";
import * as migration_20260901_222200_add_admin_page_permissions from "./20260901_222200_add_admin_page_permissions";
import * as migration_20260902_195336_add_medal_backgrounds from "./20260902_195336_add_medal_backgrounds";
import * as migration_20260903_035544 from "./20260903_035544";
import * as migration_20260903_044047 from "./20260903_044047";
import * as migration_20260903_053419 from "./20260903_053419";
import * as migration_20260903_060000_add_radio_mode_stats from "./20260903_060000_add_radio_mode_stats";
import * as migration_20260903_061000_add_radio_incorrect_counts from "./20260903_061000_add_radio_incorrect_counts";
import * as migration_20260903_062000_add_aim_trainer_stats from "./20260903_062000_add_aim_trainer_stats";
import * as migration_20260904_230838_add_wiki_collections from "./20260904_230838_add_wiki_collections";
import * as migration_20260905_183940_base_management from "./20260905_183940_base_management";
import * as migration_20260905_195456_labor_headcount from "./20260905_195456_labor_headcount";
import * as migration_20260905_210310_labor_classifications from "./20260905_210310_labor_classifications";
import * as migration_20260905_213824 from "./20260905_213824";
import * as migration_20260905_215658 from "./20260905_215658";
import * as migration_20260906_045502 from "./20260906_045502";
import * as migration_20260906_050900_add_evaluation_reminders_field from "./20260906_050900_add_evaluation_reminders_field";
import * as migration_20260906_061451_add_wiki_template_css from "./20260906_061451_add_wiki_template_css";
import * as migration_20260906_063753_add_personal_excerpt_richtext from "./20260906_063753_add_personal_excerpt_richtext";
import * as migration_20260906_065405_add_wiki_template_html from "./20260906_065405_add_wiki_template_html";
import * as migration_20260906_100908_add_market_economy_state from "./20260906_100908_add_market_economy_state";
import * as migration_20260906_165837_add_market_state_event_target from "./20260906_165837_add_market_state_event_target";
import * as migration_20260906_202925_add_voice_submissions from "./20260906_202925_add_voice_submissions";
import * as migration_20260907_012326_add_missions_created_by from "./20260907_012326_add_missions_created_by";
import * as migration_20260907_013724_make_missions_campaign_optional from "./20260907_013724_make_missions_campaign_optional";
import * as migration_20260907_041051_add_voice_script_spoiler from "./20260907_041051_add_voice_script_spoiler";
import * as migration_20260907_043339_add_voice_script_description from "./20260907_043339_add_voice_script_description";
import * as migration_20260907_044934_add_missions_discord_modlist_hash from "./20260907_044934_add_missions_discord_modlist_hash";
import * as migration_20260907_083010_add_voice_submission_description from "./20260907_083010_add_voice_submission_description";
import * as migration_20260907_090245_add_mission_ready_reminder_fields from "./20260907_090245_add_mission_ready_reminder_fields";
import * as migration_20260907_120754_add_story_beats from "./20260907_120754_add_story_beats";
import * as migration_20260907_124024_convert_story_beats_body_to_lexical from "./20260907_124024_convert_story_beats_body_to_lexical";
import * as migration_20260908_152021_add_opord_recall_minigame_stats from "./20260908_152021_add_opord_recall_minigame_stats";
import * as migration_20260908_172241_add_custom_minigame_collections from "./20260908_172241_add_custom_minigame_collections";
import * as migration_20260908_193107_add_creator_xp_bank_field from "./20260908_193107_add_creator_xp_bank_field";
import * as migration_20260908_194435_add_expose_edge_mines_field from "./20260908_194435_add_expose_edge_mines_field";
import * as migration_20260909_153427_add_opord_recall_best_times from "./20260909_153427_add_opord_recall_best_times";
import * as migration_20260909_223955_add_voice_script_draft_status from "./20260909_223955_add_voice_script_draft_status";
import * as migration_20260910_221018_make_missions_codename_optional from "./20260910_221018_make_missions_codename_optional";
import * as migration_20260910_222518_add_dashboard_layout_preference from "./20260910_222518_add_dashboard_layout_preference";
import * as migration_20260911_044754_add_poker_minigame_stats from "./20260911_044754_add_poker_minigame_stats";
import * as migration_20260911_052147_add_ribbon_submissions from "./20260911_052147_add_ribbon_submissions";
import * as migration_20260911_201559_add_award_advancement_series from "./20260911_201559_add_award_advancement_series";
import * as migration_20260912_051752_add_rank_promotion_ceiling from "./20260912_051752_add_rank_promotion_ceiling";
import * as migration_20260912_071740_add_blackjack_minigame_stats from "./20260912_071740_add_blackjack_minigame_stats";
import * as migration_20260912_231219_add_discord_cancelled_at from "./20260912_231219_add_discord_cancelled_at";
import * as migration_20260914_153046_add_chip_bank from "./20260914_153046_add_chip_bank";
import * as migration_20260914_171412_add_respawn_tickets from "./20260914_171412_add_respawn_tickets";
import * as migration_20260916_083158_add_game_map_system from "./20260916_083158_add_game_map_system";
import * as migration_20260916_185544_construction_timestamp_model from "./20260916_185544_construction_timestamp_model";
import * as migration_20260916_220224_add_map_labels_and_styling from "./20260916_220224_add_map_labels_and_styling";
import * as migration_20260917_023028_add_node_and_zone_resources from "./20260917_023028_add_node_and_zone_resources";
import * as migration_20260917_112258_add_zone_political_types from "./20260917_112258_add_zone_political_types";
import * as migration_20260918_170318_add_imminent_reminder_marker from "./20260918_170318_add_imminent_reminder_marker";
import * as migration_20260820_004157 from './20260820_004157';
import * as migration_20260825_220000 from './20260825_220000';
import * as migration_20260826_050000_repair_shims_auxiliary_tables from './20260826_050000_repair_shims_auxiliary_tables';
import * as migration_20260826_060000_add_game_servers_event_target from './20260826_060000_add_game_servers_event_target';
import * as migration_20260827_005757 from './20260827_005757';
import * as migration_20260827_022334_add_eod_minesweeper_best_flags from './20260827_022334_add_eod_minesweeper_best_flags';
import * as migration_20260827_213857_add_evaluations_collection from './20260827_213857_add_evaluations_collection';
import * as migration_20260827_233224_add_mission_completed_at from './20260827_233224_add_mission_completed_at';
import * as migration_20260828_011500_add_background_texture_preference from './20260828_011500_add_background_texture_preference';
import * as migration_20260828_041615_add_campaign_mode from './20260828_041615_add_campaign_mode';
import * as migration_20260828_044506 from './20260828_044506';
import * as migration_20260831_142503 from './20260831_142503';
import * as migration_20260831_180233_assignment_transfers from './20260831_180233_assignment_transfers';
import * as migration_20260901_014006_add_assignment_transfer_event_target from './20260901_014006_add_assignment_transfer_event_target';
import * as migration_20260901_213108_add_ticket_votes_and_edit_history from './20260901_213108_add_ticket_votes_and_edit_history';
import * as migration_20260901_222200_add_admin_page_permissions from './20260901_222200_add_admin_page_permissions';
import * as migration_20260902_195336_add_medal_backgrounds from './20260902_195336_add_medal_backgrounds';
import * as migration_20260903_035544 from './20260903_035544';
import * as migration_20260903_044047 from './20260903_044047';
import * as migration_20260903_053419 from './20260903_053419';
import * as migration_20260903_060000_add_radio_mode_stats from './20260903_060000_add_radio_mode_stats';
import * as migration_20260903_061000_add_radio_incorrect_counts from './20260903_061000_add_radio_incorrect_counts';
import * as migration_20260903_062000_add_aim_trainer_stats from './20260903_062000_add_aim_trainer_stats';
import * as migration_20260904_230838_add_wiki_collections from './20260904_230838_add_wiki_collections';
import * as migration_20260905_183940_base_management from './20260905_183940_base_management';
import * as migration_20260905_195456_labor_headcount from './20260905_195456_labor_headcount';
import * as migration_20260905_210310_labor_classifications from './20260905_210310_labor_classifications';
import * as migration_20260905_213824 from './20260905_213824';
import * as migration_20260905_215658 from './20260905_215658';
import * as migration_20260906_045502 from './20260906_045502';
import * as migration_20260906_050900_add_evaluation_reminders_field from './20260906_050900_add_evaluation_reminders_field';
import * as migration_20260906_061451_add_wiki_template_css from './20260906_061451_add_wiki_template_css';
import * as migration_20260906_063753_add_personal_excerpt_richtext from './20260906_063753_add_personal_excerpt_richtext';
import * as migration_20260906_065405_add_wiki_template_html from './20260906_065405_add_wiki_template_html';
import * as migration_20260906_100908_add_market_economy_state from './20260906_100908_add_market_economy_state';
import * as migration_20260906_165837_add_market_state_event_target from './20260906_165837_add_market_state_event_target';
import * as migration_20260906_202925_add_voice_submissions from './20260906_202925_add_voice_submissions';
import * as migration_20260907_012326_add_missions_created_by from './20260907_012326_add_missions_created_by';
import * as migration_20260907_013724_make_missions_campaign_optional from './20260907_013724_make_missions_campaign_optional';
import * as migration_20260907_041051_add_voice_script_spoiler from './20260907_041051_add_voice_script_spoiler';
import * as migration_20260907_043339_add_voice_script_description from './20260907_043339_add_voice_script_description';
import * as migration_20260907_044934_add_missions_discord_modlist_hash from './20260907_044934_add_missions_discord_modlist_hash';
import * as migration_20260907_083010_add_voice_submission_description from './20260907_083010_add_voice_submission_description';
import * as migration_20260907_090245_add_mission_ready_reminder_fields from './20260907_090245_add_mission_ready_reminder_fields';
import * as migration_20260907_120754_add_story_beats from './20260907_120754_add_story_beats';
import * as migration_20260907_124024_convert_story_beats_body_to_lexical from './20260907_124024_convert_story_beats_body_to_lexical';
import * as migration_20260908_152021_add_opord_recall_minigame_stats from './20260908_152021_add_opord_recall_minigame_stats';
import * as migration_20260908_172241_add_custom_minigame_collections from './20260908_172241_add_custom_minigame_collections';
import * as migration_20260908_193107_add_creator_xp_bank_field from './20260908_193107_add_creator_xp_bank_field';
import * as migration_20260908_194435_add_expose_edge_mines_field from './20260908_194435_add_expose_edge_mines_field';
import * as migration_20260909_153427_add_opord_recall_best_times from './20260909_153427_add_opord_recall_best_times';
import * as migration_20260909_223955_add_voice_script_draft_status from './20260909_223955_add_voice_script_draft_status';
import * as migration_20260910_221018_make_missions_codename_optional from './20260910_221018_make_missions_codename_optional';
import * as migration_20260910_222518_add_dashboard_layout_preference from './20260910_222518_add_dashboard_layout_preference';
import * as migration_20260911_044754_add_poker_minigame_stats from './20260911_044754_add_poker_minigame_stats';
import * as migration_20260911_052147_add_ribbon_submissions from './20260911_052147_add_ribbon_submissions';
import * as migration_20260911_201559_add_award_advancement_series from './20260911_201559_add_award_advancement_series';
import * as migration_20260912_051752_add_rank_promotion_ceiling from './20260912_051752_add_rank_promotion_ceiling';
import * as migration_20260912_071740_add_blackjack_minigame_stats from './20260912_071740_add_blackjack_minigame_stats';
import * as migration_20260912_231219_add_discord_cancelled_at from './20260912_231219_add_discord_cancelled_at';
import * as migration_20260914_153046_add_chip_bank from './20260914_153046_add_chip_bank';
import * as migration_20260914_171412_add_respawn_tickets from './20260914_171412_add_respawn_tickets';
import * as migration_20260916_083158_add_game_map_system from './20260916_083158_add_game_map_system';
import * as migration_20260916_185544_construction_timestamp_model from './20260916_185544_construction_timestamp_model';
import * as migration_20260916_220224_add_map_labels_and_styling from './20260916_220224_add_map_labels_and_styling';
import * as migration_20260917_023028_add_node_and_zone_resources from './20260917_023028_add_node_and_zone_resources';
import * as migration_20260917_112258_add_zone_political_types from './20260917_112258_add_zone_political_types';
import * as migration_20260917_225116_add_zone_other_type from './20260917_225116_add_zone_other_type';
import * as migration_20260918_052751_add_production_system from './20260918_052751_add_production_system';
import * as migration_20260918_054722_add_labor_construction_speed from './20260918_054722_add_labor_construction_speed';
import * as migration_20260918_061857_add_module_slots from './20260918_061857_add_module_slots';
import * as migration_20260918_064326_add_compound_parent from './20260918_064326_add_compound_parent';
import * as migration_20260918_070328_add_blueprint_aura from './20260918_070328_add_blueprint_aura';
import * as migration_20260918_170318_add_imminent_reminder_marker from './20260918_170318_add_imminent_reminder_marker';
import * as migration_20260918_180851_add_operation_ledger from './20260918_180851_add_operation_ledger';
import * as migration_20260918_194842_add_operation_allocation from './20260918_194842_add_operation_allocation';
import * as migration_20260918_222549_add_operation_readiness from './20260918_222549_add_operation_readiness';
import * as migration_20260920_044743_add_zone_pressure from './20260920_044743_add_zone_pressure';
export const migrations = [
{
up: migration_20260820_004157.up,
down: migration_20260820_004157.down,
name: "20260820_004157",
name: '20260820_004157',
},
{
up: migration_20260825_220000.up,
down: migration_20260825_220000.down,
name: "20260825_220000",
name: '20260825_220000',
},
{
up: migration_20260826_050000_repair_shims_auxiliary_tables.up,
down: migration_20260826_050000_repair_shims_auxiliary_tables.down,
name: "20260826_050000_repair_shims_auxiliary_tables",
name: '20260826_050000_repair_shims_auxiliary_tables',
},
{
up: migration_20260826_060000_add_game_servers_event_target.up,
down: migration_20260826_060000_add_game_servers_event_target.down,
name: "20260826_060000_add_game_servers_event_target",
name: '20260826_060000_add_game_servers_event_target',
},
{
up: migration_20260827_005757.up,
down: migration_20260827_005757.down,
name: "20260827_005757",
name: '20260827_005757',
},
{
up: migration_20260827_022334_add_eod_minesweeper_best_flags.up,
down: migration_20260827_022334_add_eod_minesweeper_best_flags.down,
name: "20260827_022334_add_eod_minesweeper_best_flags",
name: '20260827_022334_add_eod_minesweeper_best_flags',
},
{
up: migration_20260827_213857_add_evaluations_collection.up,
down: migration_20260827_213857_add_evaluations_collection.down,
name: "20260827_213857_add_evaluations_collection",
name: '20260827_213857_add_evaluations_collection',
},
{
up: migration_20260827_233224_add_mission_completed_at.up,
down: migration_20260827_233224_add_mission_completed_at.down,
name: "20260827_233224_add_mission_completed_at",
name: '20260827_233224_add_mission_completed_at',
},
{
up: migration_20260828_011500_add_background_texture_preference.up,
down: migration_20260828_011500_add_background_texture_preference.down,
name: "20260828_011500_add_background_texture_preference",
name: '20260828_011500_add_background_texture_preference',
},
{
up: migration_20260828_041615_add_campaign_mode.up,
down: migration_20260828_041615_add_campaign_mode.down,
name: "20260828_041615_add_campaign_mode",
name: '20260828_041615_add_campaign_mode',
},
{
up: migration_20260828_044506.up,
down: migration_20260828_044506.down,
name: "20260828_044506",
name: '20260828_044506',
},
{
up: migration_20260831_142503.up,
down: migration_20260831_142503.down,
name: "20260831_142503",
name: '20260831_142503',
},
{
up: migration_20260831_180233_assignment_transfers.up,
down: migration_20260831_180233_assignment_transfers.down,
name: "20260831_180233_assignment_transfers",
name: '20260831_180233_assignment_transfers',
},
{
up: migration_20260901_014006_add_assignment_transfer_event_target.up,
down: migration_20260901_014006_add_assignment_transfer_event_target.down,
name: "20260901_014006_add_assignment_transfer_event_target",
name: '20260901_014006_add_assignment_transfer_event_target',
},
{
up: migration_20260901_213108_add_ticket_votes_and_edit_history.up,
down: migration_20260901_213108_add_ticket_votes_and_edit_history.down,
name: "20260901_213108_add_ticket_votes_and_edit_history",
name: '20260901_213108_add_ticket_votes_and_edit_history',
},
{
up: migration_20260901_222200_add_admin_page_permissions.up,
down: migration_20260901_222200_add_admin_page_permissions.down,
name: "20260901_222200_add_admin_page_permissions",
name: '20260901_222200_add_admin_page_permissions',
},
{
up: migration_20260902_195336_add_medal_backgrounds.up,
down: migration_20260902_195336_add_medal_backgrounds.down,
name: "20260902_195336_add_medal_backgrounds",
name: '20260902_195336_add_medal_backgrounds',
},
{
up: migration_20260903_035544.up,
down: migration_20260903_035544.down,
name: "20260903_035544",
name: '20260903_035544',
},
{
up: migration_20260903_044047.up,
down: migration_20260903_044047.down,
name: "20260903_044047",
name: '20260903_044047',
},
{
up: migration_20260903_053419.up,
down: migration_20260903_053419.down,
name: "20260903_053419",
name: '20260903_053419',
},
{
up: migration_20260903_060000_add_radio_mode_stats.up,
down: migration_20260903_060000_add_radio_mode_stats.down,
name: "20260903_060000_add_radio_mode_stats",
name: '20260903_060000_add_radio_mode_stats',
},
{
up: migration_20260903_061000_add_radio_incorrect_counts.up,
down: migration_20260903_061000_add_radio_incorrect_counts.down,
name: "20260903_061000_add_radio_incorrect_counts",
name: '20260903_061000_add_radio_incorrect_counts',
},
{
up: migration_20260903_062000_add_aim_trainer_stats.up,
down: migration_20260903_062000_add_aim_trainer_stats.down,
name: "20260903_062000_add_aim_trainer_stats",
name: '20260903_062000_add_aim_trainer_stats',
},
{
up: migration_20260904_230838_add_wiki_collections.up,
down: migration_20260904_230838_add_wiki_collections.down,
name: "20260904_230838_add_wiki_collections",
name: '20260904_230838_add_wiki_collections',
},
{
up: migration_20260905_183940_base_management.up,
down: migration_20260905_183940_base_management.down,
name: "20260905_183940_base_management",
name: '20260905_183940_base_management',
},
{
up: migration_20260905_195456_labor_headcount.up,
down: migration_20260905_195456_labor_headcount.down,
name: "20260905_195456_labor_headcount",
name: '20260905_195456_labor_headcount',
},
{
up: migration_20260905_210310_labor_classifications.up,
down: migration_20260905_210310_labor_classifications.down,
name: "20260905_210310_labor_classifications",
name: '20260905_210310_labor_classifications',
},
{
up: migration_20260905_213824.up,
down: migration_20260905_213824.down,
name: "20260905_213824",
name: '20260905_213824',
},
{
up: migration_20260905_215658.up,
down: migration_20260905_215658.down,
name: "20260905_215658",
name: '20260905_215658',
},
{
up: migration_20260906_045502.up,
down: migration_20260906_045502.down,
name: "20260906_045502",
name: '20260906_045502',
},
{
up: migration_20260906_050900_add_evaluation_reminders_field.up,
down: migration_20260906_050900_add_evaluation_reminders_field.down,
name: "20260906_050900_add_evaluation_reminders_field",
name: '20260906_050900_add_evaluation_reminders_field',
},
{
up: migration_20260906_061451_add_wiki_template_css.up,
down: migration_20260906_061451_add_wiki_template_css.down,
name: "20260906_061451_add_wiki_template_css",
name: '20260906_061451_add_wiki_template_css',
},
{
up: migration_20260906_063753_add_personal_excerpt_richtext.up,
down: migration_20260906_063753_add_personal_excerpt_richtext.down,
name: "20260906_063753_add_personal_excerpt_richtext",
name: '20260906_063753_add_personal_excerpt_richtext',
},
{
up: migration_20260906_065405_add_wiki_template_html.up,
down: migration_20260906_065405_add_wiki_template_html.down,
name: "20260906_065405_add_wiki_template_html",
name: '20260906_065405_add_wiki_template_html',
},
{
up: migration_20260906_100908_add_market_economy_state.up,
down: migration_20260906_100908_add_market_economy_state.down,
name: "20260906_100908_add_market_economy_state",
name: '20260906_100908_add_market_economy_state',
},
{
up: migration_20260906_165837_add_market_state_event_target.up,
down: migration_20260906_165837_add_market_state_event_target.down,
name: "20260906_165837_add_market_state_event_target",
name: '20260906_165837_add_market_state_event_target',
},
{
up: migration_20260906_202925_add_voice_submissions.up,
down: migration_20260906_202925_add_voice_submissions.down,
name: "20260906_202925_add_voice_submissions",
name: '20260906_202925_add_voice_submissions',
},
{
up: migration_20260907_012326_add_missions_created_by.up,
down: migration_20260907_012326_add_missions_created_by.down,
name: "20260907_012326_add_missions_created_by",
name: '20260907_012326_add_missions_created_by',
},
{
up: migration_20260907_013724_make_missions_campaign_optional.up,
down: migration_20260907_013724_make_missions_campaign_optional.down,
name: "20260907_013724_make_missions_campaign_optional",
name: '20260907_013724_make_missions_campaign_optional',
},
{
up: migration_20260907_041051_add_voice_script_spoiler.up,
down: migration_20260907_041051_add_voice_script_spoiler.down,
name: "20260907_041051_add_voice_script_spoiler",
name: '20260907_041051_add_voice_script_spoiler',
},
{
up: migration_20260907_043339_add_voice_script_description.up,
down: migration_20260907_043339_add_voice_script_description.down,
name: "20260907_043339_add_voice_script_description",
name: '20260907_043339_add_voice_script_description',
},
{
up: migration_20260907_044934_add_missions_discord_modlist_hash.up,
down: migration_20260907_044934_add_missions_discord_modlist_hash.down,
name: "20260907_044934_add_missions_discord_modlist_hash",
name: '20260907_044934_add_missions_discord_modlist_hash',
},
{
up: migration_20260907_083010_add_voice_submission_description.up,
down: migration_20260907_083010_add_voice_submission_description.down,
name: "20260907_083010_add_voice_submission_description",
name: '20260907_083010_add_voice_submission_description',
},
{
up: migration_20260907_090245_add_mission_ready_reminder_fields.up,
down: migration_20260907_090245_add_mission_ready_reminder_fields.down,
name: "20260907_090245_add_mission_ready_reminder_fields",
name: '20260907_090245_add_mission_ready_reminder_fields',
},
{
up: migration_20260907_120754_add_story_beats.up,
down: migration_20260907_120754_add_story_beats.down,
name: "20260907_120754_add_story_beats",
name: '20260907_120754_add_story_beats',
},
{
up: migration_20260907_124024_convert_story_beats_body_to_lexical.up,
down: migration_20260907_124024_convert_story_beats_body_to_lexical.down,
name: "20260907_124024_convert_story_beats_body_to_lexical",
name: '20260907_124024_convert_story_beats_body_to_lexical',
},
{
up: migration_20260908_152021_add_opord_recall_minigame_stats.up,
down: migration_20260908_152021_add_opord_recall_minigame_stats.down,
name: "20260908_152021_add_opord_recall_minigame_stats",
name: '20260908_152021_add_opord_recall_minigame_stats',
},
{
up: migration_20260908_172241_add_custom_minigame_collections.up,
down: migration_20260908_172241_add_custom_minigame_collections.down,
name: "20260908_172241_add_custom_minigame_collections",
name: '20260908_172241_add_custom_minigame_collections',
},
{
up: migration_20260908_193107_add_creator_xp_bank_field.up,
down: migration_20260908_193107_add_creator_xp_bank_field.down,
name: "20260908_193107_add_creator_xp_bank_field",
name: '20260908_193107_add_creator_xp_bank_field',
},
{
up: migration_20260908_194435_add_expose_edge_mines_field.up,
down: migration_20260908_194435_add_expose_edge_mines_field.down,
name: "20260908_194435_add_expose_edge_mines_field",
name: '20260908_194435_add_expose_edge_mines_field',
},
{
up: migration_20260909_153427_add_opord_recall_best_times.up,
down: migration_20260909_153427_add_opord_recall_best_times.down,
name: "20260909_153427_add_opord_recall_best_times",
name: '20260909_153427_add_opord_recall_best_times',
},
{
up: migration_20260909_223955_add_voice_script_draft_status.up,
down: migration_20260909_223955_add_voice_script_draft_status.down,
name: "20260909_223955_add_voice_script_draft_status",
name: '20260909_223955_add_voice_script_draft_status',
},
{
up: migration_20260910_221018_make_missions_codename_optional.up,
down: migration_20260910_221018_make_missions_codename_optional.down,
name: "20260910_221018_make_missions_codename_optional",
name: '20260910_221018_make_missions_codename_optional',
},
{
up: migration_20260910_222518_add_dashboard_layout_preference.up,
down: migration_20260910_222518_add_dashboard_layout_preference.down,
name: "20260910_222518_add_dashboard_layout_preference",
name: '20260910_222518_add_dashboard_layout_preference',
},
{
up: migration_20260911_044754_add_poker_minigame_stats.up,
down: migration_20260911_044754_add_poker_minigame_stats.down,
name: "20260911_044754_add_poker_minigame_stats",
name: '20260911_044754_add_poker_minigame_stats',
},
{
up: migration_20260911_052147_add_ribbon_submissions.up,
down: migration_20260911_052147_add_ribbon_submissions.down,
name: "20260911_052147_add_ribbon_submissions",
name: '20260911_052147_add_ribbon_submissions',
},
{
up: migration_20260911_201559_add_award_advancement_series.up,
down: migration_20260911_201559_add_award_advancement_series.down,
name: "20260911_201559_add_award_advancement_series",
name: '20260911_201559_add_award_advancement_series',
},
{
up: migration_20260912_051752_add_rank_promotion_ceiling.up,
down: migration_20260912_051752_add_rank_promotion_ceiling.down,
name: "20260912_051752_add_rank_promotion_ceiling",
name: '20260912_051752_add_rank_promotion_ceiling',
},
{
up: migration_20260912_071740_add_blackjack_minigame_stats.up,
down: migration_20260912_071740_add_blackjack_minigame_stats.down,
name: "20260912_071740_add_blackjack_minigame_stats",
name: '20260912_071740_add_blackjack_minigame_stats',
},
{
up: migration_20260912_231219_add_discord_cancelled_at.up,
down: migration_20260912_231219_add_discord_cancelled_at.down,
name: "20260912_231219_add_discord_cancelled_at",
name: '20260912_231219_add_discord_cancelled_at',
},
{
up: migration_20260914_153046_add_chip_bank.up,
down: migration_20260914_153046_add_chip_bank.down,
name: "20260914_153046_add_chip_bank",
name: '20260914_153046_add_chip_bank',
},
{
up: migration_20260914_171412_add_respawn_tickets.up,
down: migration_20260914_171412_add_respawn_tickets.down,
name: "20260914_171412_add_respawn_tickets",
name: '20260914_171412_add_respawn_tickets',
},
{
up: migration_20260916_083158_add_game_map_system.up,
down: migration_20260916_083158_add_game_map_system.down,
name: "20260916_083158_add_game_map_system",
name: '20260916_083158_add_game_map_system',
},
{
up: migration_20260916_185544_construction_timestamp_model.up,
down: migration_20260916_185544_construction_timestamp_model.down,
name: "20260916_185544_construction_timestamp_model",
name: '20260916_185544_construction_timestamp_model',
},
{
up: migration_20260916_220224_add_map_labels_and_styling.up,
down: migration_20260916_220224_add_map_labels_and_styling.down,
name: "20260916_220224_add_map_labels_and_styling",
name: '20260916_220224_add_map_labels_and_styling',
},
{
up: migration_20260917_023028_add_node_and_zone_resources.up,
down: migration_20260917_023028_add_node_and_zone_resources.down,
name: "20260917_023028_add_node_and_zone_resources",
name: '20260917_023028_add_node_and_zone_resources',
},
{
up: migration_20260917_112258_add_zone_political_types.up,
down: migration_20260917_112258_add_zone_political_types.down,
name: "20260917_112258_add_zone_political_types",
name: '20260917_112258_add_zone_political_types',
},
{
up: migration_20260917_225116_add_zone_other_type.up,
down: migration_20260917_225116_add_zone_other_type.down,
name: '20260917_225116_add_zone_other_type',
},
{
up: migration_20260918_052751_add_production_system.up,
down: migration_20260918_052751_add_production_system.down,
name: '20260918_052751_add_production_system',
},
{
up: migration_20260918_054722_add_labor_construction_speed.up,
down: migration_20260918_054722_add_labor_construction_speed.down,
name: '20260918_054722_add_labor_construction_speed',
},
{
up: migration_20260918_061857_add_module_slots.up,
down: migration_20260918_061857_add_module_slots.down,
name: '20260918_061857_add_module_slots',
},
{
up: migration_20260918_064326_add_compound_parent.up,
down: migration_20260918_064326_add_compound_parent.down,
name: '20260918_064326_add_compound_parent',
},
{
up: migration_20260918_070328_add_blueprint_aura.up,
down: migration_20260918_070328_add_blueprint_aura.down,
name: '20260918_070328_add_blueprint_aura',
},
{
up: migration_20260918_170318_add_imminent_reminder_marker.up,
down: migration_20260918_170318_add_imminent_reminder_marker.down,
name: "20260918_170318_add_imminent_reminder_marker",
name: '20260918_170318_add_imminent_reminder_marker',
},
{
up: migration_20260918_180851_add_operation_ledger.up,
down: migration_20260918_180851_add_operation_ledger.down,
name: '20260918_180851_add_operation_ledger',
},
{
up: migration_20260918_194842_add_operation_allocation.up,
down: migration_20260918_194842_add_operation_allocation.down,
name: '20260918_194842_add_operation_allocation',
},
{
up: migration_20260918_222549_add_operation_readiness.up,
down: migration_20260918_222549_add_operation_readiness.down,
name: '20260918_222549_add_operation_readiness',
},
{
up: migration_20260920_044743_add_zone_pressure.up,
down: migration_20260920_044743_add_zone_pressure.down,
name: '20260920_044743_add_zone_pressure'
},
];

View file

@ -657,6 +657,14 @@ export const enum_structures_staff_positions_position_type = pgEnum(
"enum_structures_staff_positions_position_type",
["administrative", "technical", "other"],
);
export const enum_structures_module_options_effects_type = pgEnum(
"enum_structures_module_options_effects_type",
["capacity_mass", "production_multiplier", "storage_slots"],
);
export const enum_structures_module_options_category = pgEnum(
"enum_structures_module_options_category",
["production", "logistics", "defense", "utility"],
);
export const enum_structures_approval_status = pgEnum("enum_structures_approval_status", [
"in_progress",
"ready_for_review",
@ -673,6 +681,10 @@ export const enum_structures_terrain_type = pgEnum("enum_structures_terrain_type
"land",
"water",
]);
export const enum_structures_aura_effect_type = pgEnum("enum_structures_aura_effect_type", [
"production_multiplier",
"capacity_mass",
]);
export const enum_structures_function_type = pgEnum("enum_structures_function_type", [
"producer",
"storage",
@ -838,6 +850,7 @@ export const enum_map_zones_type = pgEnum("enum_map_zones_type", [
"land",
"territory",
"border",
"other",
]);
export const enum_narrative_events_triggers_type = pgEnum("enum_narrative_events_triggers_type", [
"manual",
@ -990,6 +1003,76 @@ export const game_structures_staff_positions = pgTable(
],
);
export const game_structures_production_inputs = pgTable(
"game_structures_production_inputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("game_structures_production_inputs_order_idx").on(columns._order),
index("game_structures_production_inputs_parent_id_idx").on(columns._parentID),
index("game_structures_production_inputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_production_inputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_production_outputs = pgTable(
"game_structures_production_outputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("game_structures_production_outputs_order_idx").on(columns._order),
index("game_structures_production_outputs_parent_id_idx").on(columns._parentID),
index("game_structures_production_outputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_production_outputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_installed_modules = pgTable(
"game_structures_installed_modules",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
installedAt: timestamp("installed_at", { mode: "string", withTimezone: true, precision: 3 }),
},
(columns) => [
index("game_structures_installed_modules_order_idx").on(columns._order),
index("game_structures_installed_modules_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [game_structures.id],
name: "game_structures_installed_modules_parent_id_fk",
}).onDelete("cascade"),
],
);
export const game_structures_stored_resources = pgTable(
"game_structures_stored_resources",
{
@ -1075,9 +1158,22 @@ export const game_structures = pgTable(
precision: 3,
}),
maintenanceCost: numeric("maintenance_cost", { mode: "number" }).default(0),
productionPaused: boolean("production_paused").default(false),
lastProductionAt: timestamp("last_production_at", {
mode: "string",
withTimezone: true,
precision: 3,
}),
productionStallReason: varchar("production_stall_reason"),
coordinates: geometryColumn("coordinates"),
labelVisible: boolean("label_visible").default(true),
labelPriority: numeric("label_priority", { mode: "number" }).default(0),
parentStructure: integer("parent_structure_id").references(
(): AnyPgColumn => game_structures.id,
{
onDelete: "set null",
},
),
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
.defaultNow()
.notNull(),
@ -1089,6 +1185,7 @@ export const game_structures = pgTable(
index("game_structures_type_idx").on(columns.type),
index("game_structures_faction_idx").on(columns.faction),
index("game_structures_map_idx").on(columns.map),
index("game_structures_parent_structure_idx").on(columns.parentStructure),
index("game_structures_updated_at_idx").on(columns.updatedAt),
index("game_structures_created_at_idx").on(columns.createdAt),
],
@ -1294,6 +1391,7 @@ export const labor_classifications = pgTable(
key: varchar("key").notNull(),
defaultUnitSalary: numeric("default_unit_salary", { mode: "number" }),
description: varchar("description"),
buildEfficiency: numeric("build_efficiency", { mode: "number" }).default(1),
availableHeadcount: numeric("available_headcount", { mode: "number" }).default(0),
updatedAt: timestamp("updated_at", { mode: "string", withTimezone: true, precision: 3 })
.defaultNow()
@ -3612,6 +3710,122 @@ export const structures_staff_positions = pgTable(
],
);
export const structures_production_inputs = pgTable(
"structures_production_inputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("structures_production_inputs_order_idx").on(columns._order),
index("structures_production_inputs_parent_id_idx").on(columns._parentID),
index("structures_production_inputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_production_inputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_production_outputs = pgTable(
"structures_production_outputs",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amountPerHour: numeric("amount_per_hour", { mode: "number" }).notNull().default(0),
},
(columns) => [
index("structures_production_outputs_order_idx").on(columns._order),
index("structures_production_outputs_parent_id_idx").on(columns._parentID),
index("structures_production_outputs_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_production_outputs_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_module_options_effects = pgTable(
"structures_module_options_effects",
{
_order: integer("_order").notNull(),
_parentID: varchar("_parent_id").notNull(),
id: varchar("id").primaryKey(),
type: enum_structures_module_options_effects_type("type").notNull(),
value: numeric("value", { mode: "number" }).notNull(),
},
(columns) => [
index("structures_module_options_effects_order_idx").on(columns._order),
index("structures_module_options_effects_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures_module_options.id],
name: "structures_module_options_effects_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_module_options_materials = pgTable(
"structures_module_options_materials",
{
_order: integer("_order").notNull(),
_parentID: varchar("_parent_id").notNull(),
id: varchar("id").primaryKey(),
resource: integer("resource_id")
.notNull()
.references(() => resources.id, {
onDelete: "set null",
}),
amount: numeric("amount", { mode: "number" }).notNull(),
},
(columns) => [
index("structures_module_options_materials_order_idx").on(columns._order),
index("structures_module_options_materials_parent_id_idx").on(columns._parentID),
index("structures_module_options_materials_resource_idx").on(columns.resource),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures_module_options.id],
name: "structures_module_options_materials_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_module_options = pgTable(
"structures_module_options",
{
_order: integer("_order").notNull(),
_parentID: integer("_parent_id").notNull(),
id: varchar("id").primaryKey(),
name: varchar("name").notNull(),
category: enum_structures_module_options_category("category").notNull().default("utility"),
description: varchar("description"),
},
(columns) => [
index("structures_module_options_order_idx").on(columns._order),
index("structures_module_options_parent_id_idx").on(columns._parentID),
foreignKey({
columns: [columns["_parentID"]],
foreignColumns: [structures.id],
name: "structures_module_options_parent_id_fk",
}).onDelete("cascade"),
],
);
export const structures_auto_generated_resources = pgTable(
"structures_auto_generated_resources",
{
@ -3695,6 +3909,7 @@ export const structures = pgTable(
constructionDurationMinutes: numeric("construction_duration_minutes", {
mode: "number",
}).notNull(),
constructionCrewRequired: numeric("construction_crew_required", { mode: "number" }).default(0),
requiresUpgrade: boolean("requires_upgrade"),
upgradesInto: integer("upgrades_into_id").references((): AnyPgColumn => structures.id, {
onDelete: "set null",
@ -3703,6 +3918,10 @@ export const structures = pgTable(
terrainType: enum_structures_terrain_type("terrain_type").notNull(),
sellPrice: numeric("sell_price", { mode: "number" }),
maintenanceCost: numeric("maintenance_cost", { mode: "number" }).default(0),
moduleSlots: numeric("module_slots", { mode: "number" }).default(0),
aura_effectType: enum_structures_aura_effect_type("aura_effect_type"),
aura_value: numeric("aura_value", { mode: "number" }),
aura_rangeMeters: numeric("aura_range_meters", { mode: "number" }).default(0),
functionType: enum_structures_function_type("function_type"),
maxCapacityMass: numeric("max_capacity_mass", { mode: "number" }),
restrictToAllowed: boolean("restrict_to_allowed").default(false),
@ -6512,6 +6731,46 @@ export const relations_game_structures_staff_positions = relations(
}),
}),
);
export const relations_game_structures_production_inputs = relations(
game_structures_production_inputs,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_production_inputs._parentID],
references: [game_structures.id],
relationName: "productionInputs",
}),
resource: one(resources, {
fields: [game_structures_production_inputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_game_structures_production_outputs = relations(
game_structures_production_outputs,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_production_outputs._parentID],
references: [game_structures.id],
relationName: "productionOutputs",
}),
resource: one(resources, {
fields: [game_structures_production_outputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_game_structures_installed_modules = relations(
game_structures_installed_modules,
({ one }) => ({
_parentID: one(game_structures, {
fields: [game_structures_installed_modules._parentID],
references: [game_structures.id],
relationName: "installedModules",
}),
}),
);
export const relations_game_structures_stored_resources = relations(
game_structures_stored_resources,
({ one }) => ({
@ -6564,6 +6823,20 @@ export const relations_game_structures = relations(game_structures, ({ one, many
staffPositions: many(game_structures_staff_positions, {
relationName: "staffPositions",
}),
productionInputs: many(game_structures_production_inputs, {
relationName: "productionInputs",
}),
productionOutputs: many(game_structures_production_outputs, {
relationName: "productionOutputs",
}),
installedModules: many(game_structures_installed_modules, {
relationName: "installedModules",
}),
parentStructure: one(game_structures, {
fields: [game_structures.parentStructure],
references: [game_structures.id],
relationName: "parentStructure",
}),
storedResources: many(game_structures_stored_resources, {
relationName: "storedResources",
}),
@ -7575,6 +7848,77 @@ export const relations_structures_staff_positions = relations(
}),
}),
);
export const relations_structures_production_inputs = relations(
structures_production_inputs,
({ one }) => ({
_parentID: one(structures, {
fields: [structures_production_inputs._parentID],
references: [structures.id],
relationName: "productionInputs",
}),
resource: one(resources, {
fields: [structures_production_inputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_structures_production_outputs = relations(
structures_production_outputs,
({ one }) => ({
_parentID: one(structures, {
fields: [structures_production_outputs._parentID],
references: [structures.id],
relationName: "productionOutputs",
}),
resource: one(resources, {
fields: [structures_production_outputs.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_structures_module_options_effects = relations(
structures_module_options_effects,
({ one }) => ({
_parentID: one(structures_module_options, {
fields: [structures_module_options_effects._parentID],
references: [structures_module_options.id],
relationName: "effects",
}),
}),
);
export const relations_structures_module_options_materials = relations(
structures_module_options_materials,
({ one }) => ({
_parentID: one(structures_module_options, {
fields: [structures_module_options_materials._parentID],
references: [structures_module_options.id],
relationName: "materials",
}),
resource: one(resources, {
fields: [structures_module_options_materials.resource],
references: [resources.id],
relationName: "resource",
}),
}),
);
export const relations_structures_module_options = relations(
structures_module_options,
({ one, many }) => ({
_parentID: one(structures, {
fields: [structures_module_options._parentID],
references: [structures.id],
relationName: "moduleOptions",
}),
effects: many(structures_module_options_effects, {
relationName: "effects",
}),
materials: many(structures_module_options_materials, {
relationName: "materials",
}),
}),
);
export const relations_structures_auto_generated_resources = relations(
structures_auto_generated_resources,
({ one }) => ({
@ -7666,6 +8010,15 @@ export const relations_structures = relations(structures, ({ one, many }) => ({
staffPositions: many(structures_staff_positions, {
relationName: "staffPositions",
}),
productionInputs: many(structures_production_inputs, {
relationName: "productionInputs",
}),
productionOutputs: many(structures_production_outputs, {
relationName: "productionOutputs",
}),
moduleOptions: many(structures_module_options, {
relationName: "moduleOptions",
}),
autoGeneratedResources: many(structures_auto_generated_resources, {
relationName: "autoGeneratedResources",
}),
@ -8829,9 +9182,12 @@ type DatabaseSchema = {
enum_vehicles_transport_mode: typeof enum_vehicles_transport_mode;
enum_vehicles_armor_rating: typeof enum_vehicles_armor_rating;
enum_structures_staff_positions_position_type: typeof enum_structures_staff_positions_position_type;
enum_structures_module_options_effects_type: typeof enum_structures_module_options_effects_type;
enum_structures_module_options_category: typeof enum_structures_module_options_category;
enum_structures_approval_status: typeof enum_structures_approval_status;
enum_structures_category: typeof enum_structures_category;
enum_structures_terrain_type: typeof enum_structures_terrain_type;
enum_structures_aura_effect_type: typeof enum_structures_aura_effect_type;
enum_structures_function_type: typeof enum_structures_function_type;
enum_shipments_status: typeof enum_shipments_status;
enum_bank_accounts_account_type: typeof enum_bank_accounts_account_type;
@ -8878,6 +9234,9 @@ type DatabaseSchema = {
game_hard_resources: typeof game_hard_resources;
game_structures_labor_requirements: typeof game_structures_labor_requirements;
game_structures_staff_positions: typeof game_structures_staff_positions;
game_structures_production_inputs: typeof game_structures_production_inputs;
game_structures_production_outputs: typeof game_structures_production_outputs;
game_structures_installed_modules: typeof game_structures_installed_modules;
game_structures_stored_resources: typeof game_structures_stored_resources;
game_structures_void_storage: typeof game_structures_void_storage;
game_structures: typeof game_structures;
@ -8953,6 +9312,11 @@ type DatabaseSchema = {
structures_upkeep: typeof structures_upkeep;
structures_labor_requirements: typeof structures_labor_requirements;
structures_staff_positions: typeof structures_staff_positions;
structures_production_inputs: typeof structures_production_inputs;
structures_production_outputs: typeof structures_production_outputs;
structures_module_options_effects: typeof structures_module_options_effects;
structures_module_options_materials: typeof structures_module_options_materials;
structures_module_options: typeof structures_module_options;
structures_auto_generated_resources: typeof structures_auto_generated_resources;
structures_allowed_storage: typeof structures_allowed_storage;
structures_prohibited_storage: typeof structures_prohibited_storage;
@ -9026,6 +9390,9 @@ type DatabaseSchema = {
relations_game_hard_resources: typeof relations_game_hard_resources;
relations_game_structures_labor_requirements: typeof relations_game_structures_labor_requirements;
relations_game_structures_staff_positions: typeof relations_game_structures_staff_positions;
relations_game_structures_production_inputs: typeof relations_game_structures_production_inputs;
relations_game_structures_production_outputs: typeof relations_game_structures_production_outputs;
relations_game_structures_installed_modules: typeof relations_game_structures_installed_modules;
relations_game_structures_stored_resources: typeof relations_game_structures_stored_resources;
relations_game_structures_void_storage: typeof relations_game_structures_void_storage;
relations_game_structures: typeof relations_game_structures;
@ -9101,6 +9468,11 @@ type DatabaseSchema = {
relations_structures_upkeep: typeof relations_structures_upkeep;
relations_structures_labor_requirements: typeof relations_structures_labor_requirements;
relations_structures_staff_positions: typeof relations_structures_staff_positions;
relations_structures_production_inputs: typeof relations_structures_production_inputs;
relations_structures_production_outputs: typeof relations_structures_production_outputs;
relations_structures_module_options_effects: typeof relations_structures_module_options_effects;
relations_structures_module_options_materials: typeof relations_structures_module_options_materials;
relations_structures_module_options: typeof relations_structures_module_options;
relations_structures_auto_generated_resources: typeof relations_structures_auto_generated_resources;
relations_structures_allowed_storage: typeof relations_structures_allowed_storage;
relations_structures_prohibited_storage: typeof relations_structures_prohibited_storage;

View file

@ -130,6 +130,11 @@ export interface Config {
'arma-sync-events': ArmaSyncEvent;
'arma-commands': ArmaCommand;
'respawn-tickets': RespawnTicket;
'operation-events': OperationEvent;
'operation-effects': OperationEffect;
'operation-reservations': OperationReservation;
'operation-readiness': OperationReadiness;
'zone-pressure': ZonePressure;
'custom-minefields': CustomMinefield;
'custom-minefield-scores': CustomMinefieldScore;
'custom-radio-tests': CustomRadioTest;
@ -212,6 +217,11 @@ export interface Config {
'arma-sync-events': ArmaSyncEventsSelect<false> | ArmaSyncEventsSelect<true>;
'arma-commands': ArmaCommandsSelect<false> | ArmaCommandsSelect<true>;
'respawn-tickets': RespawnTicketsSelect<false> | RespawnTicketsSelect<true>;
'operation-events': OperationEventsSelect<false> | OperationEventsSelect<true>;
'operation-effects': OperationEffectsSelect<false> | OperationEffectsSelect<true>;
'operation-reservations': OperationReservationsSelect<false> | OperationReservationsSelect<true>;
'operation-readiness': OperationReadinessSelect<false> | OperationReadinessSelect<true>;
'zone-pressure': ZonePressureSelect<false> | ZonePressureSelect<true>;
'custom-minefields': CustomMinefieldsSelect<false> | CustomMinefieldsSelect<true>;
'custom-minefield-scores': CustomMinefieldScoresSelect<false> | CustomMinefieldScoresSelect<true>;
'custom-radio-tests': CustomRadioTestsSelect<false> | CustomRadioTestsSelect<true>;
@ -402,6 +412,48 @@ export interface GameStructure {
id?: string | null;
}[]
| null;
productionInputs?:
| {
resource: number | Resource;
/**
* Units processed per real hour while running and staffed.
*/
amountPerHour: number;
id?: string | null;
}[]
| null;
productionOutputs?:
| {
resource: number | Resource;
/**
* Units processed per real hour while running and staffed.
*/
amountPerHour: number;
id?: string | null;
}[]
| null;
/**
* Managed by the install/uninstall module actions.
*/
installedModules?:
| {
name: string;
installedAt?: string | null;
id?: string | null;
}[]
| null;
/**
* When checked the structure stops producing until unchecked.
*/
productionPaused?: boolean | null;
/**
* Last game tick that ran this structure's recipe.
*/
lastProductionAt?: string | null;
/**
* Why production is not running: no_labor, missing_inputs, storage_full. Empty = running.
*/
productionStallReason?: string | null;
/**
* Map meters [x, y] on the structure's game map (not geographic degrees).
*
@ -417,6 +469,10 @@ export interface GameStructure {
* Label priority for clustering (0-100). Higher wins when structures overlap at low zoom; ties break by stored mass.
*/
labelPriority?: number | null;
/**
* Set when this building is part of a compound: its storage pools into the hub, which carries the compound's map label and ribbon.
*/
parentStructure?: (number | null) | GameStructure;
storedResources?:
| {
resource: number | Resource;
@ -502,6 +558,10 @@ export interface Structure {
* How many real minutes it takes to complete construction of this structure after materials are delivered and building starts.
*/
constructionDurationMinutes: number;
/**
* Effective crew needed for the listed build time. 0 builds at full speed with no labor. Understaffed sites build proportionally slower.
*/
constructionCrewRequired?: number | null;
/**
* What research must be done before this can be built.
*/
@ -598,6 +658,71 @@ export interface Structure {
id?: string | null;
}[]
| null;
/**
* Default recipe copied into newly created game-structures of this type. Empty = no recipe.
*/
productionInputs?:
| {
resource: number | Resource;
/**
* Units processed per real hour while running and staffed.
*/
amountPerHour: number;
id?: string | null;
}[]
| null;
/**
* Default recipe copied into newly created game-structures of this type. Empty = no recipe.
*/
productionOutputs?:
| {
resource: number | Resource;
/**
* Units processed per real hour while running and staffed.
*/
amountPerHour: number;
id?: string | null;
}[]
| null;
/**
* How many modules can be installed in structures of this type. 0 = no module support.
*/
moduleSlots?: number | null;
/**
* Modules that can be installed into structures of this type.
*/
moduleOptions?:
| {
name: string;
category: 'production' | 'logistics' | 'defense' | 'utility';
description?: string | null;
effects: {
type: 'capacity_mass' | 'production_multiplier' | 'storage_slots';
/**
* capacity_mass: extra kg of storage. storage_slots: extra grid slots. production_multiplier: output boost as a fraction (0.25 = +25%).
*/
value: number;
id?: string | null;
}[];
materials: {
resource: number | Resource;
amount: number;
id?: string | null;
}[];
id?: string | null;
}[]
| null;
/**
* Projected onto nearby operational structures (neighbors only, not itself).
*/
aura?: {
/**
* production_multiplier: boosts the neighbor's production output (value 0.25 = +25%). capacity_mass: raises the neighbor's storage capacity (value in kg).
*/
effectType?: ('production_multiplier' | 'capacity_mass') | null;
value?: number | null;
rangeMeters?: number | null;
};
/**
* The app will use this type to determine what processes should run for this structure type.
*/
@ -899,6 +1024,10 @@ export interface LaborClassification {
*/
defaultUnitSalary?: number | null;
description?: string | null;
/**
* Construction speed this trade contributes per worker while building structures (1 = a full worker).
*/
buildEfficiency?: number | null;
/**
* How many workers of this classification are currently available to hire across the unit. Hiring consumes from this pool; releasing staff returns them.
*/
@ -1751,6 +1880,31 @@ export interface Role {
| 'arma-commands:update'
| 'arma-commands:delete'
| 'admin:arma-commands:manage'
| 'operation-events:create'
| 'operation-events:read'
| 'operation-events:update'
| 'operation-events:delete'
| 'admin:operation-events:manage'
| 'operation-effects:create'
| 'operation-effects:read'
| 'operation-effects:update'
| 'operation-effects:delete'
| 'admin:operation-effects:manage'
| 'operation-reservations:create'
| 'operation-reservations:read'
| 'operation-reservations:update'
| 'operation-reservations:delete'
| 'admin:operation-reservations:manage'
| 'operation-readiness:create'
| 'operation-readiness:read'
| 'operation-readiness:update'
| 'operation-readiness:delete'
| 'admin:operation-readiness:manage'
| 'zone-pressure:create'
| 'zone-pressure:read'
| 'zone-pressure:update'
| 'zone-pressure:delete'
| 'admin:zone-pressure:manage'
| 'game-rules:read'
| 'game-rules:update'
| 'shims:read'
@ -3829,9 +3983,9 @@ export interface MapZone {
description?: string | null;
map: number | Map;
/**
* Water zones block land-blueprint placement. Land zones are informational; default terrain is buildable land. Territory and Country Border are political boundaries (informational).
* Water zones block land-blueprint placement. Land zones are informational; default terrain is buildable land. Territory and Country Border are political boundaries (informational). Other is for generic areas such as named compounds.
*/
type: 'water' | 'land' | 'territory' | 'border';
type: 'water' | 'land' | 'territory' | 'border' | 'other';
/**
* Polygon fill as hex (e.g. #38bdf8). Empty = default color for the type.
*/
@ -3841,7 +3995,7 @@ export interface MapZone {
*/
strokeColor?: string | null;
/**
* Fill opacity 0-1. Empty = default (0.25 water, 0.08 land, 0.1 territory, 0.06 border).
* Fill opacity 0-1. Empty = default (0.25 water, 0.08 land, 0.1 territory, 0.06 border, 0.08 other).
*/
fillOpacity?: number | null;
/**
@ -4106,6 +4260,311 @@ export interface RespawnTicket {
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-events".
*/
export interface OperationEvent {
id: number;
/**
* The immutable raw sync event this record was derived from.
*/
sourceEvent: number | ArmaSyncEvent;
/**
* Mirror of the raw event's server-prefixed id (serverId:eventId).
*/
eventId: string;
/**
* Operation identity from the event payload, or "unknown".
*/
operationId: string;
/**
* Event type as received. Supported: operation.start, operation.end, operation.objective, operation.extraction, operation.inventory, player.kill. Unknown types are kept as dead-letter records.
*/
type: string;
/**
* Event contract version from the payload (default 1).
*/
version: number;
/**
* Validation outcome. Only validated events derive effects.
*/
status: 'validated' | 'rejected' | 'dead-letter';
/**
* Rejection/dead-letter reason: { code, message }.
*/
error?:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
/**
* SHA-256 of the stable-stringified raw payload.
*/
payloadHash: string;
actor?: (number | null) | User;
server?: (number | null) | GameServer;
mission?: (number | null) | Mission;
occurredAt: string;
validatedAt?: string | null;
reconciliationNotes?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-effects".
*/
export interface OperationEffect {
id: number;
/**
* The validated operation event this effect derives from.
*/
operationEvent: number | OperationEvent;
/**
* The raw source event this effect derives from.
*/
sourceEvent: number | ArmaSyncEvent;
operationId: string;
/**
* Idempotency key: `${eventId}:${effectType}`.
*/
effectKey: string;
effectType:
| 'operation.started'
| 'operation.ended'
| 'operation.objective-updated'
| 'operation.extraction-recorded'
| 'operation.inventory-recorded';
status: 'applied' | 'pending' | 'failed' | 'reversed';
payload?:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
/**
* Set when this effect reverses another effect.
*/
reversalOf?: (number | null) | OperationEffect;
/**
* Set when this effect has been reversed.
*/
reversedBy?: (number | null) | OperationEffect;
reconciliationNotes?: string | null;
appliedAt?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-reservations".
*/
export interface OperationReservation {
id: number;
/**
* Idempotency key for the allocation request. Retries with the same key are no-ops.
*/
reservationKey: string;
/**
* Operation identity this allocation belongs to.
*/
operationId: string;
/**
* The mission these assets are allocated to, when known.
*/
mission?: (number | null) | Mission;
/**
* reserved is the only non-terminal state; every terminal state is settled exactly once.
*/
status: 'reserved' | 'settled' | 'cancelled' | 'expired' | 'no-show';
/**
* Reserved unit members.
*/
personnel?:
| {
user: number | User;
/**
* Optional role/slot label.
*/
slot?: string | null;
id?: string | null;
}[]
| null;
/**
* Reserved deployed vehicles.
*/
vehicles?:
| {
vehicle: number | GameVehicle;
id?: string | null;
}[]
| null;
/**
* Reserved resources (drawn from the origin structure).
*/
cargo?:
| {
resource: number | Resource;
amount: number;
id?: string | null;
}[]
| null;
/**
* Treasury budget earmarked for the operation.
*/
budget?: {
account?: (number | null) | BankAccount;
amount?: number | null;
};
/**
* Structure the reserved cargo/vehicles are drawn from.
*/
origin?: (number | null) | GameStructure;
/**
* Structure the cargo is bound for (storage rules checked at reserve time).
*/
destination?: (number | null) | GameStructure;
/**
* When the reservation lapses; the expiry sweeper settles it as expired.
*/
expiresAt?: string | null;
createdBy?: (number | null) | User;
settledAt?: string | null;
/**
* Provenance: the operation effect that drove this settlement, when effect-driven.
*/
settledByEffect?: (number | null) | OperationEffect;
/**
* Deterministic settlement record: outcome, reason, consumed and returned amounts, actor, effect, timestamp.
*/
settlement?:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-readiness".
*/
export interface OperationReadiness {
id: number;
/**
* Who the aggregate is for: a specific user, or a whole role.
*/
subjectType: 'user' | 'role';
/**
* Id of the subject (user id for user-scoped; null for role-scoped).
*/
subjectId?: number | null;
/**
* Human-readable label for the subject (role name or username). Display only.
*/
subjectLabel?: string | null;
/**
* Start of the explicit time window this aggregate covers.
*/
windowStart: string;
/**
* End of the time window.
*/
windowEnd?: string | null;
/**
* Optional human label for the window (e.g. an ISO week).
*/
windowLabel?: string | null;
/**
* Optional operation identity the window's data is attributed to.
*/
operationId?: string | null;
/**
* Readiness calculation model version.
*/
calculationVersion: string;
/**
* Advisory-only. Never used to gate, punish, or rank players against one another.
*/
nature: 'advisory';
/**
* Weighted 0-100 readiness score over present contributing categories.
*/
readinessScore?: number | null;
/**
* Weighted 0-100 planning-confidence sub-score from pre-op signals.
*/
planningConfidenceScore?: number | null;
/**
* Structured per-category breakdown ({ category, weight, score, inputCount }). No evaluator data.
*/
contributingCategories?:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
/**
* Total component inputs consumed by the aggregate.
*/
inputCount?: number | null;
/**
* Human-readable explanation enumerating contributing categories and weights. Never contains evaluator names, ids, or comments.
*/
explanation?: string | null;
/**
* When the aggregate was last computed.
*/
recomputedAt?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "zone-pressure".
*/
export interface ZonePressure {
id: number;
/**
* The zone this pressure applies to.
*/
zone: number | MapZone;
/**
* The faction whose activity drives this pressure.
*/
faction?: (number | null) | Faction;
operationId: string;
/**
* The mission the operation was scoped to (causal AAR link).
*/
mission?: (number | null) | Mission;
/**
* The settled operation effect that produced this delta (idempotency key).
*/
sourceEffect: number | OperationEffect;
/**
* Signed pressure delta: hostile gains positive, friendly control negative.
*/
delta: number;
note?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "custom-minefields".
@ -5386,6 +5845,96 @@ export interface PayloadMcpApiKey {
*/
delete?: boolean | null;
};
operationEvents?: {
/**
* Allow clients to find operation-events.
*/
find?: boolean | null;
/**
* Allow clients to create operation-events.
*/
create?: boolean | null;
/**
* Allow clients to update operation-events.
*/
update?: boolean | null;
/**
* Allow clients to delete operation-events.
*/
delete?: boolean | null;
};
operationEffects?: {
/**
* Allow clients to find operation-effects.
*/
find?: boolean | null;
/**
* Allow clients to create operation-effects.
*/
create?: boolean | null;
/**
* Allow clients to update operation-effects.
*/
update?: boolean | null;
/**
* Allow clients to delete operation-effects.
*/
delete?: boolean | null;
};
operationReservations?: {
/**
* Allow clients to find operation-reservations.
*/
find?: boolean | null;
/**
* Allow clients to create operation-reservations.
*/
create?: boolean | null;
/**
* Allow clients to update operation-reservations.
*/
update?: boolean | null;
/**
* Allow clients to delete operation-reservations.
*/
delete?: boolean | null;
};
operationReadiness?: {
/**
* Allow clients to find operation-readiness.
*/
find?: boolean | null;
/**
* Allow clients to create operation-readiness.
*/
create?: boolean | null;
/**
* Allow clients to update operation-readiness.
*/
update?: boolean | null;
/**
* Allow clients to delete operation-readiness.
*/
delete?: boolean | null;
};
zonePressure?: {
/**
* Allow clients to find zone-pressure.
*/
find?: boolean | null;
/**
* Allow clients to create zone-pressure.
*/
create?: boolean | null;
/**
* Allow clients to update zone-pressure.
*/
update?: boolean | null;
/**
* Allow clients to delete zone-pressure.
*/
delete?: boolean | null;
};
customMinefields?: {
/**
* Allow clients to find custom-minefields.
@ -5737,6 +6286,26 @@ export interface PayloadLockedDocument {
relationTo: 'respawn-tickets';
value: number | RespawnTicket;
} | null)
| ({
relationTo: 'operation-events';
value: number | OperationEvent;
} | null)
| ({
relationTo: 'operation-effects';
value: number | OperationEffect;
} | null)
| ({
relationTo: 'operation-reservations';
value: number | OperationReservation;
} | null)
| ({
relationTo: 'operation-readiness';
value: number | OperationReadiness;
} | null)
| ({
relationTo: 'zone-pressure';
value: number | ZonePressure;
} | null)
| ({
relationTo: 'custom-minefields';
value: number | CustomMinefield;
@ -5872,9 +6441,34 @@ export interface GameStructuresSelect<T extends boolean = true> {
enforcedSalary?: T;
id?: T;
};
productionInputs?:
| T
| {
resource?: T;
amountPerHour?: T;
id?: T;
};
productionOutputs?:
| T
| {
resource?: T;
amountPerHour?: T;
id?: T;
};
installedModules?:
| T
| {
name?: T;
installedAt?: T;
id?: T;
};
productionPaused?: T;
lastProductionAt?: T;
productionStallReason?: T;
coordinates?: T;
labelVisible?: T;
labelPriority?: T;
parentStructure?: T;
storedResources?:
| T
| {
@ -5983,6 +6577,7 @@ export interface LaborClassificationsSelect<T extends boolean = true> {
key?: T;
defaultUnitSalary?: T;
description?: T;
buildEfficiency?: T;
availableHeadcount?: T;
updatedAt?: T;
createdAt?: T;
@ -6854,6 +7449,7 @@ export interface StructuresSelect<T extends boolean = true> {
id?: T;
};
constructionDurationMinutes?: T;
constructionCrewRequired?: T;
requiredTech?: T;
requiresUpgrade?: T;
upgradesInto?: T;
@ -6899,6 +7495,50 @@ export interface StructuresSelect<T extends boolean = true> {
enforcedSalary?: T;
id?: T;
};
productionInputs?:
| T
| {
resource?: T;
amountPerHour?: T;
id?: T;
};
productionOutputs?:
| T
| {
resource?: T;
amountPerHour?: T;
id?: T;
};
moduleSlots?: T;
moduleOptions?:
| T
| {
name?: T;
category?: T;
description?: T;
effects?:
| T
| {
type?: T;
value?: T;
id?: T;
};
materials?:
| T
| {
resource?: T;
amount?: T;
id?: T;
};
id?: T;
};
aura?:
| T
| {
effectType?: T;
value?: T;
rangeMeters?: T;
};
functionType?: T;
canProduce?: T;
autoGeneratedResources?:
@ -7536,6 +8176,130 @@ export interface RespawnTicketsSelect<T extends boolean = true> {
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-events_select".
*/
export interface OperationEventsSelect<T extends boolean = true> {
sourceEvent?: T;
eventId?: T;
operationId?: T;
type?: T;
version?: T;
status?: T;
error?: T;
payloadHash?: T;
actor?: T;
server?: T;
mission?: T;
occurredAt?: T;
validatedAt?: T;
reconciliationNotes?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-effects_select".
*/
export interface OperationEffectsSelect<T extends boolean = true> {
operationEvent?: T;
sourceEvent?: T;
operationId?: T;
effectKey?: T;
effectType?: T;
status?: T;
payload?: T;
reversalOf?: T;
reversedBy?: T;
reconciliationNotes?: T;
appliedAt?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-reservations_select".
*/
export interface OperationReservationsSelect<T extends boolean = true> {
reservationKey?: T;
operationId?: T;
mission?: T;
status?: T;
personnel?:
| T
| {
user?: T;
slot?: T;
id?: T;
};
vehicles?:
| T
| {
vehicle?: T;
id?: T;
};
cargo?:
| T
| {
resource?: T;
amount?: T;
id?: T;
};
budget?:
| T
| {
account?: T;
amount?: T;
};
origin?: T;
destination?: T;
expiresAt?: T;
createdBy?: T;
settledAt?: T;
settledByEffect?: T;
settlement?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "operation-readiness_select".
*/
export interface OperationReadinessSelect<T extends boolean = true> {
subjectType?: T;
subjectId?: T;
subjectLabel?: T;
windowStart?: T;
windowEnd?: T;
windowLabel?: T;
operationId?: T;
calculationVersion?: T;
nature?: T;
readinessScore?: T;
planningConfidenceScore?: T;
contributingCategories?: T;
inputCount?: T;
explanation?: T;
recomputedAt?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "zone-pressure_select".
*/
export interface ZonePressureSelect<T extends boolean = true> {
zone?: T;
faction?: T;
operationId?: T;
mission?: T;
sourceEffect?: T;
delta?: T;
note?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "custom-minefields_select".
@ -8129,6 +8893,46 @@ export interface PayloadMcpApiKeysSelect<T extends boolean = true> {
update?: T;
delete?: T;
};
operationEvents?:
| T
| {
find?: T;
create?: T;
update?: T;
delete?: T;
};
operationEffects?:
| T
| {
find?: T;
create?: T;
update?: T;
delete?: T;
};
operationReservations?:
| T
| {
find?: T;
create?: T;
update?: T;
delete?: T;
};
operationReadiness?:
| T
| {
find?: T;
create?: T;
update?: T;
delete?: T;
};
zonePressure?:
| T
| {
find?: T;
create?: T;
update?: T;
delete?: T;
};
customMinefields?:
| T
| {