@fidelios/db 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backup-lib.d.ts +26 -0
- package/dist/backup-lib.d.ts.map +1 -0
- package/dist/backup-lib.js +498 -0
- package/dist/backup-lib.js.map +1 -0
- package/dist/backup.d.ts +2 -0
- package/dist/backup.d.ts.map +1 -0
- package/dist/backup.js +103 -0
- package/dist/backup.js.map +1 -0
- package/dist/client.d.ts +43 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +586 -0
- package/dist/client.js.map +1 -0
- package/dist/client.test.d.ts +2 -0
- package/dist/client.test.d.ts.map +1 -0
- package/dist/client.test.js +120 -0
- package/dist/client.test.js.map +1 -0
- package/dist/embedded-postgres-error.d.ts +9 -0
- package/dist/embedded-postgres-error.d.ts.map +1 -0
- package/dist/embedded-postgres-error.js +73 -0
- package/dist/embedded-postgres-error.js.map +1 -0
- package/dist/embedded-postgres-error.test.d.ts +2 -0
- package/dist/embedded-postgres-error.test.d.ts.map +1 -0
- package/dist/embedded-postgres-error.test.js +25 -0
- package/dist/embedded-postgres-error.test.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/migrate.d.ts +2 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +25 -0
- package/dist/migrate.js.map +1 -0
- package/dist/migration-runtime.d.ts +7 -0
- package/dist/migration-runtime.d.ts.map +1 -0
- package/dist/migration-runtime.js +157 -0
- package/dist/migration-runtime.js.map +1 -0
- package/dist/migration-status.d.ts +2 -0
- package/dist/migration-status.d.ts.map +1 -0
- package/dist/migration-status.js +55 -0
- package/dist/migration-status.js.map +1 -0
- package/dist/migrations/0000_mature_masked_marvel.sql +208 -0
- package/dist/migrations/0001_fast_northstar.sql +87 -0
- package/dist/migrations/0002_big_zaladane.sql +1 -0
- package/dist/migrations/0003_shallow_quentin_quire.sql +5 -0
- package/dist/migrations/0004_issue_identifiers.sql +28 -0
- package/dist/migrations/0005_chief_luke_cage.sql +19 -0
- package/dist/migrations/0006_overjoyed_mister_sinister.sql +36 -0
- package/dist/migrations/0007_new_quentin_quire.sql +20 -0
- package/dist/migrations/0008_amused_zzzax.sql +1 -0
- package/dist/migrations/0009_fast_jackal.sql +36 -0
- package/dist/migrations/0010_stale_justin_hammer.sql +37 -0
- package/dist/migrations/0011_windy_corsair.sql +18 -0
- package/dist/migrations/0012_perpetual_ser_duncan.sql +2 -0
- package/dist/migrations/0013_dashing_wasp.sql +4 -0
- package/dist/migrations/0014_many_mikhail_rasputin.sql +135 -0
- package/dist/migrations/0015_project_color_archived.sql +2 -0
- package/dist/migrations/0016_agent_icon.sql +1 -0
- package/dist/migrations/0017_tiresome_gabe_jones.sql +51 -0
- package/dist/migrations/0018_flat_sleepwalker.sql +26 -0
- package/dist/migrations/0019_public_victor_mancha.sql +18 -0
- package/dist/migrations/0020_white_anita_blake.sql +1 -0
- package/dist/migrations/0021_chief_vindicator.sql +1 -0
- package/dist/migrations/0022_company_brand_color.sql +1 -0
- package/dist/migrations/0023_fair_lethal_legion.sql +3 -0
- package/dist/migrations/0024_far_beast.sql +2 -0
- package/dist/migrations/0025_nasty_salo.sql +15 -0
- package/dist/migrations/0026_lying_pete_wisdom.sql +39 -0
- package/dist/migrations/0027_tranquil_tenebrous.sql +2 -0
- package/dist/migrations/0028_harsh_goliath.sql +54 -0
- package/dist/migrations/0029_plugin_tables.sql +177 -0
- package/dist/migrations/0030_rich_magneto.sql +12 -0
- package/dist/migrations/0031_zippy_magma.sql +51 -0
- package/dist/migrations/0032_pretty_doctor_octopus.sql +102 -0
- package/dist/migrations/0033_shiny_black_tarantula.sql +2 -0
- package/dist/migrations/0034_fat_dormammu.sql +2 -0
- package/dist/migrations/0035_marvelous_satana.sql +91 -0
- package/dist/migrations/0036_cheerful_nitro.sql +9 -0
- package/dist/migrations/0037_friendly_eddie_brock.sql +29 -0
- package/dist/migrations/0038_careless_iron_monger.sql +5 -0
- package/dist/migrations/0039_fat_magneto.sql +161 -0
- package/dist/migrations/0040_eager_shotgun.sql +5 -0
- package/dist/migrations/0041_curly_maria_hill.sql +1 -0
- package/dist/migrations/0042_spotty_the_renegades.sql +26 -0
- package/dist/migrations/0043_reflective_captain_universe.sql +6 -0
- package/dist/migrations/0044_illegal_toad.sql +56 -0
- package/dist/migrations/0045_workable_shockwave.sql +17 -0
- package/dist/migrations/meta/0000_snapshot.json +1743 -0
- package/dist/migrations/meta/0001_snapshot.json +2441 -0
- package/dist/migrations/meta/0002_snapshot.json +2454 -0
- package/dist/migrations/meta/0003_snapshot.json +2502 -0
- package/dist/migrations/meta/0005_snapshot.json +2719 -0
- package/dist/migrations/meta/0006_snapshot.json +3048 -0
- package/dist/migrations/meta/0007_snapshot.json +3258 -0
- package/dist/migrations/meta/0008_snapshot.json +3264 -0
- package/dist/migrations/meta/0009_snapshot.json +3587 -0
- package/dist/migrations/meta/0010_snapshot.json +3929 -0
- package/dist/migrations/meta/0011_snapshot.json +4068 -0
- package/dist/migrations/meta/0012_snapshot.json +4087 -0
- package/dist/migrations/meta/0013_snapshot.json +4118 -0
- package/dist/migrations/meta/0014_snapshot.json +5187 -0
- package/dist/migrations/meta/0017_snapshot.json +5215 -0
- package/dist/migrations/meta/0018_snapshot.json +5450 -0
- package/dist/migrations/meta/0019_snapshot.json +5603 -0
- package/dist/migrations/meta/0020_snapshot.json +5603 -0
- package/dist/migrations/meta/0021_snapshot.json +5609 -0
- package/dist/migrations/meta/0023_snapshot.json +5633 -0
- package/dist/migrations/meta/0024_snapshot.json +5693 -0
- package/dist/migrations/meta/0025_snapshot.json +5849 -0
- package/dist/migrations/meta/0027_snapshot.json +6205 -0
- package/dist/migrations/meta/0028_snapshot.json +6710 -0
- package/dist/migrations/meta/0029_snapshot.json +7899 -0
- package/dist/migrations/meta/0030_snapshot.json +8003 -0
- package/dist/migrations/meta/0031_snapshot.json +7242 -0
- package/dist/migrations/meta/0032_snapshot.json +7733 -0
- package/dist/migrations/meta/0033_snapshot.json +9038 -0
- package/dist/migrations/meta/0034_snapshot.json +9039 -0
- package/dist/migrations/meta/0035_snapshot.json +9959 -0
- package/dist/migrations/meta/0036_snapshot.json +10023 -0
- package/dist/migrations/meta/0037_snapshot.json +10263 -0
- package/dist/migrations/meta/0038_snapshot.json +11350 -0
- package/dist/migrations/meta/0039_snapshot.json +10308 -0
- package/dist/migrations/meta/0040_snapshot.json +10481 -0
- package/dist/migrations/meta/0041_snapshot.json +11393 -0
- package/dist/migrations/meta/0044_snapshot.json +11701 -0
- package/dist/migrations/meta/0045_snapshot.json +11857 -0
- package/dist/migrations/meta/_journal.json +328 -0
- package/dist/migrations/migrations/0000_mature_masked_marvel.sql +208 -0
- package/dist/migrations/migrations/0001_fast_northstar.sql +87 -0
- package/dist/migrations/migrations/0002_big_zaladane.sql +1 -0
- package/dist/migrations/migrations/0003_shallow_quentin_quire.sql +5 -0
- package/dist/migrations/migrations/0004_issue_identifiers.sql +28 -0
- package/dist/migrations/migrations/0005_chief_luke_cage.sql +19 -0
- package/dist/migrations/migrations/0006_overjoyed_mister_sinister.sql +36 -0
- package/dist/migrations/migrations/0007_new_quentin_quire.sql +20 -0
- package/dist/migrations/migrations/0008_amused_zzzax.sql +1 -0
- package/dist/migrations/migrations/0009_fast_jackal.sql +36 -0
- package/dist/migrations/migrations/0010_stale_justin_hammer.sql +37 -0
- package/dist/migrations/migrations/0011_windy_corsair.sql +18 -0
- package/dist/migrations/migrations/0012_perpetual_ser_duncan.sql +2 -0
- package/dist/migrations/migrations/0013_dashing_wasp.sql +4 -0
- package/dist/migrations/migrations/0014_many_mikhail_rasputin.sql +135 -0
- package/dist/migrations/migrations/0015_project_color_archived.sql +2 -0
- package/dist/migrations/migrations/0016_agent_icon.sql +1 -0
- package/dist/migrations/migrations/0017_tiresome_gabe_jones.sql +51 -0
- package/dist/migrations/migrations/0018_flat_sleepwalker.sql +26 -0
- package/dist/migrations/migrations/0019_public_victor_mancha.sql +18 -0
- package/dist/migrations/migrations/0020_white_anita_blake.sql +1 -0
- package/dist/migrations/migrations/0021_chief_vindicator.sql +1 -0
- package/dist/migrations/migrations/0022_company_brand_color.sql +1 -0
- package/dist/migrations/migrations/0023_fair_lethal_legion.sql +3 -0
- package/dist/migrations/migrations/0024_far_beast.sql +2 -0
- package/dist/migrations/migrations/0025_nasty_salo.sql +15 -0
- package/dist/migrations/migrations/0026_lying_pete_wisdom.sql +39 -0
- package/dist/migrations/migrations/0027_tranquil_tenebrous.sql +2 -0
- package/dist/migrations/migrations/0028_harsh_goliath.sql +54 -0
- package/dist/migrations/migrations/0029_plugin_tables.sql +177 -0
- package/dist/migrations/migrations/0030_rich_magneto.sql +12 -0
- package/dist/migrations/migrations/0031_zippy_magma.sql +51 -0
- package/dist/migrations/migrations/0032_pretty_doctor_octopus.sql +102 -0
- package/dist/migrations/migrations/0033_shiny_black_tarantula.sql +2 -0
- package/dist/migrations/migrations/0034_fat_dormammu.sql +2 -0
- package/dist/migrations/migrations/0035_marvelous_satana.sql +91 -0
- package/dist/migrations/migrations/0036_cheerful_nitro.sql +9 -0
- package/dist/migrations/migrations/0037_friendly_eddie_brock.sql +29 -0
- package/dist/migrations/migrations/0038_careless_iron_monger.sql +5 -0
- package/dist/migrations/migrations/0039_fat_magneto.sql +161 -0
- package/dist/migrations/migrations/0040_eager_shotgun.sql +5 -0
- package/dist/migrations/migrations/0041_curly_maria_hill.sql +1 -0
- package/dist/migrations/migrations/0042_spotty_the_renegades.sql +26 -0
- package/dist/migrations/migrations/0043_reflective_captain_universe.sql +6 -0
- package/dist/migrations/migrations/0044_illegal_toad.sql +56 -0
- package/dist/migrations/migrations/0045_workable_shockwave.sql +17 -0
- package/dist/migrations/migrations/meta/0000_snapshot.json +1743 -0
- package/dist/migrations/migrations/meta/0001_snapshot.json +2441 -0
- package/dist/migrations/migrations/meta/0002_snapshot.json +2454 -0
- package/dist/migrations/migrations/meta/0003_snapshot.json +2502 -0
- package/dist/migrations/migrations/meta/0005_snapshot.json +2719 -0
- package/dist/migrations/migrations/meta/0006_snapshot.json +3048 -0
- package/dist/migrations/migrations/meta/0007_snapshot.json +3258 -0
- package/dist/migrations/migrations/meta/0008_snapshot.json +3264 -0
- package/dist/migrations/migrations/meta/0009_snapshot.json +3587 -0
- package/dist/migrations/migrations/meta/0010_snapshot.json +3929 -0
- package/dist/migrations/migrations/meta/0011_snapshot.json +4068 -0
- package/dist/migrations/migrations/meta/0012_snapshot.json +4087 -0
- package/dist/migrations/migrations/meta/0013_snapshot.json +4118 -0
- package/dist/migrations/migrations/meta/0014_snapshot.json +5187 -0
- package/dist/migrations/migrations/meta/0017_snapshot.json +5215 -0
- package/dist/migrations/migrations/meta/0018_snapshot.json +5450 -0
- package/dist/migrations/migrations/meta/0019_snapshot.json +5603 -0
- package/dist/migrations/migrations/meta/0020_snapshot.json +5603 -0
- package/dist/migrations/migrations/meta/0021_snapshot.json +5609 -0
- package/dist/migrations/migrations/meta/0023_snapshot.json +5633 -0
- package/dist/migrations/migrations/meta/0024_snapshot.json +5693 -0
- package/dist/migrations/migrations/meta/0025_snapshot.json +5849 -0
- package/dist/migrations/migrations/meta/0027_snapshot.json +6205 -0
- package/dist/migrations/migrations/meta/0028_snapshot.json +6710 -0
- package/dist/migrations/migrations/meta/0029_snapshot.json +7899 -0
- package/dist/migrations/migrations/meta/0030_snapshot.json +8003 -0
- package/dist/migrations/migrations/meta/0031_snapshot.json +7242 -0
- package/dist/migrations/migrations/meta/0032_snapshot.json +7733 -0
- package/dist/migrations/migrations/meta/0033_snapshot.json +9038 -0
- package/dist/migrations/migrations/meta/0034_snapshot.json +9039 -0
- package/dist/migrations/migrations/meta/0035_snapshot.json +9959 -0
- package/dist/migrations/migrations/meta/0036_snapshot.json +10023 -0
- package/dist/migrations/migrations/meta/0037_snapshot.json +10263 -0
- package/dist/migrations/migrations/meta/0038_snapshot.json +11350 -0
- package/dist/migrations/migrations/meta/0039_snapshot.json +10308 -0
- package/dist/migrations/migrations/meta/0040_snapshot.json +10481 -0
- package/dist/migrations/migrations/meta/0041_snapshot.json +11393 -0
- package/dist/migrations/migrations/meta/0044_snapshot.json +11701 -0
- package/dist/migrations/migrations/meta/0045_snapshot.json +11857 -0
- package/dist/migrations/migrations/meta/_journal.json +328 -0
- package/dist/restore.d.ts +2 -0
- package/dist/restore.d.ts.map +1 -0
- package/dist/restore.js +211 -0
- package/dist/restore.js.map +1 -0
- package/dist/runtime-config.d.ts +16 -0
- package/dist/runtime-config.d.ts.map +1 -0
- package/dist/runtime-config.js +197 -0
- package/dist/runtime-config.js.map +1 -0
- package/dist/runtime-config.test.d.ts +2 -0
- package/dist/runtime-config.test.d.ts.map +1 -0
- package/dist/runtime-config.test.js +93 -0
- package/dist/runtime-config.test.js.map +1 -0
- package/dist/s3-sync.d.ts +36 -0
- package/dist/s3-sync.d.ts.map +1 -0
- package/dist/s3-sync.js +120 -0
- package/dist/s3-sync.js.map +1 -0
- package/dist/schema/activity_log.d.ts +197 -0
- package/dist/schema/activity_log.d.ts.map +1 -0
- package/dist/schema/activity_log.js +22 -0
- package/dist/schema/activity_log.js.map +1 -0
- package/dist/schema/agent_api_keys.d.ts +144 -0
- package/dist/schema/agent_api_keys.d.ts.map +1 -0
- package/dist/schema/agent_api_keys.js +17 -0
- package/dist/schema/agent_api_keys.js.map +1 -0
- package/dist/schema/agent_config_revisions.d.ts +201 -0
- package/dist/schema/agent_config_revisions.d.ts.map +1 -0
- package/dist/schema/agent_config_revisions.js +20 -0
- package/dist/schema/agent_config_revisions.js.map +1 -0
- package/dist/schema/agent_runtime_state.d.ts +248 -0
- package/dist/schema/agent_runtime_state.d.ts.map +1 -0
- package/dist/schema/agent_runtime_state.js +23 -0
- package/dist/schema/agent_runtime_state.js.map +1 -0
- package/dist/schema/agent_task_sessions.d.ts +197 -0
- package/dist/schema/agent_task_sessions.d.ts.map +1 -0
- package/dist/schema/agent_task_sessions.js +22 -0
- package/dist/schema/agent_task_sessions.js.map +1 -0
- package/dist/schema/agent_wakeup_requests.d.ts +333 -0
- package/dist/schema/agent_wakeup_requests.d.ts.map +1 -0
- package/dist/schema/agent_wakeup_requests.js +29 -0
- package/dist/schema/agent_wakeup_requests.js.map +1 -0
- package/dist/schema/agents.d.ts +373 -0
- package/dist/schema/agents.d.ts.map +1 -0
- package/dist/schema/agents.js +29 -0
- package/dist/schema/agents.js.map +1 -0
- package/dist/schema/approval_comments.d.ts +144 -0
- package/dist/schema/approval_comments.d.ts.map +1 -0
- package/dist/schema/approval_comments.js +19 -0
- package/dist/schema/approval_comments.js.map +1 -0
- package/dist/schema/approvals.d.ts +214 -0
- package/dist/schema/approvals.d.ts.map +1 -0
- package/dist/schema/approvals.js +20 -0
- package/dist/schema/approvals.js.map +1 -0
- package/dist/schema/assets.d.ts +212 -0
- package/dist/schema/assets.d.ts.map +1 -0
- package/dist/schema/assets.js +22 -0
- package/dist/schema/assets.js.map +1 -0
- package/dist/schema/auth.d.ts +607 -0
- package/dist/schema/auth.d.ts.map +1 -0
- package/dist/schema/auth.js +44 -0
- package/dist/schema/auth.js.map +1 -0
- package/dist/schema/board_api_keys.d.ts +144 -0
- package/dist/schema/board_api_keys.d.ts.map +1 -0
- package/dist/schema/board_api_keys.js +16 -0
- package/dist/schema/board_api_keys.js.map +1 -0
- package/dist/schema/budget_incidents.d.ts +297 -0
- package/dist/schema/budget_incidents.d.ts.map +1 -0
- package/dist/schema/budget_incidents.js +29 -0
- package/dist/schema/budget_incidents.js.map +1 -0
- package/dist/schema/budget_policies.d.ts +263 -0
- package/dist/schema/budget_policies.d.ts.map +1 -0
- package/dist/schema/budget_policies.js +24 -0
- package/dist/schema/budget_policies.js.map +1 -0
- package/dist/schema/cli_auth_challenges.d.ts +263 -0
- package/dist/schema/cli_auth_challenges.d.ts.map +1 -0
- package/dist/schema/cli_auth_challenges.js +26 -0
- package/dist/schema/cli_auth_challenges.js.map +1 -0
- package/dist/schema/companies.d.ts +246 -0
- package/dist/schema/companies.d.ts.map +1 -0
- package/dist/schema/companies.js +22 -0
- package/dist/schema/companies.js.map +1 -0
- package/dist/schema/company_logos.d.ts +93 -0
- package/dist/schema/company_logos.d.ts.map +1 -0
- package/dist/schema/company_logos.js +14 -0
- package/dist/schema/company_logos.js.map +1 -0
- package/dist/schema/company_memberships.d.ts +144 -0
- package/dist/schema/company_memberships.d.ts.map +1 -0
- package/dist/schema/company_memberships.js +17 -0
- package/dist/schema/company_memberships.js.map +1 -0
- package/dist/schema/company_secret_versions.d.ts +163 -0
- package/dist/schema/company_secret_versions.d.ts.map +1 -0
- package/dist/schema/company_secret_versions.js +19 -0
- package/dist/schema/company_secret_versions.js.map +1 -0
- package/dist/schema/company_secrets.d.ts +195 -0
- package/dist/schema/company_secrets.d.ts.map +1 -0
- package/dist/schema/company_secrets.js +21 -0
- package/dist/schema/company_secrets.js.map +1 -0
- package/dist/schema/company_skills.d.ts +284 -0
- package/dist/schema/company_skills.d.ts.map +1 -0
- package/dist/schema/company_skills.js +24 -0
- package/dist/schema/company_skills.js.map +1 -0
- package/dist/schema/cost_events.d.ts +314 -0
- package/dist/schema/cost_events.d.ts.map +1 -0
- package/dist/schema/cost_events.js +34 -0
- package/dist/schema/cost_events.js.map +1 -0
- package/dist/schema/document_revisions.d.ts +161 -0
- package/dist/schema/document_revisions.d.ts.map +1 -0
- package/dist/schema/document_revisions.js +19 -0
- package/dist/schema/document_revisions.js.map +1 -0
- package/dist/schema/documents.d.ts +229 -0
- package/dist/schema/documents.d.ts.map +1 -0
- package/dist/schema/documents.js +22 -0
- package/dist/schema/documents.js.map +1 -0
- package/dist/schema/execution_workspaces.d.ts +418 -0
- package/dist/schema/execution_workspaces.d.ts.map +1 -0
- package/dist/schema/execution_workspaces.js +39 -0
- package/dist/schema/execution_workspaces.js.map +1 -0
- package/dist/schema/finance_events.d.ts +469 -0
- package/dist/schema/finance_events.d.ts.map +1 -0
- package/dist/schema/finance_events.js +45 -0
- package/dist/schema/finance_events.js.map +1 -0
- package/dist/schema/goals.d.ts +178 -0
- package/dist/schema/goals.d.ts.map +1 -0
- package/dist/schema/goals.js +18 -0
- package/dist/schema/goals.js.map +1 -0
- package/dist/schema/heartbeat_run_events.d.ts +214 -0
- package/dist/schema/heartbeat_run_events.d.ts.map +1 -0
- package/dist/schema/heartbeat_run_events.js +23 -0
- package/dist/schema/heartbeat_run_events.js.map +1 -0
- package/dist/schema/heartbeat_runs.d.ts +558 -0
- package/dist/schema/heartbeat_runs.d.ts.map +1 -0
- package/dist/schema/heartbeat_runs.js +43 -0
- package/dist/schema/heartbeat_runs.js.map +1 -0
- package/dist/schema/index.d.ts +59 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +59 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/instance_settings.d.ts +114 -0
- package/dist/schema/instance_settings.d.ts.map +1 -0
- package/dist/schema/instance_settings.js +12 -0
- package/dist/schema/instance_settings.js.map +1 -0
- package/dist/schema/instance_user_roles.d.ts +93 -0
- package/dist/schema/instance_user_roles.d.ts.map +1 -0
- package/dist/schema/instance_user_roles.js +12 -0
- package/dist/schema/instance_user_roles.js.map +1 -0
- package/dist/schema/invites.d.ts +214 -0
- package/dist/schema/invites.d.ts.map +1 -0
- package/dist/schema/invites.js +20 -0
- package/dist/schema/invites.js.map +1 -0
- package/dist/schema/issue_approvals.d.ts +110 -0
- package/dist/schema/issue_approvals.d.ts.map +1 -0
- package/dist/schema/issue_approvals.js +19 -0
- package/dist/schema/issue_approvals.js.map +1 -0
- package/dist/schema/issue_attachments.d.ts +127 -0
- package/dist/schema/issue_attachments.d.ts.map +1 -0
- package/dist/schema/issue_attachments.js +19 -0
- package/dist/schema/issue_attachments.js.map +1 -0
- package/dist/schema/issue_comments.d.ts +144 -0
- package/dist/schema/issue_comments.d.ts.map +1 -0
- package/dist/schema/issue_comments.js +20 -0
- package/dist/schema/issue_comments.js.map +1 -0
- package/dist/schema/issue_documents.d.ts +127 -0
- package/dist/schema/issue_documents.d.ts.map +1 -0
- package/dist/schema/issue_documents.js +18 -0
- package/dist/schema/issue_documents.js.map +1 -0
- package/dist/schema/issue_inbox_archives.d.ts +127 -0
- package/dist/schema/issue_inbox_archives.d.ts.map +1 -0
- package/dist/schema/issue_inbox_archives.js +17 -0
- package/dist/schema/issue_inbox_archives.js.map +1 -0
- package/dist/schema/issue_labels.d.ts +76 -0
- package/dist/schema/issue_labels.d.ts.map +1 -0
- package/dist/schema/issue_labels.js +16 -0
- package/dist/schema/issue_labels.js.map +1 -0
- package/dist/schema/issue_read_states.d.ts +127 -0
- package/dist/schema/issue_read_states.d.ts.map +1 -0
- package/dist/schema/issue_read_states.js +17 -0
- package/dist/schema/issue_read_states.js.map +1 -0
- package/dist/schema/issue_work_products.d.ts +350 -0
- package/dist/schema/issue_work_products.d.ts.map +1 -0
- package/dist/schema/issue_work_products.js +37 -0
- package/dist/schema/issue_work_products.js.map +1 -0
- package/dist/schema/issues.d.ts +607 -0
- package/dist/schema/issues.d.ts.map +1 -0
- package/dist/schema/issues.js +65 -0
- package/dist/schema/issues.js.map +1 -0
- package/dist/schema/join_requests.d.ts +384 -0
- package/dist/schema/join_requests.d.ts.map +1 -0
- package/dist/schema/join_requests.js +32 -0
- package/dist/schema/join_requests.js.map +1 -0
- package/dist/schema/labels.d.ts +110 -0
- package/dist/schema/labels.d.ts.map +1 -0
- package/dist/schema/labels.js +14 -0
- package/dist/schema/labels.js.map +1 -0
- package/dist/schema/plugin_company_settings.d.ts +158 -0
- package/dist/schema/plugin_company_settings.d.ts.map +1 -0
- package/dist/schema/plugin_company_settings.js +34 -0
- package/dist/schema/plugin_company_settings.js.map +1 -0
- package/dist/schema/plugin_config.d.ts +123 -0
- package/dist/schema/plugin_config.d.ts.map +1 -0
- package/dist/schema/plugin_config.js +26 -0
- package/dist/schema/plugin_config.js.map +1 -0
- package/dist/schema/plugin_entities.d.ts +213 -0
- package/dist/schema/plugin_entities.d.ts.map +1 -0
- package/dist/schema/plugin_entities.js +37 -0
- package/dist/schema/plugin_entities.js.map +1 -0
- package/dist/schema/plugin_jobs.d.ts +392 -0
- package/dist/schema/plugin_jobs.d.ts.map +1 -0
- package/dist/schema/plugin_jobs.js +83 -0
- package/dist/schema/plugin_jobs.js.map +1 -0
- package/dist/schema/plugin_logs.d.ts +125 -0
- package/dist/schema/plugin_logs.d.ts.map +1 -0
- package/dist/schema/plugin_logs.js +29 -0
- package/dist/schema/plugin_logs.js.map +1 -0
- package/dist/schema/plugin_state.d.ts +169 -0
- package/dist/schema/plugin_state.d.ts.map +1 -0
- package/dist/schema/plugin_state.js +68 -0
- package/dist/schema/plugin_state.js.map +1 -0
- package/dist/schema/plugin_webhooks.d.ts +239 -0
- package/dist/schema/plugin_webhooks.d.ts.map +1 -0
- package/dist/schema/plugin_webhooks.js +52 -0
- package/dist/schema/plugin_webhooks.js.map +1 -0
- package/dist/schema/plugins.d.ts +246 -0
- package/dist/schema/plugins.d.ts.map +1 -0
- package/dist/schema/plugins.js +31 -0
- package/dist/schema/plugins.js.map +1 -0
- package/dist/schema/principal_permission_grants.d.ts +163 -0
- package/dist/schema/principal_permission_grants.d.ts.map +1 -0
- package/dist/schema/principal_permission_grants.js +17 -0
- package/dist/schema/principal_permission_grants.js.map +1 -0
- package/dist/schema/project_goals.d.ts +93 -0
- package/dist/schema/project_goals.d.ts.map +1 -0
- package/dist/schema/project_goals.js +17 -0
- package/dist/schema/project_goals.js.map +1 -0
- package/dist/schema/project_workspaces.d.ts +333 -0
- package/dist/schema/project_workspaces.d.ts.map +1 -0
- package/dist/schema/project_workspaces.js +32 -0
- package/dist/schema/project_workspaces.js.map +1 -0
- package/dist/schema/projects.d.ts +265 -0
- package/dist/schema/projects.d.ts.map +1 -0
- package/dist/schema/projects.js +24 -0
- package/dist/schema/projects.js.map +1 -0
- package/dist/schema/routines.d.ts +993 -0
- package/dist/schema/routines.d.ts.map +1 -0
- package/dist/schema/routines.js +86 -0
- package/dist/schema/routines.js.map +1 -0
- package/dist/schema/workspace_operations.d.ts +367 -0
- package/dist/schema/workspace_operations.d.ts.map +1 -0
- package/dist/schema/workspace_operations.js +35 -0
- package/dist/schema/workspace_operations.js.map +1 -0
- package/dist/schema/workspace_runtime_services.d.ts +469 -0
- package/dist/schema/workspace_runtime_services.d.ts.map +1 -0
- package/dist/schema/workspace_runtime_services.js +44 -0
- package/dist/schema/workspace_runtime_services.js.map +1 -0
- package/dist/seed.d.ts +2 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +91 -0
- package/dist/seed.js.map +1 -0
- package/dist/test-embedded-postgres.d.ts +11 -0
- package/dist/test-embedded-postgres.d.ts.map +1 -0
- package/dist/test-embedded-postgres.js +110 -0
- package/dist/test-embedded-postgres.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type RunDatabaseBackupOptions = {
|
|
2
|
+
connectionString: string;
|
|
3
|
+
backupDir: string;
|
|
4
|
+
retentionDays: number;
|
|
5
|
+
filenamePrefix?: string;
|
|
6
|
+
connectTimeoutSeconds?: number;
|
|
7
|
+
includeMigrationJournal?: boolean;
|
|
8
|
+
excludeTables?: string[];
|
|
9
|
+
nullifyColumns?: Record<string, string[]>;
|
|
10
|
+
};
|
|
11
|
+
export type RunDatabaseBackupResult = {
|
|
12
|
+
backupFile: string;
|
|
13
|
+
sizeBytes: number;
|
|
14
|
+
uncompressedSizeBytes?: number;
|
|
15
|
+
prunedCount: number;
|
|
16
|
+
tableCounts?: Record<string, number>;
|
|
17
|
+
};
|
|
18
|
+
export type RunDatabaseRestoreOptions = {
|
|
19
|
+
connectionString: string;
|
|
20
|
+
backupFile: string;
|
|
21
|
+
connectTimeoutSeconds?: number;
|
|
22
|
+
};
|
|
23
|
+
export declare function runDatabaseBackup(opts: RunDatabaseBackupOptions): Promise<RunDatabaseBackupResult>;
|
|
24
|
+
export declare function runDatabaseRestore(opts: RunDatabaseRestoreOptions): Promise<void>;
|
|
25
|
+
export declare function formatDatabaseBackupResult(result: RunDatabaseBackupResult): string;
|
|
26
|
+
//# sourceMappingURL=backup-lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-lib.d.ts","sourceRoot":"","sources":["../src/backup-lib.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAqHF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4YxG;AAuCD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAUlF"}
|
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, statSync, unlinkSync } from "node:fs";
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { basename, resolve } from "node:path";
|
|
4
|
+
import { gzipSync, gunzipSync } from "node:zlib";
|
|
5
|
+
import postgres from "postgres";
|
|
6
|
+
const DRIZZLE_SCHEMA = "drizzle";
|
|
7
|
+
const DRIZZLE_MIGRATIONS_TABLE = "__drizzle_migrations";
|
|
8
|
+
const STATEMENT_BREAKPOINT = "-- fidelios statement breakpoint 69f6f3f1-42fd-46a6-bf17-d1d85f8f3900";
|
|
9
|
+
function sanitizeRestoreErrorMessage(error) {
|
|
10
|
+
if (error && typeof error === "object") {
|
|
11
|
+
const record = error;
|
|
12
|
+
const firstLine = typeof record.message === "string"
|
|
13
|
+
? record.message.split(/\r?\n/, 1)[0]?.trim()
|
|
14
|
+
: "";
|
|
15
|
+
const detail = typeof record.detail === "string" ? record.detail.trim() : "";
|
|
16
|
+
const severity = typeof record.severity === "string" ? record.severity.trim() : "";
|
|
17
|
+
const message = firstLine || detail || (error instanceof Error ? error.message : String(error));
|
|
18
|
+
return severity ? `${severity}: ${message}` : message;
|
|
19
|
+
}
|
|
20
|
+
return error instanceof Error ? error.message : String(error);
|
|
21
|
+
}
|
|
22
|
+
function timestamp(date = new Date()) {
|
|
23
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
24
|
+
return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}-${pad(date.getHours())}${pad(date.getMinutes())}${pad(date.getSeconds())}`;
|
|
25
|
+
}
|
|
26
|
+
function pruneOldBackups(backupDir, retentionDays, filenamePrefix) {
|
|
27
|
+
if (!existsSync(backupDir))
|
|
28
|
+
return 0;
|
|
29
|
+
const safeRetention = Math.max(1, Math.trunc(retentionDays));
|
|
30
|
+
const cutoff = Date.now() - safeRetention * 24 * 60 * 60 * 1000;
|
|
31
|
+
let pruned = 0;
|
|
32
|
+
for (const name of readdirSync(backupDir)) {
|
|
33
|
+
if (!name.startsWith(`${filenamePrefix}-`) || !(name.endsWith(".sql") || name.endsWith(".sql.gz")))
|
|
34
|
+
continue;
|
|
35
|
+
const fullPath = resolve(backupDir, name);
|
|
36
|
+
const stat = statSync(fullPath);
|
|
37
|
+
if (stat.mtimeMs < cutoff) {
|
|
38
|
+
unlinkSync(fullPath);
|
|
39
|
+
pruned++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return pruned;
|
|
43
|
+
}
|
|
44
|
+
function formatBackupSize(sizeBytes) {
|
|
45
|
+
if (sizeBytes < 1024)
|
|
46
|
+
return `${sizeBytes}B`;
|
|
47
|
+
if (sizeBytes < 1024 * 1024)
|
|
48
|
+
return `${(sizeBytes / 1024).toFixed(1)}K`;
|
|
49
|
+
return `${(sizeBytes / (1024 * 1024)).toFixed(1)}M`;
|
|
50
|
+
}
|
|
51
|
+
function formatSqlLiteral(value) {
|
|
52
|
+
const sanitized = value.replace(/\u0000/g, "");
|
|
53
|
+
let tag = "$fidelios$";
|
|
54
|
+
while (sanitized.includes(tag)) {
|
|
55
|
+
tag = `$fidelios_${Math.random().toString(36).slice(2, 8)}$`;
|
|
56
|
+
}
|
|
57
|
+
return `${tag}${sanitized}${tag}`;
|
|
58
|
+
}
|
|
59
|
+
function normalizeTableNameSet(values) {
|
|
60
|
+
return new Set((values ?? [])
|
|
61
|
+
.map((value) => value.trim())
|
|
62
|
+
.filter((value) => value.length > 0));
|
|
63
|
+
}
|
|
64
|
+
function normalizeNullifyColumnMap(values) {
|
|
65
|
+
const out = new Map();
|
|
66
|
+
if (!values)
|
|
67
|
+
return out;
|
|
68
|
+
for (const [tableName, columns] of Object.entries(values)) {
|
|
69
|
+
const normalizedTable = tableName.trim();
|
|
70
|
+
if (normalizedTable.length === 0)
|
|
71
|
+
continue;
|
|
72
|
+
const normalizedColumns = new Set(columns
|
|
73
|
+
.map((column) => column.trim())
|
|
74
|
+
.filter((column) => column.length > 0));
|
|
75
|
+
if (normalizedColumns.size > 0) {
|
|
76
|
+
out.set(normalizedTable, normalizedColumns);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
function quoteIdentifier(value) {
|
|
82
|
+
return `"${value.replaceAll("\"", "\"\"")}"`;
|
|
83
|
+
}
|
|
84
|
+
function quoteQualifiedName(schemaName, objectName) {
|
|
85
|
+
return `${quoteIdentifier(schemaName)}.${quoteIdentifier(objectName)}`;
|
|
86
|
+
}
|
|
87
|
+
function tableKey(schemaName, tableName) {
|
|
88
|
+
return `${schemaName}.${tableName}`;
|
|
89
|
+
}
|
|
90
|
+
export async function runDatabaseBackup(opts) {
|
|
91
|
+
const filenamePrefix = opts.filenamePrefix ?? "fidelios";
|
|
92
|
+
const retentionDays = Math.max(1, Math.trunc(opts.retentionDays));
|
|
93
|
+
const connectTimeout = Math.max(1, Math.trunc(opts.connectTimeoutSeconds ?? 5));
|
|
94
|
+
const includeMigrationJournal = opts.includeMigrationJournal === true;
|
|
95
|
+
const excludedTableNames = normalizeTableNameSet(opts.excludeTables);
|
|
96
|
+
const nullifiedColumnsByTable = normalizeNullifyColumnMap(opts.nullifyColumns);
|
|
97
|
+
const sql = postgres(opts.connectionString, { max: 1, connect_timeout: connectTimeout });
|
|
98
|
+
try {
|
|
99
|
+
await sql `SELECT 1`;
|
|
100
|
+
const lines = [];
|
|
101
|
+
const emit = (line) => lines.push(line);
|
|
102
|
+
const emitStatement = (statement) => {
|
|
103
|
+
emit(statement);
|
|
104
|
+
emit(STATEMENT_BREAKPOINT);
|
|
105
|
+
};
|
|
106
|
+
const emitStatementBoundary = () => {
|
|
107
|
+
emit(STATEMENT_BREAKPOINT);
|
|
108
|
+
};
|
|
109
|
+
emit("-- FideliOS database backup");
|
|
110
|
+
emit(`-- Created: ${new Date().toISOString()}`);
|
|
111
|
+
emit("");
|
|
112
|
+
emitStatement("BEGIN;");
|
|
113
|
+
emitStatement("SET LOCAL session_replication_role = replica;");
|
|
114
|
+
emitStatement("SET LOCAL client_min_messages = warning;");
|
|
115
|
+
emit("");
|
|
116
|
+
const allTables = await sql `
|
|
117
|
+
SELECT table_schema AS schema_name, table_name AS tablename
|
|
118
|
+
FROM information_schema.tables
|
|
119
|
+
WHERE table_type = 'BASE TABLE'
|
|
120
|
+
AND (
|
|
121
|
+
table_schema = 'public'
|
|
122
|
+
OR (${includeMigrationJournal}::boolean AND table_schema = ${DRIZZLE_SCHEMA} AND table_name = ${DRIZZLE_MIGRATIONS_TABLE})
|
|
123
|
+
)
|
|
124
|
+
ORDER BY table_schema, table_name
|
|
125
|
+
`;
|
|
126
|
+
const tables = allTables;
|
|
127
|
+
const includedTableNames = new Set(tables.map(({ schema_name, tablename }) => tableKey(schema_name, tablename)));
|
|
128
|
+
// Get all enums
|
|
129
|
+
const enums = await sql `
|
|
130
|
+
SELECT t.typname, array_agg(e.enumlabel ORDER BY e.enumsortorder) AS labels
|
|
131
|
+
FROM pg_type t
|
|
132
|
+
JOIN pg_enum e ON t.oid = e.enumtypid
|
|
133
|
+
JOIN pg_namespace n ON t.typnamespace = n.oid
|
|
134
|
+
WHERE n.nspname = 'public'
|
|
135
|
+
GROUP BY t.typname
|
|
136
|
+
ORDER BY t.typname
|
|
137
|
+
`;
|
|
138
|
+
for (const e of enums) {
|
|
139
|
+
const labels = e.labels.map((l) => `'${l.replace(/'/g, "''")}'`).join(", ");
|
|
140
|
+
emitStatement(`CREATE TYPE "public"."${e.typname}" AS ENUM (${labels});`);
|
|
141
|
+
}
|
|
142
|
+
if (enums.length > 0)
|
|
143
|
+
emit("");
|
|
144
|
+
const allSequences = await sql `
|
|
145
|
+
SELECT
|
|
146
|
+
s.sequence_schema,
|
|
147
|
+
s.sequence_name,
|
|
148
|
+
s.data_type,
|
|
149
|
+
s.start_value,
|
|
150
|
+
s.minimum_value,
|
|
151
|
+
s.maximum_value,
|
|
152
|
+
s.increment,
|
|
153
|
+
s.cycle_option,
|
|
154
|
+
tblns.nspname AS owner_schema,
|
|
155
|
+
tbl.relname AS owner_table,
|
|
156
|
+
attr.attname AS owner_column
|
|
157
|
+
FROM information_schema.sequences s
|
|
158
|
+
JOIN pg_class seq ON seq.relname = s.sequence_name
|
|
159
|
+
JOIN pg_namespace n ON n.oid = seq.relnamespace AND n.nspname = s.sequence_schema
|
|
160
|
+
LEFT JOIN pg_depend dep ON dep.objid = seq.oid AND dep.deptype = 'a'
|
|
161
|
+
LEFT JOIN pg_class tbl ON tbl.oid = dep.refobjid
|
|
162
|
+
LEFT JOIN pg_namespace tblns ON tblns.oid = tbl.relnamespace
|
|
163
|
+
LEFT JOIN pg_attribute attr ON attr.attrelid = tbl.oid AND attr.attnum = dep.refobjsubid
|
|
164
|
+
WHERE s.sequence_schema = 'public'
|
|
165
|
+
OR (${includeMigrationJournal}::boolean AND s.sequence_schema = ${DRIZZLE_SCHEMA})
|
|
166
|
+
ORDER BY s.sequence_schema, s.sequence_name
|
|
167
|
+
`;
|
|
168
|
+
const sequences = allSequences.filter((seq) => !seq.owner_table || includedTableNames.has(tableKey(seq.owner_schema ?? "public", seq.owner_table)));
|
|
169
|
+
const schemas = new Set();
|
|
170
|
+
for (const table of tables)
|
|
171
|
+
schemas.add(table.schema_name);
|
|
172
|
+
for (const seq of sequences)
|
|
173
|
+
schemas.add(seq.sequence_schema);
|
|
174
|
+
const extraSchemas = [...schemas].filter((schemaName) => schemaName !== "public");
|
|
175
|
+
if (extraSchemas.length > 0) {
|
|
176
|
+
emit("-- Schemas");
|
|
177
|
+
for (const schemaName of extraSchemas) {
|
|
178
|
+
emitStatement(`CREATE SCHEMA IF NOT EXISTS ${quoteIdentifier(schemaName)};`);
|
|
179
|
+
}
|
|
180
|
+
emit("");
|
|
181
|
+
}
|
|
182
|
+
if (sequences.length > 0) {
|
|
183
|
+
emit("-- Sequences");
|
|
184
|
+
for (const seq of sequences) {
|
|
185
|
+
const qualifiedSequenceName = quoteQualifiedName(seq.sequence_schema, seq.sequence_name);
|
|
186
|
+
emitStatement(`DROP SEQUENCE IF EXISTS ${qualifiedSequenceName} CASCADE;`);
|
|
187
|
+
emitStatement(`CREATE SEQUENCE ${qualifiedSequenceName} AS ${seq.data_type} INCREMENT BY ${seq.increment} MINVALUE ${seq.minimum_value} MAXVALUE ${seq.maximum_value} START WITH ${seq.start_value}${seq.cycle_option === "YES" ? " CYCLE" : " NO CYCLE"};`);
|
|
188
|
+
}
|
|
189
|
+
emit("");
|
|
190
|
+
}
|
|
191
|
+
// Get full CREATE TABLE DDL via column info
|
|
192
|
+
for (const { schema_name, tablename } of tables) {
|
|
193
|
+
const qualifiedTableName = quoteQualifiedName(schema_name, tablename);
|
|
194
|
+
const columns = await sql `
|
|
195
|
+
SELECT column_name, data_type, udt_name, is_nullable, column_default,
|
|
196
|
+
character_maximum_length, numeric_precision, numeric_scale
|
|
197
|
+
FROM information_schema.columns
|
|
198
|
+
WHERE table_schema = ${schema_name} AND table_name = ${tablename}
|
|
199
|
+
ORDER BY ordinal_position
|
|
200
|
+
`;
|
|
201
|
+
emit(`-- Table: ${schema_name}.${tablename}`);
|
|
202
|
+
emitStatement(`DROP TABLE IF EXISTS ${qualifiedTableName} CASCADE;`);
|
|
203
|
+
const colDefs = [];
|
|
204
|
+
for (const col of columns) {
|
|
205
|
+
let typeStr;
|
|
206
|
+
if (col.data_type === "USER-DEFINED") {
|
|
207
|
+
typeStr = `"${col.udt_name}"`;
|
|
208
|
+
}
|
|
209
|
+
else if (col.data_type === "ARRAY") {
|
|
210
|
+
typeStr = `${col.udt_name.replace(/^_/, "")}[]`;
|
|
211
|
+
}
|
|
212
|
+
else if (col.data_type === "character varying") {
|
|
213
|
+
typeStr = col.character_maximum_length
|
|
214
|
+
? `varchar(${col.character_maximum_length})`
|
|
215
|
+
: "varchar";
|
|
216
|
+
}
|
|
217
|
+
else if (col.data_type === "numeric" && col.numeric_precision != null) {
|
|
218
|
+
typeStr =
|
|
219
|
+
col.numeric_scale != null
|
|
220
|
+
? `numeric(${col.numeric_precision}, ${col.numeric_scale})`
|
|
221
|
+
: `numeric(${col.numeric_precision})`;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
typeStr = col.data_type;
|
|
225
|
+
}
|
|
226
|
+
let def = ` "${col.column_name}" ${typeStr}`;
|
|
227
|
+
if (col.column_default != null)
|
|
228
|
+
def += ` DEFAULT ${col.column_default}`;
|
|
229
|
+
if (col.is_nullable === "NO")
|
|
230
|
+
def += " NOT NULL";
|
|
231
|
+
colDefs.push(def);
|
|
232
|
+
}
|
|
233
|
+
// Primary key
|
|
234
|
+
const pk = await sql `
|
|
235
|
+
SELECT c.conname AS constraint_name,
|
|
236
|
+
array_agg(a.attname ORDER BY array_position(c.conkey, a.attnum)) AS column_names
|
|
237
|
+
FROM pg_constraint c
|
|
238
|
+
JOIN pg_class t ON t.oid = c.conrelid
|
|
239
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
240
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
|
|
241
|
+
WHERE n.nspname = ${schema_name} AND t.relname = ${tablename} AND c.contype = 'p'
|
|
242
|
+
GROUP BY c.conname
|
|
243
|
+
`;
|
|
244
|
+
for (const p of pk) {
|
|
245
|
+
const cols = p.column_names.map((c) => `"${c}"`).join(", ");
|
|
246
|
+
colDefs.push(` CONSTRAINT "${p.constraint_name}" PRIMARY KEY (${cols})`);
|
|
247
|
+
}
|
|
248
|
+
emit(`CREATE TABLE ${qualifiedTableName} (`);
|
|
249
|
+
emit(colDefs.join(",\n"));
|
|
250
|
+
emit(");");
|
|
251
|
+
emitStatementBoundary();
|
|
252
|
+
emit("");
|
|
253
|
+
}
|
|
254
|
+
const ownedSequences = sequences.filter((seq) => seq.owner_table && seq.owner_column);
|
|
255
|
+
if (ownedSequences.length > 0) {
|
|
256
|
+
emit("-- Sequence ownership");
|
|
257
|
+
for (const seq of ownedSequences) {
|
|
258
|
+
emitStatement(`ALTER SEQUENCE ${quoteQualifiedName(seq.sequence_schema, seq.sequence_name)} OWNED BY ${quoteQualifiedName(seq.owner_schema ?? "public", seq.owner_table)}.${quoteIdentifier(seq.owner_column)};`);
|
|
259
|
+
}
|
|
260
|
+
emit("");
|
|
261
|
+
}
|
|
262
|
+
// Foreign keys (after all tables created)
|
|
263
|
+
const allForeignKeys = await sql `
|
|
264
|
+
SELECT
|
|
265
|
+
c.conname AS constraint_name,
|
|
266
|
+
srcn.nspname AS source_schema,
|
|
267
|
+
src.relname AS source_table,
|
|
268
|
+
array_agg(sa.attname ORDER BY array_position(c.conkey, sa.attnum)) AS source_columns,
|
|
269
|
+
tgtn.nspname AS target_schema,
|
|
270
|
+
tgt.relname AS target_table,
|
|
271
|
+
array_agg(ta.attname ORDER BY array_position(c.confkey, ta.attnum)) AS target_columns,
|
|
272
|
+
CASE c.confupdtype WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END AS update_rule,
|
|
273
|
+
CASE c.confdeltype WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END AS delete_rule
|
|
274
|
+
FROM pg_constraint c
|
|
275
|
+
JOIN pg_class src ON src.oid = c.conrelid
|
|
276
|
+
JOIN pg_namespace srcn ON srcn.oid = src.relnamespace
|
|
277
|
+
JOIN pg_class tgt ON tgt.oid = c.confrelid
|
|
278
|
+
JOIN pg_namespace tgtn ON tgtn.oid = tgt.relnamespace
|
|
279
|
+
JOIN pg_attribute sa ON sa.attrelid = src.oid AND sa.attnum = ANY(c.conkey)
|
|
280
|
+
JOIN pg_attribute ta ON ta.attrelid = tgt.oid AND ta.attnum = ANY(c.confkey)
|
|
281
|
+
WHERE c.contype = 'f' AND (
|
|
282
|
+
srcn.nspname = 'public'
|
|
283
|
+
OR (${includeMigrationJournal}::boolean AND srcn.nspname = ${DRIZZLE_SCHEMA})
|
|
284
|
+
)
|
|
285
|
+
GROUP BY c.conname, srcn.nspname, src.relname, tgtn.nspname, tgt.relname, c.confupdtype, c.confdeltype
|
|
286
|
+
ORDER BY srcn.nspname, src.relname, c.conname
|
|
287
|
+
`;
|
|
288
|
+
const fks = allForeignKeys.filter((fk) => includedTableNames.has(tableKey(fk.source_schema, fk.source_table))
|
|
289
|
+
&& includedTableNames.has(tableKey(fk.target_schema, fk.target_table)));
|
|
290
|
+
if (fks.length > 0) {
|
|
291
|
+
emit("-- Foreign keys");
|
|
292
|
+
for (const fk of fks) {
|
|
293
|
+
const srcCols = fk.source_columns.map((c) => `"${c}"`).join(", ");
|
|
294
|
+
const tgtCols = fk.target_columns.map((c) => `"${c}"`).join(", ");
|
|
295
|
+
emitStatement(`ALTER TABLE ${quoteQualifiedName(fk.source_schema, fk.source_table)} ADD CONSTRAINT "${fk.constraint_name}" FOREIGN KEY (${srcCols}) REFERENCES ${quoteQualifiedName(fk.target_schema, fk.target_table)} (${tgtCols}) ON UPDATE ${fk.update_rule} ON DELETE ${fk.delete_rule};`);
|
|
296
|
+
}
|
|
297
|
+
emit("");
|
|
298
|
+
}
|
|
299
|
+
// Unique constraints
|
|
300
|
+
const allUniqueConstraints = await sql `
|
|
301
|
+
SELECT c.conname AS constraint_name,
|
|
302
|
+
n.nspname AS schema_name,
|
|
303
|
+
t.relname AS tablename,
|
|
304
|
+
array_agg(a.attname ORDER BY array_position(c.conkey, a.attnum)) AS column_names
|
|
305
|
+
FROM pg_constraint c
|
|
306
|
+
JOIN pg_class t ON t.oid = c.conrelid
|
|
307
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
308
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
|
|
309
|
+
WHERE c.contype = 'u' AND (
|
|
310
|
+
n.nspname = 'public'
|
|
311
|
+
OR (${includeMigrationJournal}::boolean AND n.nspname = ${DRIZZLE_SCHEMA})
|
|
312
|
+
)
|
|
313
|
+
GROUP BY c.conname, n.nspname, t.relname
|
|
314
|
+
ORDER BY n.nspname, t.relname, c.conname
|
|
315
|
+
`;
|
|
316
|
+
const uniques = allUniqueConstraints.filter((entry) => includedTableNames.has(tableKey(entry.schema_name, entry.tablename)));
|
|
317
|
+
if (uniques.length > 0) {
|
|
318
|
+
emit("-- Unique constraints");
|
|
319
|
+
for (const u of uniques) {
|
|
320
|
+
const cols = u.column_names.map((c) => `"${c}"`).join(", ");
|
|
321
|
+
emitStatement(`ALTER TABLE ${quoteQualifiedName(u.schema_name, u.tablename)} ADD CONSTRAINT "${u.constraint_name}" UNIQUE (${cols});`);
|
|
322
|
+
}
|
|
323
|
+
emit("");
|
|
324
|
+
}
|
|
325
|
+
// Indexes (non-primary, non-unique-constraint)
|
|
326
|
+
const allIndexes = await sql `
|
|
327
|
+
SELECT schemaname AS schema_name, tablename, indexdef
|
|
328
|
+
FROM pg_indexes
|
|
329
|
+
WHERE (
|
|
330
|
+
schemaname = 'public'
|
|
331
|
+
OR (${includeMigrationJournal}::boolean AND schemaname = ${DRIZZLE_SCHEMA})
|
|
332
|
+
)
|
|
333
|
+
AND indexname NOT IN (
|
|
334
|
+
SELECT conname FROM pg_constraint c
|
|
335
|
+
JOIN pg_namespace n ON n.oid = c.connamespace
|
|
336
|
+
WHERE n.nspname = pg_indexes.schemaname
|
|
337
|
+
)
|
|
338
|
+
ORDER BY schemaname, tablename, indexname
|
|
339
|
+
`;
|
|
340
|
+
const indexes = allIndexes.filter((entry) => includedTableNames.has(tableKey(entry.schema_name, entry.tablename)));
|
|
341
|
+
if (indexes.length > 0) {
|
|
342
|
+
emit("-- Indexes");
|
|
343
|
+
for (const idx of indexes) {
|
|
344
|
+
emitStatement(`${idx.indexdef};`);
|
|
345
|
+
}
|
|
346
|
+
emit("");
|
|
347
|
+
}
|
|
348
|
+
// Dump data for each table
|
|
349
|
+
for (const { schema_name, tablename } of tables) {
|
|
350
|
+
const qualifiedTableName = quoteQualifiedName(schema_name, tablename);
|
|
351
|
+
const count = await sql.unsafe(`SELECT count(*)::int AS n FROM ${qualifiedTableName}`);
|
|
352
|
+
if (excludedTableNames.has(tablename) || (count[0]?.n ?? 0) === 0)
|
|
353
|
+
continue;
|
|
354
|
+
// Get column info for this table
|
|
355
|
+
const cols = await sql `
|
|
356
|
+
SELECT column_name, data_type
|
|
357
|
+
FROM information_schema.columns
|
|
358
|
+
WHERE table_schema = ${schema_name} AND table_name = ${tablename}
|
|
359
|
+
ORDER BY ordinal_position
|
|
360
|
+
`;
|
|
361
|
+
const colNames = cols.map((c) => `"${c.column_name}"`).join(", ");
|
|
362
|
+
emit(`-- Data for: ${schema_name}.${tablename} (${count[0].n} rows)`);
|
|
363
|
+
const rows = await sql.unsafe(`SELECT * FROM ${qualifiedTableName}`).values();
|
|
364
|
+
const nullifiedColumns = nullifiedColumnsByTable.get(tablename) ?? new Set();
|
|
365
|
+
for (const row of rows) {
|
|
366
|
+
const values = row.map((rawValue, index) => {
|
|
367
|
+
const columnName = cols[index]?.column_name;
|
|
368
|
+
const columnType = cols[index]?.data_type;
|
|
369
|
+
const val = columnName && nullifiedColumns.has(columnName) ? null : rawValue;
|
|
370
|
+
if (val === null || val === undefined)
|
|
371
|
+
return "NULL";
|
|
372
|
+
// jsonb/json columns: always serialize as text to avoid bare number/boolean literals
|
|
373
|
+
if (columnType === "jsonb" || columnType === "json") {
|
|
374
|
+
if (typeof val === "string")
|
|
375
|
+
return formatSqlLiteral(val);
|
|
376
|
+
return formatSqlLiteral(JSON.stringify(val));
|
|
377
|
+
}
|
|
378
|
+
if (typeof val === "boolean")
|
|
379
|
+
return val ? "true" : "false";
|
|
380
|
+
if (typeof val === "number")
|
|
381
|
+
return String(val);
|
|
382
|
+
if (val instanceof Date)
|
|
383
|
+
return formatSqlLiteral(val.toISOString());
|
|
384
|
+
if (typeof val === "object")
|
|
385
|
+
return formatSqlLiteral(JSON.stringify(val));
|
|
386
|
+
return formatSqlLiteral(String(val));
|
|
387
|
+
});
|
|
388
|
+
emitStatement(`INSERT INTO ${qualifiedTableName} (${colNames}) VALUES (${values.join(", ")});`);
|
|
389
|
+
}
|
|
390
|
+
emit("");
|
|
391
|
+
}
|
|
392
|
+
// Sequence values
|
|
393
|
+
if (sequences.length > 0) {
|
|
394
|
+
emit("-- Sequence values");
|
|
395
|
+
for (const seq of sequences) {
|
|
396
|
+
const qualifiedSequenceName = quoteQualifiedName(seq.sequence_schema, seq.sequence_name);
|
|
397
|
+
const val = await sql.unsafe(`SELECT last_value::text, is_called FROM ${qualifiedSequenceName}`);
|
|
398
|
+
const skipSequenceValue = seq.owner_table !== null
|
|
399
|
+
&& excludedTableNames.has(seq.owner_table);
|
|
400
|
+
if (val[0] && !skipSequenceValue) {
|
|
401
|
+
emitStatement(`SELECT setval('${qualifiedSequenceName.replaceAll("'", "''")}', ${val[0].last_value}, ${val[0].is_called ? "true" : "false"});`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
emit("");
|
|
405
|
+
}
|
|
406
|
+
emitStatement("COMMIT;");
|
|
407
|
+
emit("");
|
|
408
|
+
// Write the backup file (with gzip compression)
|
|
409
|
+
mkdirSync(opts.backupDir, { recursive: true });
|
|
410
|
+
const rawContent = lines.join("\n");
|
|
411
|
+
const compressed = gzipSync(Buffer.from(rawContent, "utf8"), { level: 6 });
|
|
412
|
+
const backupFile = resolve(opts.backupDir, `${filenamePrefix}-${timestamp()}.sql.gz`);
|
|
413
|
+
await writeFile(backupFile, compressed);
|
|
414
|
+
const sizeBytes = statSync(backupFile).size;
|
|
415
|
+
// Verify backup integrity
|
|
416
|
+
const verification = verifyBackupContent(rawContent);
|
|
417
|
+
if (!verification.valid) {
|
|
418
|
+
// Don't delete the file — it may still be partially useful
|
|
419
|
+
throw new Error(`Backup verification failed: ${verification.reason}`);
|
|
420
|
+
}
|
|
421
|
+
const prunedCount = pruneOldBackups(opts.backupDir, retentionDays, filenamePrefix);
|
|
422
|
+
return {
|
|
423
|
+
backupFile,
|
|
424
|
+
sizeBytes,
|
|
425
|
+
prunedCount,
|
|
426
|
+
uncompressedSizeBytes: Buffer.byteLength(rawContent, "utf8"),
|
|
427
|
+
tableCounts: verification.tableCounts,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
finally {
|
|
431
|
+
await sql.end();
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
function verifyBackupContent(content) {
|
|
435
|
+
const tableCounts = {};
|
|
436
|
+
const trimmed = content.trim();
|
|
437
|
+
// Check transaction boundaries
|
|
438
|
+
if (!trimmed.includes("BEGIN;")) {
|
|
439
|
+
return { valid: false, reason: "Missing BEGIN statement", tableCounts };
|
|
440
|
+
}
|
|
441
|
+
if (!trimmed.includes("COMMIT;")) {
|
|
442
|
+
return { valid: false, reason: "Missing COMMIT statement", tableCounts };
|
|
443
|
+
}
|
|
444
|
+
// Count inserts per table
|
|
445
|
+
const insertRegex = /INSERT INTO "public"\."([^"]+)"/g;
|
|
446
|
+
let match;
|
|
447
|
+
while ((match = insertRegex.exec(content)) !== null) {
|
|
448
|
+
const table = match[1];
|
|
449
|
+
tableCounts[table] = (tableCounts[table] ?? 0) + 1;
|
|
450
|
+
}
|
|
451
|
+
return { valid: true, tableCounts };
|
|
452
|
+
}
|
|
453
|
+
async function readBackupFile(filePath) {
|
|
454
|
+
const raw = await readFile(filePath);
|
|
455
|
+
if (filePath.endsWith(".gz")) {
|
|
456
|
+
return gunzipSync(raw).toString("utf8");
|
|
457
|
+
}
|
|
458
|
+
return raw.toString("utf8");
|
|
459
|
+
}
|
|
460
|
+
export async function runDatabaseRestore(opts) {
|
|
461
|
+
const connectTimeout = Math.max(1, Math.trunc(opts.connectTimeoutSeconds ?? 5));
|
|
462
|
+
const sql = postgres(opts.connectionString, { max: 1, connect_timeout: connectTimeout });
|
|
463
|
+
try {
|
|
464
|
+
await sql `SELECT 1`;
|
|
465
|
+
const contents = await readBackupFile(opts.backupFile);
|
|
466
|
+
const statements = contents
|
|
467
|
+
.split(STATEMENT_BREAKPOINT)
|
|
468
|
+
.map((statement) => statement.trim())
|
|
469
|
+
.filter((statement) => statement.length > 0);
|
|
470
|
+
for (const statement of statements) {
|
|
471
|
+
await sql.unsafe(statement).execute();
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
const statementPreview = typeof error === "object" && error !== null && typeof error.query === "string"
|
|
476
|
+
? String(error.query)
|
|
477
|
+
.split(/\r?\n/)
|
|
478
|
+
.map((line) => line.trim())
|
|
479
|
+
.find((line) => line.length > 0 && !line.startsWith("--"))
|
|
480
|
+
: null;
|
|
481
|
+
throw new Error(`Failed to restore ${basename(opts.backupFile)}: ${sanitizeRestoreErrorMessage(error)}${statementPreview ? ` [statement: ${statementPreview.slice(0, 120)}]` : ""}`);
|
|
482
|
+
}
|
|
483
|
+
finally {
|
|
484
|
+
await sql.end();
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
export function formatDatabaseBackupResult(result) {
|
|
488
|
+
const size = formatBackupSize(result.sizeBytes);
|
|
489
|
+
const compression = result.uncompressedSizeBytes
|
|
490
|
+
? ` (${Math.round((1 - result.sizeBytes / result.uncompressedSizeBytes) * 100)}% compression)`
|
|
491
|
+
: "";
|
|
492
|
+
const pruned = result.prunedCount > 0 ? `; pruned ${result.prunedCount} old backup(s)` : "";
|
|
493
|
+
const tables = result.tableCounts
|
|
494
|
+
? `; ${Object.keys(result.tableCounts).length} tables, ${Object.values(result.tableCounts).reduce((a, b) => a + b, 0)} rows`
|
|
495
|
+
: "";
|
|
496
|
+
return `${result.backupFile} (${size}${compression}${tables}${pruned})`;
|
|
497
|
+
}
|
|
498
|
+
//# sourceMappingURL=backup-lib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-lib.js","sourceRoot":"","sources":["../src/backup-lib.ts"],"names":[],"mappings":"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"}
|
package/dist/backup.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":""}
|