@supabase/pg-delta 1.0.0-alpha.1 → 1.0.0-alpha.11
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/README.md +41 -2
- package/dist/cli/app.js +26 -3
- package/dist/cli/bin/cli.js +5 -0
- package/dist/cli/commands/catalog-export.d.ts +5 -0
- package/dist/cli/commands/catalog-export.js +64 -0
- package/dist/cli/commands/declarative-apply.d.ts +6 -0
- package/dist/cli/commands/declarative-apply.js +288 -0
- package/dist/cli/commands/declarative-export.d.ts +5 -0
- package/dist/cli/commands/declarative-export.js +240 -0
- package/dist/cli/commands/plan.js +47 -16
- package/dist/cli/commands/sync.js +8 -12
- package/dist/cli/exit-code.d.ts +2 -0
- package/dist/cli/exit-code.js +7 -0
- package/dist/cli/formatters/tree/tree.js +3 -2
- package/dist/cli/utils/apply-display.d.ts +52 -0
- package/dist/cli/utils/apply-display.js +183 -0
- package/dist/cli/utils/export-display.d.ts +43 -0
- package/dist/cli/utils/export-display.js +202 -0
- package/dist/cli/utils/integrations.d.ts +30 -6
- package/dist/cli/utils/integrations.js +98 -6
- package/dist/cli/utils/resolve-input.d.ts +7 -0
- package/dist/cli/utils/resolve-input.js +13 -0
- package/dist/cli/utils.d.ts +2 -0
- package/dist/cli/utils.js +1 -1
- package/dist/core/catalog-export/index.d.ts +11 -0
- package/dist/core/catalog-export/index.js +10 -0
- package/dist/core/catalog.diff.d.ts +1 -0
- package/dist/core/catalog.diff.js +64 -48
- package/dist/core/catalog.model.d.ts +16 -3
- package/dist/core/catalog.model.js +132 -30
- package/dist/core/catalog.snapshot.d.ts +66 -0
- package/dist/core/catalog.snapshot.js +206 -0
- package/dist/core/change-utils.d.ts +9 -0
- package/dist/core/change-utils.js +71 -0
- package/dist/core/change.types.d.ts +22 -0
- package/dist/core/change.types.js +37 -1
- package/dist/core/context.d.ts +3 -3
- package/dist/core/context.js +7 -10
- package/dist/core/declarative-apply/discover-sql.d.ts +18 -0
- package/dist/core/declarative-apply/discover-sql.js +86 -0
- package/dist/core/declarative-apply/extract-catalog-providers.d.ts +23 -0
- package/dist/core/declarative-apply/extract-catalog-providers.js +159 -0
- package/dist/core/declarative-apply/index.d.ts +49 -0
- package/dist/core/declarative-apply/index.js +134 -0
- package/dist/core/declarative-apply/round-apply.d.ts +100 -0
- package/dist/core/declarative-apply/round-apply.js +378 -0
- package/dist/core/depend.d.ts +2 -2
- package/dist/core/depend.js +33 -7
- package/dist/core/export/file-mapper.d.ts +71 -0
- package/dist/core/export/file-mapper.js +474 -0
- package/dist/core/export/grouper.d.ts +13 -0
- package/dist/core/export/grouper.js +76 -0
- package/dist/core/export/index.d.ts +45 -0
- package/dist/core/export/index.js +63 -0
- package/dist/core/export/types.d.ts +84 -0
- package/dist/core/export/types.js +25 -0
- package/dist/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
- package/dist/core/integrations/filter/dsl.d.ts +82 -41
- package/dist/core/integrations/filter/dsl.js +127 -61
- package/dist/core/integrations/filter/flatten.d.ts +51 -0
- package/dist/core/integrations/filter/flatten.js +116 -0
- package/dist/core/integrations/integration-dsl.d.ts +27 -1
- package/dist/core/integrations/merge.d.ts +20 -0
- package/dist/core/integrations/merge.js +60 -0
- package/dist/core/integrations/serialize/dsl.d.ts +7 -4
- package/dist/core/integrations/serialize/dsl.js +2 -2
- package/dist/core/integrations/supabase.d.ts +8 -0
- package/dist/core/integrations/supabase.js +34 -8
- package/dist/core/objects/aggregate/aggregate.diff.d.ts +2 -8
- package/dist/core/objects/aggregate/aggregate.diff.js +16 -70
- package/dist/core/objects/aggregate/aggregate.model.d.ts +10 -10
- package/dist/core/objects/aggregate/aggregate.model.js +8 -10
- package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
- package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
- package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +1 -0
- package/dist/core/objects/base.change.d.ts +10 -0
- package/dist/core/objects/base.change.js +10 -0
- package/dist/core/objects/base.model.d.ts +4 -1
- package/dist/core/objects/base.model.js +5 -2
- package/dist/core/objects/base.privilege-diff.d.ts +38 -13
- package/dist/core/objects/base.privilege-diff.js +104 -22
- package/dist/core/objects/base.privilege.d.ts +1 -0
- package/dist/core/objects/base.privilege.js +9 -2
- package/dist/core/objects/collation/changes/collation.types.d.ts +1 -0
- package/dist/core/objects/collation/collation.diff.d.ts +2 -3
- package/dist/core/objects/collation/collation.model.d.ts +2 -2
- package/dist/core/objects/collation/collation.model.js +29 -28
- package/dist/core/objects/diff-context.d.ts +15 -0
- package/dist/core/objects/diff-context.js +1 -0
- package/dist/core/objects/domain/changes/domain.create.d.ts +1 -1
- package/dist/core/objects/domain/changes/domain.create.js +11 -3
- package/dist/core/objects/domain/changes/domain.types.d.ts +1 -0
- package/dist/core/objects/domain/domain.diff.d.ts +2 -8
- package/dist/core/objects/domain/domain.diff.js +16 -77
- package/dist/core/objects/domain/domain.model.d.ts +2 -2
- package/dist/core/objects/domain/domain.model.js +9 -11
- package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +1 -0
- package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +2 -3
- package/dist/core/objects/event-trigger/event-trigger.model.d.ts +2 -2
- package/dist/core/objects/event-trigger/event-trigger.model.js +7 -9
- package/dist/core/objects/extension/changes/extension.types.d.ts +1 -0
- package/dist/core/objects/extension/extension.model.d.ts +2 -2
- package/dist/core/objects/extension/extension.model.js +8 -10
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +2 -8
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +13 -77
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +2 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +22 -24
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +2 -8
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +16 -77
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +2 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +21 -23
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +2 -8
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +13 -77
- package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +2 -2
- package/dist/core/objects/foreign-data-wrapper/server/server.model.js +20 -22
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +2 -2
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +20 -22
- package/dist/core/objects/index/changes/index.types.d.ts +1 -0
- package/dist/core/objects/index/index.model.d.ts +4 -4
- package/dist/core/objects/index/index.model.js +9 -11
- package/dist/core/objects/language/changes/language.types.d.ts +1 -0
- package/dist/core/objects/language/language.diff.d.ts +2 -5
- package/dist/core/objects/language/language.diff.js +7 -39
- package/dist/core/objects/language/language.model.js +5 -7
- package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +1 -0
- package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +2 -8
- package/dist/core/objects/materialized-view/materialized-view.diff.js +16 -158
- package/dist/core/objects/materialized-view/materialized-view.model.d.ts +5 -5
- package/dist/core/objects/materialized-view/materialized-view.model.js +9 -11
- package/dist/core/objects/procedure/changes/procedure.alter.js +12 -12
- package/dist/core/objects/procedure/changes/procedure.types.d.ts +1 -0
- package/dist/core/objects/procedure/procedure.diff.d.ts +2 -8
- package/dist/core/objects/procedure/procedure.diff.js +16 -77
- package/dist/core/objects/procedure/procedure.model.d.ts +11 -11
- package/dist/core/objects/procedure/procedure.model.js +9 -11
- package/dist/core/objects/publication/changes/publication.alter.d.ts +0 -9
- package/dist/core/objects/publication/changes/publication.alter.js +0 -14
- package/dist/core/objects/publication/changes/publication.types.d.ts +3 -2
- package/dist/core/objects/publication/publication.diff.d.ts +2 -3
- package/dist/core/objects/publication/publication.diff.js +8 -13
- package/dist/core/objects/publication/publication.model.d.ts +2 -2
- package/dist/core/objects/publication/publication.model.js +7 -9
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
- package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +1 -0
- package/dist/core/objects/rls-policy/rls-policy.model.d.ts +4 -4
- package/dist/core/objects/rls-policy/rls-policy.model.js +8 -10
- package/dist/core/objects/role/changes/role.types.d.ts +1 -0
- package/dist/core/objects/role/role.diff.js +22 -1
- package/dist/core/objects/role/role.model.d.ts +6 -5
- package/dist/core/objects/role/role.model.js +146 -40
- package/dist/core/objects/rule/changes/rule.types.d.ts +1 -0
- package/dist/core/objects/rule/rule.model.d.ts +3 -3
- package/dist/core/objects/rule/rule.model.js +7 -9
- package/dist/core/objects/schema/changes/schema.types.d.ts +1 -0
- package/dist/core/objects/schema/schema.diff.d.ts +2 -8
- package/dist/core/objects/schema/schema.diff.js +16 -77
- package/dist/core/objects/schema/schema.model.d.ts +2 -2
- package/dist/core/objects/schema/schema.model.js +9 -11
- package/dist/core/objects/sequence/changes/sequence.types.d.ts +1 -0
- package/dist/core/objects/sequence/sequence.diff.d.ts +2 -8
- package/dist/core/objects/sequence/sequence.diff.js +16 -79
- package/dist/core/objects/sequence/sequence.model.d.ts +2 -2
- package/dist/core/objects/sequence/sequence.model.js +9 -11
- package/dist/core/objects/subscription/changes/subscription.types.d.ts +1 -0
- package/dist/core/objects/subscription/subscription.diff.d.ts +2 -3
- package/dist/core/objects/subscription/subscription.model.d.ts +2 -2
- package/dist/core/objects/subscription/subscription.model.js +25 -20
- package/dist/core/objects/table/changes/table.create.js +3 -0
- package/dist/core/objects/table/changes/table.types.d.ts +1 -0
- package/dist/core/objects/table/table.diff.d.ts +2 -8
- package/dist/core/objects/table/table.diff.js +26 -157
- package/dist/core/objects/table/table.model.d.ts +27 -24
- package/dist/core/objects/table/table.model.js +12 -11
- package/dist/core/objects/trigger/changes/trigger.alter.js +23 -0
- package/dist/core/objects/trigger/changes/trigger.create.js +4 -5
- package/dist/core/objects/trigger/changes/trigger.types.d.ts +1 -0
- package/dist/core/objects/trigger/trigger.model.d.ts +11 -2
- package/dist/core/objects/trigger/trigger.model.js +22 -10
- package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +1 -0
- package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +2 -8
- package/dist/core/objects/type/composite-type/composite-type.diff.js +16 -77
- package/dist/core/objects/type/composite-type/composite-type.model.d.ts +5 -5
- package/dist/core/objects/type/composite-type/composite-type.model.js +10 -11
- package/dist/core/objects/type/enum/changes/enum.types.d.ts +1 -0
- package/dist/core/objects/type/enum/enum.diff.d.ts +2 -8
- package/dist/core/objects/type/enum/enum.diff.js +25 -112
- package/dist/core/objects/type/enum/enum.model.d.ts +2 -2
- package/dist/core/objects/type/enum/enum.model.js +23 -25
- package/dist/core/objects/type/range/changes/range.create.js +6 -3
- package/dist/core/objects/type/range/changes/range.types.d.ts +1 -0
- package/dist/core/objects/type/range/range.diff.d.ts +2 -8
- package/dist/core/objects/type/range/range.diff.js +16 -77
- package/dist/core/objects/type/range/range.model.d.ts +2 -2
- package/dist/core/objects/type/range/range.model.js +8 -10
- package/dist/core/objects/type/type.types.d.ts +1 -0
- package/dist/core/objects/view/changes/view.types.d.ts +1 -0
- package/dist/core/objects/view/view.diff.d.ts +2 -8
- package/dist/core/objects/view/view.diff.js +37 -168
- package/dist/core/objects/view/view.model.d.ts +20 -6
- package/dist/core/objects/view/view.model.js +11 -23
- package/dist/core/plan/apply.d.ts +2 -2
- package/dist/core/plan/apply.js +33 -16
- package/dist/core/plan/create.d.ts +20 -7
- package/dist/core/plan/create.js +153 -112
- package/dist/core/plan/serialize.js +16 -4
- package/dist/core/plan/sql-format/constants.d.ts +2 -0
- package/dist/core/plan/sql-format/constants.js +11 -0
- package/dist/core/plan/sql-format/fixtures.d.ts +2 -0
- package/dist/core/plan/sql-format/fixtures.js +2447 -0
- package/dist/core/plan/sql-format/format-utils.d.ts +37 -0
- package/dist/core/plan/sql-format/format-utils.js +274 -0
- package/dist/core/plan/sql-format/formatters.d.ts +20 -0
- package/dist/core/plan/sql-format/formatters.js +737 -0
- package/dist/core/plan/sql-format/index.d.ts +2 -0
- package/dist/core/plan/sql-format/index.js +98 -0
- package/dist/core/plan/sql-format/keyword-case.d.ts +2 -0
- package/dist/core/plan/sql-format/keyword-case.js +893 -0
- package/dist/core/plan/sql-format/protect.d.ts +3 -0
- package/dist/core/plan/sql-format/protect.js +269 -0
- package/dist/core/plan/sql-format/sql-scanner.d.ts +59 -0
- package/dist/core/plan/sql-format/sql-scanner.js +202 -0
- package/dist/core/plan/sql-format/tokenizer.d.ts +22 -0
- package/dist/core/plan/sql-format/tokenizer.js +118 -0
- package/dist/core/plan/sql-format/types.d.ts +28 -0
- package/dist/core/plan/sql-format/types.js +1 -0
- package/dist/core/plan/sql-format/wrap.d.ts +2 -0
- package/dist/core/plan/sql-format/wrap.js +165 -0
- package/dist/core/plan/sql-format.d.ts +2 -0
- package/dist/core/plan/sql-format.js +1 -0
- package/dist/core/plan/ssl-config.d.ts +32 -0
- package/dist/core/plan/ssl-config.js +115 -0
- package/dist/core/plan/statements.d.ts +2 -1
- package/dist/core/plan/statements.js +6 -2
- package/dist/core/plan/types.d.ts +6 -0
- package/dist/core/postgres-config.d.ts +47 -3
- package/dist/core/postgres-config.js +225 -39
- package/dist/core/sort/custom-constraints.js +1 -1
- package/dist/core/sort/graph-builder.js +10 -0
- package/dist/core/sort/logical-sort.js +34 -47
- package/dist/core/test-utils/assert-valid-sql.d.ts +10 -0
- package/dist/core/test-utils/assert-valid-sql.js +19 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -1
- package/package.json +60 -22
- package/src/cli/app.ts +52 -0
- package/src/cli/bin/cli.ts +15 -0
- package/src/cli/commands/apply.ts +101 -0
- package/src/cli/commands/catalog-export.ts +78 -0
- package/src/cli/commands/declarative-apply.diagnostics.test.ts +77 -0
- package/src/cli/commands/declarative-apply.ts +380 -0
- package/src/cli/commands/declarative-export.ts +322 -0
- package/src/cli/commands/plan.ts +210 -0
- package/src/cli/commands/sync.ts +178 -0
- package/src/cli/exit-code.test.ts +19 -0
- package/src/cli/exit-code.ts +7 -0
- package/src/cli/formatters/index.ts +5 -0
- package/src/cli/formatters/tree/tree-builder.ts +380 -0
- package/src/cli/formatters/tree/tree-renderer.ts +372 -0
- package/src/cli/formatters/tree/tree.ts +238 -0
- package/src/cli/utils/apply-display.test.ts +348 -0
- package/src/cli/utils/apply-display.ts +238 -0
- package/src/cli/utils/export-display.test.ts +103 -0
- package/src/cli/utils/export-display.ts +275 -0
- package/src/cli/utils/integrations.test.ts +251 -0
- package/src/cli/utils/integrations.ts +170 -0
- package/src/cli/utils/resolve-input.test.ts +38 -0
- package/src/cli/utils/resolve-input.ts +17 -0
- package/src/cli/utils.ts +231 -0
- package/src/core/catalog-export/index.ts +20 -0
- package/src/core/catalog.diff.ts +247 -0
- package/src/core/catalog.model.test.ts +122 -0
- package/src/core/catalog.model.ts +510 -0
- package/src/core/catalog.snapshot.test.ts +486 -0
- package/src/core/catalog.snapshot.ts +289 -0
- package/src/core/change-utils.test.ts +61 -0
- package/src/core/change-utils.ts +73 -0
- package/src/core/change.types.ts +94 -0
- package/src/core/context.ts +26 -0
- package/src/core/declarative-apply/discover-sql.test.ts +103 -0
- package/src/core/declarative-apply/discover-sql.ts +107 -0
- package/src/core/declarative-apply/extract-catalog-providers.ts +220 -0
- package/src/core/declarative-apply/index.test.ts +67 -0
- package/src/core/declarative-apply/index.ts +205 -0
- package/src/core/declarative-apply/round-apply.test.ts +504 -0
- package/src/core/declarative-apply/round-apply.ts +562 -0
- package/src/core/depend.ts +1895 -0
- package/src/core/expand-replace-dependencies.test.ts +70 -0
- package/src/core/expand-replace-dependencies.ts +380 -0
- package/src/core/export/file-mapper.test.ts +816 -0
- package/src/core/export/file-mapper.ts +579 -0
- package/src/core/export/grouper.ts +108 -0
- package/src/core/export/index.ts +129 -0
- package/src/core/export/types.ts +104 -0
- package/src/core/fingerprint.ts +204 -0
- package/src/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
- package/src/core/integrations/filter/dsl.test.ts +450 -0
- package/src/core/integrations/filter/dsl.ts +305 -0
- package/src/core/integrations/filter/filter.types.ts +3 -0
- package/src/core/integrations/filter/flatten.test.ts +282 -0
- package/src/core/integrations/filter/flatten.ts +150 -0
- package/src/core/integrations/integration-dsl.ts +50 -0
- package/src/core/integrations/integration.types.ts +7 -0
- package/src/core/integrations/merge.test.ts +128 -0
- package/src/core/integrations/merge.ts +72 -0
- package/src/core/integrations/serialize/dsl.test.ts +91 -0
- package/src/core/integrations/serialize/dsl.ts +80 -0
- package/src/core/integrations/serialize/serialize.types.ts +3 -0
- package/src/core/integrations/supabase.ts +145 -0
- package/src/core/objects/aggregate/aggregate.diff.test.ts +215 -0
- package/src/core/objects/aggregate/aggregate.diff.ts +222 -0
- package/src/core/objects/aggregate/aggregate.model.ts +317 -0
- package/src/core/objects/aggregate/changes/aggregate.alter.test.ts +66 -0
- package/src/core/objects/aggregate/changes/aggregate.alter.ts +32 -0
- package/src/core/objects/aggregate/changes/aggregate.base.ts +20 -0
- package/src/core/objects/aggregate/changes/aggregate.comment.test.ts +89 -0
- package/src/core/objects/aggregate/changes/aggregate.comment.ts +62 -0
- package/src/core/objects/aggregate/changes/aggregate.create.test.ts +104 -0
- package/src/core/objects/aggregate/changes/aggregate.create.ts +329 -0
- package/src/core/objects/aggregate/changes/aggregate.drop.test.ts +82 -0
- package/src/core/objects/aggregate/changes/aggregate.drop.ts +32 -0
- package/src/core/objects/aggregate/changes/aggregate.privilege.test.ts +136 -0
- package/src/core/objects/aggregate/changes/aggregate.privilege.ts +146 -0
- package/src/core/objects/aggregate/changes/aggregate.types.ts +13 -0
- package/src/core/objects/base.change.ts +72 -0
- package/src/core/objects/base.default-privileges.ts +204 -0
- package/src/core/objects/base.diff.ts +20 -0
- package/src/core/objects/base.model.test.ts +43 -0
- package/src/core/objects/base.model.ts +85 -0
- package/src/core/objects/base.privilege-diff.ts +447 -0
- package/src/core/objects/base.privilege.ts +191 -0
- package/src/core/objects/collation/changes/collation.alter.test.ts +68 -0
- package/src/core/objects/collation/changes/collation.alter.ts +79 -0
- package/src/core/objects/collation/changes/collation.base.ts +20 -0
- package/src/core/objects/collation/changes/collation.comment.ts +68 -0
- package/src/core/objects/collation/changes/collation.create.test.ts +56 -0
- package/src/core/objects/collation/changes/collation.create.ts +106 -0
- package/src/core/objects/collation/changes/collation.drop.test.ts +31 -0
- package/src/core/objects/collation/changes/collation.drop.ts +37 -0
- package/src/core/objects/collation/changes/collation.types.ts +11 -0
- package/src/core/objects/collation/collation.diff.test.ts +97 -0
- package/src/core/objects/collation/collation.diff.ts +127 -0
- package/src/core/objects/collation/collation.model.ts +224 -0
- package/src/core/objects/diff-context.ts +16 -0
- package/src/core/objects/domain/changes/domain.alter.test.ts +335 -0
- package/src/core/objects/domain/changes/domain.alter.ts +286 -0
- package/src/core/objects/domain/changes/domain.base.ts +20 -0
- package/src/core/objects/domain/changes/domain.comment.ts +59 -0
- package/src/core/objects/domain/changes/domain.create.test.ts +95 -0
- package/src/core/objects/domain/changes/domain.create.ts +140 -0
- package/src/core/objects/domain/changes/domain.drop.test.ts +33 -0
- package/src/core/objects/domain/changes/domain.drop.ts +34 -0
- package/src/core/objects/domain/changes/domain.privilege.ts +171 -0
- package/src/core/objects/domain/changes/domain.types.ts +13 -0
- package/src/core/objects/domain/domain.diff.test.ts +284 -0
- package/src/core/objects/domain/domain.diff.ts +295 -0
- package/src/core/objects/domain/domain.model.ts +190 -0
- package/src/core/objects/event-trigger/changes/event-trigger.alter.test.ts +57 -0
- package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +82 -0
- package/src/core/objects/event-trigger/changes/event-trigger.base.ts +20 -0
- package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +66 -0
- package/src/core/objects/event-trigger/changes/event-trigger.create.test.ts +27 -0
- package/src/core/objects/event-trigger/changes/event-trigger.create.ts +72 -0
- package/src/core/objects/event-trigger/changes/event-trigger.drop.test.ts +25 -0
- package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +34 -0
- package/src/core/objects/event-trigger/changes/event-trigger.types.ts +11 -0
- package/src/core/objects/event-trigger/event-trigger.diff.test.ts +131 -0
- package/src/core/objects/event-trigger/event-trigger.diff.ts +127 -0
- package/src/core/objects/event-trigger/event-trigger.model.ts +106 -0
- package/src/core/objects/extension/changes/extension.alter.test.ts +63 -0
- package/src/core/objects/extension/changes/extension.alter.ts +78 -0
- package/src/core/objects/extension/changes/extension.base.ts +20 -0
- package/src/core/objects/extension/changes/extension.comment.ts +64 -0
- package/src/core/objects/extension/changes/extension.create.test.ts +28 -0
- package/src/core/objects/extension/changes/extension.create.ts +63 -0
- package/src/core/objects/extension/changes/extension.drop.test.ts +26 -0
- package/src/core/objects/extension/changes/extension.drop.ts +34 -0
- package/src/core/objects/extension/changes/extension.types.ts +11 -0
- package/src/core/objects/extension/extension.diff.test.ts +42 -0
- package/src/core/objects/extension/extension.diff.ts +90 -0
- package/src/core/objects/extension/extension.model.test.ts +98 -0
- package/src/core/objects/extension/extension.model.ts +280 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.test.ts +136 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +101 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +72 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.test.ts +160 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +95 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.test.ts +26 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +36 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +172 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +13 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.test.ts +286 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.ts +271 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.ts +149 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +11 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.test.ts +340 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +341 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +72 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.test.ts +210 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +81 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.test.ts +46 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +37 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +181 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +13 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.test.ts +813 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.ts +343 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.ts +242 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.test.ts +183 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +126 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +60 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.create.test.ts +144 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +81 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.test.ts +27 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +34 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +164 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +13 -0
- package/src/core/objects/foreign-data-wrapper/server/server.diff.test.ts +262 -0
- package/src/core/objects/foreign-data-wrapper/server/server.diff.ts +247 -0
- package/src/core/objects/foreign-data-wrapper/server/server.model.ts +133 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.test.ts +91 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +69 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.test.ts +96 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +66 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.test.ts +60 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +40 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +9 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.test.ts +77 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.ts +107 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.ts +96 -0
- package/src/core/objects/index/changes/index.alter.test.ts +209 -0
- package/src/core/objects/index/changes/index.alter.ts +144 -0
- package/src/core/objects/index/changes/index.base.ts +20 -0
- package/src/core/objects/index/changes/index.comment.ts +63 -0
- package/src/core/objects/index/changes/index.create.test.ts +69 -0
- package/src/core/objects/index/changes/index.create.ts +68 -0
- package/src/core/objects/index/changes/index.drop.test.ts +47 -0
- package/src/core/objects/index/changes/index.drop.ts +34 -0
- package/src/core/objects/index/changes/index.types.ts +7 -0
- package/src/core/objects/index/changes/utils.ts +16 -0
- package/src/core/objects/index/index.diff.test.ts +153 -0
- package/src/core/objects/index/index.diff.ts +243 -0
- package/src/core/objects/index/index.model.ts +370 -0
- package/src/core/objects/language/changes/language.alter.test.ts +36 -0
- package/src/core/objects/language/changes/language.alter.ts +53 -0
- package/src/core/objects/language/changes/language.base.ts +20 -0
- package/src/core/objects/language/changes/language.comment.ts +58 -0
- package/src/core/objects/language/changes/language.create.test.ts +30 -0
- package/src/core/objects/language/changes/language.create.ts +104 -0
- package/src/core/objects/language/changes/language.drop.test.ts +28 -0
- package/src/core/objects/language/changes/language.drop.ts +39 -0
- package/src/core/objects/language/changes/language.privilege.ts +172 -0
- package/src/core/objects/language/changes/language.types.ts +13 -0
- package/src/core/objects/language/language.diff.test.ts +135 -0
- package/src/core/objects/language/language.diff.ts +144 -0
- package/src/core/objects/language/language.model.ts +150 -0
- package/src/core/objects/materialized-view/changes/materialized-view.alter.test.ts +130 -0
- package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +113 -0
- package/src/core/objects/materialized-view/changes/materialized-view.base.ts +20 -0
- package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +176 -0
- package/src/core/objects/materialized-view/changes/materialized-view.create.test.ts +69 -0
- package/src/core/objects/materialized-view/changes/materialized-view.create.ts +93 -0
- package/src/core/objects/materialized-view/changes/materialized-view.drop.test.ts +37 -0
- package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +60 -0
- package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +212 -0
- package/src/core/objects/materialized-view/changes/materialized-view.types.ts +13 -0
- package/src/core/objects/materialized-view/materialized-view.diff.test.ts +264 -0
- package/src/core/objects/materialized-view/materialized-view.diff.ts +301 -0
- package/src/core/objects/materialized-view/materialized-view.model.ts +258 -0
- package/src/core/objects/procedure/changes/procedure.alter.test.ts +1077 -0
- package/src/core/objects/procedure/changes/procedure.alter.ts +290 -0
- package/src/core/objects/procedure/changes/procedure.base.ts +20 -0
- package/src/core/objects/procedure/changes/procedure.comment.ts +70 -0
- package/src/core/objects/procedure/changes/procedure.create.test.ts +51 -0
- package/src/core/objects/procedure/changes/procedure.create.ts +92 -0
- package/src/core/objects/procedure/changes/procedure.drop.test.ts +90 -0
- package/src/core/objects/procedure/changes/procedure.drop.ts +49 -0
- package/src/core/objects/procedure/changes/procedure.privilege.ts +188 -0
- package/src/core/objects/procedure/changes/procedure.types.ts +13 -0
- package/src/core/objects/procedure/procedure.diff.test.ts +161 -0
- package/src/core/objects/procedure/procedure.diff.ts +341 -0
- package/src/core/objects/procedure/procedure.model.ts +264 -0
- package/src/core/objects/procedure/utils.ts +58 -0
- package/src/core/objects/publication/changes/publication.alter.test.ts +217 -0
- package/src/core/objects/publication/changes/publication.alter.ts +225 -0
- package/src/core/objects/publication/changes/publication.base.ts +20 -0
- package/src/core/objects/publication/changes/publication.comment.test.ts +73 -0
- package/src/core/objects/publication/changes/publication.comment.ts +64 -0
- package/src/core/objects/publication/changes/publication.create.test.ts +90 -0
- package/src/core/objects/publication/changes/publication.create.ts +82 -0
- package/src/core/objects/publication/changes/publication.drop.test.ts +48 -0
- package/src/core/objects/publication/changes/publication.drop.ts +29 -0
- package/src/core/objects/publication/changes/publication.types.ts +25 -0
- package/src/core/objects/publication/publication.diff.test.ts +297 -0
- package/src/core/objects/publication/publication.diff.ts +247 -0
- package/src/core/objects/publication/publication.model.ts +206 -0
- package/src/core/objects/publication/utils.ts +55 -0
- package/src/core/objects/rls-policy/changes/rls-policy.alter.test.ts +267 -0
- package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +128 -0
- package/src/core/objects/rls-policy/changes/rls-policy.base.ts +20 -0
- package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +69 -0
- package/src/core/objects/rls-policy/changes/rls-policy.create.test.ts +81 -0
- package/src/core/objects/rls-policy/changes/rls-policy.create.ts +100 -0
- package/src/core/objects/rls-policy/changes/rls-policy.drop.test.ts +31 -0
- package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +39 -0
- package/src/core/objects/rls-policy/changes/rls-policy.types.ts +11 -0
- package/src/core/objects/rls-policy/rls-policy.diff.test.ts +79 -0
- package/src/core/objects/rls-policy/rls-policy.diff.ts +121 -0
- package/src/core/objects/rls-policy/rls-policy.model.ts +140 -0
- package/src/core/objects/role/changes/role.alter.test.ts +362 -0
- package/src/core/objects/role/changes/role.alter.ts +110 -0
- package/src/core/objects/role/changes/role.base.ts +24 -0
- package/src/core/objects/role/changes/role.comment.ts +55 -0
- package/src/core/objects/role/changes/role.create.test.ts +56 -0
- package/src/core/objects/role/changes/role.create.ts +102 -0
- package/src/core/objects/role/changes/role.drop.test.ts +32 -0
- package/src/core/objects/role/changes/role.drop.ts +34 -0
- package/src/core/objects/role/changes/role.privilege.ts +376 -0
- package/src/core/objects/role/changes/role.types.ts +13 -0
- package/src/core/objects/role/role.diff.test.ts +279 -0
- package/src/core/objects/role/role.diff.ts +499 -0
- package/src/core/objects/role/role.model.ts +452 -0
- package/src/core/objects/rule/changes/rule.alter.test.ts +82 -0
- package/src/core/objects/rule/changes/rule.alter.ts +72 -0
- package/src/core/objects/rule/changes/rule.base.ts +20 -0
- package/src/core/objects/rule/changes/rule.comment.test.ts +58 -0
- package/src/core/objects/rule/changes/rule.comment.ts +62 -0
- package/src/core/objects/rule/changes/rule.create.test.ts +63 -0
- package/src/core/objects/rule/changes/rule.create.ts +42 -0
- package/src/core/objects/rule/changes/rule.drop.test.ts +40 -0
- package/src/core/objects/rule/changes/rule.drop.ts +29 -0
- package/src/core/objects/rule/changes/rule.types.ts +13 -0
- package/src/core/objects/rule/rule.diff.test.ts +132 -0
- package/src/core/objects/rule/rule.diff.ts +79 -0
- package/src/core/objects/rule/rule.model.ts +173 -0
- package/src/core/objects/schema/changes/schema.alter.test.ts +31 -0
- package/src/core/objects/schema/changes/schema.alter.ts +45 -0
- package/src/core/objects/schema/changes/schema.base.ts +20 -0
- package/src/core/objects/schema/changes/schema.comment.ts +56 -0
- package/src/core/objects/schema/changes/schema.create.test.ts +25 -0
- package/src/core/objects/schema/changes/schema.create.ts +47 -0
- package/src/core/objects/schema/changes/schema.drop.test.ts +23 -0
- package/src/core/objects/schema/changes/schema.drop.ts +34 -0
- package/src/core/objects/schema/changes/schema.privilege.ts +175 -0
- package/src/core/objects/schema/changes/schema.types.ts +13 -0
- package/src/core/objects/schema/schema.diff.test.ts +42 -0
- package/src/core/objects/schema/schema.diff.ts +146 -0
- package/src/core/objects/schema/schema.model.ts +107 -0
- package/src/core/objects/sequence/changes/sequence.alter.test.ts +157 -0
- package/src/core/objects/sequence/changes/sequence.alter.ts +115 -0
- package/src/core/objects/sequence/changes/sequence.base.ts +20 -0
- package/src/core/objects/sequence/changes/sequence.comment.ts +60 -0
- package/src/core/objects/sequence/changes/sequence.create.test.ts +89 -0
- package/src/core/objects/sequence/changes/sequence.create.ts +111 -0
- package/src/core/objects/sequence/changes/sequence.drop.test.ts +35 -0
- package/src/core/objects/sequence/changes/sequence.drop.ts +37 -0
- package/src/core/objects/sequence/changes/sequence.privilege.ts +179 -0
- package/src/core/objects/sequence/changes/sequence.types.ts +13 -0
- package/src/core/objects/sequence/sequence.diff.test.ts +255 -0
- package/src/core/objects/sequence/sequence.diff.ts +294 -0
- package/src/core/objects/sequence/sequence.model.ts +185 -0
- package/src/core/objects/subscription/changes/subscription.alter.test.ts +134 -0
- package/src/core/objects/subscription/changes/subscription.alter.ts +110 -0
- package/src/core/objects/subscription/changes/subscription.base.ts +20 -0
- package/src/core/objects/subscription/changes/subscription.comment.test.ts +70 -0
- package/src/core/objects/subscription/changes/subscription.comment.ts +64 -0
- package/src/core/objects/subscription/changes/subscription.create.test.ts +80 -0
- package/src/core/objects/subscription/changes/subscription.create.ts +69 -0
- package/src/core/objects/subscription/changes/subscription.drop.test.ts +48 -0
- package/src/core/objects/subscription/changes/subscription.drop.ts +20 -0
- package/src/core/objects/subscription/changes/subscription.types.ts +23 -0
- package/src/core/objects/subscription/subscription.diff.test.ts +237 -0
- package/src/core/objects/subscription/subscription.diff.ts +242 -0
- package/src/core/objects/subscription/subscription.model.ts +190 -0
- package/src/core/objects/subscription/utils.ts +156 -0
- package/src/core/objects/table/changes/table.alter.test.ts +846 -0
- package/src/core/objects/table/changes/table.alter.ts +806 -0
- package/src/core/objects/table/changes/table.base.ts +20 -0
- package/src/core/objects/table/changes/table.comment.ts +266 -0
- package/src/core/objects/table/changes/table.create.test.ts +188 -0
- package/src/core/objects/table/changes/table.create.ts +192 -0
- package/src/core/objects/table/changes/table.drop.test.ts +36 -0
- package/src/core/objects/table/changes/table.drop.ts +45 -0
- package/src/core/objects/table/changes/table.privilege.ts +200 -0
- package/src/core/objects/table/changes/table.types.ts +13 -0
- package/src/core/objects/table/table.diff.test.ts +868 -0
- package/src/core/objects/table/table.diff.ts +817 -0
- package/src/core/objects/table/table.model.ts +460 -0
- package/src/core/objects/trigger/changes/trigger.alter.test.ts +50 -0
- package/src/core/objects/trigger/changes/trigger.alter.ts +76 -0
- package/src/core/objects/trigger/changes/trigger.base.ts +20 -0
- package/src/core/objects/trigger/changes/trigger.comment.ts +64 -0
- package/src/core/objects/trigger/changes/trigger.create.test.ts +47 -0
- package/src/core/objects/trigger/changes/trigger.create.ts +88 -0
- package/src/core/objects/trigger/changes/trigger.drop.test.ts +47 -0
- package/src/core/objects/trigger/changes/trigger.drop.ts +39 -0
- package/src/core/objects/trigger/changes/trigger.types.ts +11 -0
- package/src/core/objects/trigger/trigger.diff.test.ts +84 -0
- package/src/core/objects/trigger/trigger.diff.ts +116 -0
- package/src/core/objects/trigger/trigger.model.ts +264 -0
- package/src/core/objects/type/composite-type/changes/composite-type.alter.test.ts +208 -0
- package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +174 -0
- package/src/core/objects/type/composite-type/changes/composite-type.base.ts +20 -0
- package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +145 -0
- package/src/core/objects/type/composite-type/changes/composite-type.create.test.ts +106 -0
- package/src/core/objects/type/composite-type/changes/composite-type.create.ts +95 -0
- package/src/core/objects/type/composite-type/changes/composite-type.drop.test.ts +36 -0
- package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +37 -0
- package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +175 -0
- package/src/core/objects/type/composite-type/changes/composite-type.types.ts +13 -0
- package/src/core/objects/type/composite-type/composite-type.diff.test.ts +269 -0
- package/src/core/objects/type/composite-type/composite-type.diff.ts +310 -0
- package/src/core/objects/type/composite-type/composite-type.model.ts +253 -0
- package/src/core/objects/type/enum/changes/enum.alter.test.ts +113 -0
- package/src/core/objects/type/enum/changes/enum.alter.ts +91 -0
- package/src/core/objects/type/enum/changes/enum.base.ts +20 -0
- package/src/core/objects/type/enum/changes/enum.comment.ts +64 -0
- package/src/core/objects/type/enum/changes/enum.create.test.ts +31 -0
- package/src/core/objects/type/enum/changes/enum.create.ts +56 -0
- package/src/core/objects/type/enum/changes/enum.drop.test.ts +28 -0
- package/src/core/objects/type/enum/changes/enum.drop.ts +34 -0
- package/src/core/objects/type/enum/changes/enum.privilege.ts +175 -0
- package/src/core/objects/type/enum/changes/enum.types.ts +13 -0
- package/src/core/objects/type/enum/enum.diff.test.ts +372 -0
- package/src/core/objects/type/enum/enum.diff.ts +308 -0
- package/src/core/objects/type/enum/enum.model.ts +194 -0
- package/src/core/objects/type/range/changes/range.alter.test.ts +29 -0
- package/src/core/objects/type/range/changes/range.alter.ts +51 -0
- package/src/core/objects/type/range/changes/range.base.ts +20 -0
- package/src/core/objects/type/range/changes/range.comment.ts +64 -0
- package/src/core/objects/type/range/changes/range.create.test.ts +54 -0
- package/src/core/objects/type/range/changes/range.create.ts +155 -0
- package/src/core/objects/type/range/changes/range.drop.test.ts +28 -0
- package/src/core/objects/type/range/changes/range.drop.ts +34 -0
- package/src/core/objects/type/range/changes/range.privilege.ts +175 -0
- package/src/core/objects/type/range/changes/range.types.ts +13 -0
- package/src/core/objects/type/range/range.diff.test.ts +147 -0
- package/src/core/objects/type/range/range.diff.ts +197 -0
- package/src/core/objects/type/range/range.model.ts +187 -0
- package/src/core/objects/type/type.types.ts +6 -0
- package/src/core/objects/utils.ts +171 -0
- package/src/core/objects/view/changes/view.alter.test.ts +115 -0
- package/src/core/objects/view/changes/view.alter.ts +112 -0
- package/src/core/objects/view/changes/view.base.ts +20 -0
- package/src/core/objects/view/changes/view.comment.ts +59 -0
- package/src/core/objects/view/changes/view.create.test.ts +70 -0
- package/src/core/objects/view/changes/view.create.ts +73 -0
- package/src/core/objects/view/changes/view.drop.test.ts +37 -0
- package/src/core/objects/view/changes/view.drop.ts +40 -0
- package/src/core/objects/view/changes/view.privilege.ts +200 -0
- package/src/core/objects/view/changes/view.types.ts +13 -0
- package/src/core/objects/view/view.diff.test.ts +269 -0
- package/src/core/objects/view/view.diff.ts +230 -0
- package/src/core/objects/view/view.model.ts +262 -0
- package/src/core/plan/apply.ts +172 -0
- package/src/core/plan/create.ts +384 -0
- package/src/core/plan/hierarchy.ts +574 -0
- package/src/core/plan/index.ts +29 -0
- package/src/core/plan/io.ts +20 -0
- package/src/core/plan/risk.ts +48 -0
- package/src/core/plan/serialize.test.ts +317 -0
- package/src/core/plan/serialize.ts +209 -0
- package/src/core/plan/sql-format/constants.ts +13 -0
- package/src/core/plan/sql-format/fixtures.ts +2803 -0
- package/src/core/plan/sql-format/format-comment-literals.test.ts +96 -0
- package/src/core/plan/sql-format/format-functions.test.ts +127 -0
- package/src/core/plan/sql-format/format-lowercase-coverage.test.ts +119 -0
- package/src/core/plan/sql-format/format-off.test.ts +806 -0
- package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1061 -0
- package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1279 -0
- package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1057 -0
- package/src/core/plan/sql-format/format-pretty-upper.test.ts +1048 -0
- package/src/core/plan/sql-format/format-stress.test.ts +616 -0
- package/src/core/plan/sql-format/format-utils.test.ts +91 -0
- package/src/core/plan/sql-format/format-utils.ts +391 -0
- package/src/core/plan/sql-format/formatters.ts +921 -0
- package/src/core/plan/sql-format/index.ts +149 -0
- package/src/core/plan/sql-format/keyword-case.test.ts +118 -0
- package/src/core/plan/sql-format/keyword-case.ts +1120 -0
- package/src/core/plan/sql-format/protect.test.ts +127 -0
- package/src/core/plan/sql-format/protect.ts +337 -0
- package/src/core/plan/sql-format/sql-scanner.test.ts +240 -0
- package/src/core/plan/sql-format/sql-scanner.ts +252 -0
- package/src/core/plan/sql-format/tokenizer.test.ts +68 -0
- package/src/core/plan/sql-format/tokenizer.ts +152 -0
- package/src/core/plan/sql-format/types.ts +31 -0
- package/src/core/plan/sql-format/wrap.test.ts +119 -0
- package/src/core/plan/sql-format/wrap.ts +196 -0
- package/src/core/plan/sql-format.ts +2 -0
- package/src/core/plan/ssl-config.ts +172 -0
- package/src/core/plan/statements.ts +22 -0
- package/src/core/plan/types.ts +171 -0
- package/src/core/postgres-config.ts +293 -0
- package/src/core/sort/custom-constraints.ts +161 -0
- package/src/core/sort/debug-visualization.ts +239 -0
- package/src/core/sort/dependency-filter.ts +224 -0
- package/src/core/sort/graph-builder.ts +235 -0
- package/src/core/sort/graph-utils.ts +51 -0
- package/src/core/sort/logical-sort.test.ts +371 -0
- package/src/core/sort/logical-sort.ts +573 -0
- package/src/core/sort/sort-changes.ts +234 -0
- package/src/core/sort/topological-sort.test.ts +275 -0
- package/src/core/sort/topological-sort.ts +184 -0
- package/src/core/sort/types.ts +112 -0
- package/src/core/sort/utils.ts +69 -0
- package/src/core/test-utils/assert-valid-sql.ts +20 -0
- package/src/index.ts +41 -0
- package/src/typedoc.ts +248 -0
- package/dist/core/integrations/filter/extractors.d.ts +0 -12
- package/dist/core/integrations/filter/extractors.js +0 -136
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Pool } from "pg";
|
|
2
2
|
import z from "zod";
|
|
3
3
|
import { BasePgModel, type TableLikeObject } from "../base.model.ts";
|
|
4
4
|
import { type PrivilegeProps } from "../base.privilege-diff.ts";
|
|
5
5
|
export declare const ReplicaIdentitySchema: z.ZodEnum<{
|
|
6
|
-
f: "f";
|
|
7
6
|
n: "n";
|
|
8
7
|
i: "i";
|
|
9
8
|
d: "d";
|
|
9
|
+
f: "f";
|
|
10
10
|
}>;
|
|
11
11
|
declare const tableConstraintPropsSchema: z.ZodObject<{
|
|
12
12
|
name: z.ZodString;
|
|
13
13
|
constraint_type: z.ZodEnum<{
|
|
14
|
-
f: "f";
|
|
15
14
|
u: "u";
|
|
16
|
-
|
|
15
|
+
t: "t";
|
|
17
16
|
c: "c";
|
|
17
|
+
p: "p";
|
|
18
|
+
f: "f";
|
|
18
19
|
x: "x";
|
|
19
20
|
}>;
|
|
20
21
|
deferrable: z.ZodBoolean;
|
|
@@ -37,24 +38,24 @@ declare const tableConstraintPropsSchema: z.ZodObject<{
|
|
|
37
38
|
foreign_key_effective_schema: z.ZodNullable<z.ZodString>;
|
|
38
39
|
foreign_key_effective_table: z.ZodNullable<z.ZodString>;
|
|
39
40
|
on_update: z.ZodNullable<z.ZodEnum<{
|
|
40
|
-
r: "r";
|
|
41
41
|
n: "n";
|
|
42
42
|
a: "a";
|
|
43
|
+
r: "r";
|
|
43
44
|
d: "d";
|
|
44
45
|
c: "c";
|
|
45
46
|
}>>;
|
|
46
47
|
on_delete: z.ZodNullable<z.ZodEnum<{
|
|
47
|
-
r: "r";
|
|
48
48
|
n: "n";
|
|
49
49
|
a: "a";
|
|
50
|
+
r: "r";
|
|
50
51
|
d: "d";
|
|
51
52
|
c: "c";
|
|
52
53
|
}>>;
|
|
53
54
|
match_type: z.ZodNullable<z.ZodEnum<{
|
|
54
|
-
f: "f";
|
|
55
55
|
u: "u";
|
|
56
56
|
s: "s";
|
|
57
57
|
p: "p";
|
|
58
|
+
f: "f";
|
|
58
59
|
}>>;
|
|
59
60
|
check_expression: z.ZodNullable<z.ZodString>;
|
|
60
61
|
owner: z.ZodString;
|
|
@@ -78,10 +79,10 @@ declare const tablePropsSchema: z.ZodObject<{
|
|
|
78
79
|
has_subclasses: z.ZodBoolean;
|
|
79
80
|
is_populated: z.ZodBoolean;
|
|
80
81
|
replica_identity: z.ZodEnum<{
|
|
81
|
-
f: "f";
|
|
82
82
|
n: "n";
|
|
83
83
|
i: "i";
|
|
84
84
|
d: "d";
|
|
85
|
+
f: "f";
|
|
85
86
|
}>;
|
|
86
87
|
is_partition: z.ZodBoolean;
|
|
87
88
|
options: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
@@ -112,10 +113,11 @@ declare const tablePropsSchema: z.ZodObject<{
|
|
|
112
113
|
constraints: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
113
114
|
name: z.ZodString;
|
|
114
115
|
constraint_type: z.ZodEnum<{
|
|
115
|
-
f: "f";
|
|
116
116
|
u: "u";
|
|
117
|
-
|
|
117
|
+
t: "t";
|
|
118
118
|
c: "c";
|
|
119
|
+
p: "p";
|
|
120
|
+
f: "f";
|
|
119
121
|
x: "x";
|
|
120
122
|
}>;
|
|
121
123
|
deferrable: z.ZodBoolean;
|
|
@@ -138,24 +140,24 @@ declare const tablePropsSchema: z.ZodObject<{
|
|
|
138
140
|
foreign_key_effective_schema: z.ZodNullable<z.ZodString>;
|
|
139
141
|
foreign_key_effective_table: z.ZodNullable<z.ZodString>;
|
|
140
142
|
on_update: z.ZodNullable<z.ZodEnum<{
|
|
141
|
-
r: "r";
|
|
142
143
|
n: "n";
|
|
143
144
|
a: "a";
|
|
145
|
+
r: "r";
|
|
144
146
|
d: "d";
|
|
145
147
|
c: "c";
|
|
146
148
|
}>>;
|
|
147
149
|
on_delete: z.ZodNullable<z.ZodEnum<{
|
|
148
|
-
r: "r";
|
|
149
150
|
n: "n";
|
|
150
151
|
a: "a";
|
|
152
|
+
r: "r";
|
|
151
153
|
d: "d";
|
|
152
154
|
c: "c";
|
|
153
155
|
}>>;
|
|
154
156
|
match_type: z.ZodNullable<z.ZodEnum<{
|
|
155
|
-
f: "f";
|
|
156
157
|
u: "u";
|
|
157
158
|
s: "s";
|
|
158
159
|
p: "p";
|
|
160
|
+
f: "f";
|
|
159
161
|
}>>;
|
|
160
162
|
check_expression: z.ZodNullable<z.ZodString>;
|
|
161
163
|
owner: z.ZodString;
|
|
@@ -204,7 +206,7 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
204
206
|
persistence: "u" | "t" | "p";
|
|
205
207
|
row_security: boolean;
|
|
206
208
|
force_row_security: boolean;
|
|
207
|
-
replica_identity: "
|
|
209
|
+
replica_identity: "n" | "i" | "d" | "f";
|
|
208
210
|
options: string[] | null;
|
|
209
211
|
parent_schema: string | null;
|
|
210
212
|
parent_name: string | null;
|
|
@@ -231,7 +233,7 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
231
233
|
}[];
|
|
232
234
|
constraints: {
|
|
233
235
|
name: string;
|
|
234
|
-
constraint_type: "
|
|
236
|
+
constraint_type: "u" | "t" | "c" | "p" | "f" | "x";
|
|
235
237
|
deferrable: boolean;
|
|
236
238
|
initially_deferred: boolean;
|
|
237
239
|
validated: boolean;
|
|
@@ -251,9 +253,9 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
251
253
|
foreign_key_parent_table: string | null;
|
|
252
254
|
foreign_key_effective_schema: string | null;
|
|
253
255
|
foreign_key_effective_table: string | null;
|
|
254
|
-
on_update: "
|
|
255
|
-
on_delete: "
|
|
256
|
-
match_type: "
|
|
256
|
+
on_update: "n" | "a" | "r" | "d" | "c" | null;
|
|
257
|
+
on_delete: "n" | "a" | "r" | "d" | "c" | null;
|
|
258
|
+
match_type: "u" | "s" | "p" | "f" | null;
|
|
257
259
|
check_expression: string | null;
|
|
258
260
|
owner: string;
|
|
259
261
|
definition: string;
|
|
@@ -292,7 +294,7 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
292
294
|
options: string[] | null;
|
|
293
295
|
constraints: {
|
|
294
296
|
name: string;
|
|
295
|
-
constraint_type: "
|
|
297
|
+
constraint_type: "u" | "t" | "c" | "p" | "f" | "x";
|
|
296
298
|
deferrable: boolean;
|
|
297
299
|
initially_deferred: boolean;
|
|
298
300
|
validated: boolean;
|
|
@@ -312,9 +314,9 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
312
314
|
foreign_key_parent_table: string | null;
|
|
313
315
|
foreign_key_effective_schema: string | null;
|
|
314
316
|
foreign_key_effective_table: string | null;
|
|
315
|
-
on_update: "
|
|
316
|
-
on_delete: "
|
|
317
|
-
match_type: "
|
|
317
|
+
on_update: "n" | "a" | "r" | "d" | "c" | null;
|
|
318
|
+
on_delete: "n" | "a" | "r" | "d" | "c" | null;
|
|
319
|
+
match_type: "u" | "s" | "p" | "f" | null;
|
|
318
320
|
check_expression: string | null;
|
|
319
321
|
owner: string;
|
|
320
322
|
definition: string;
|
|
@@ -324,11 +326,12 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
324
326
|
grantee: string;
|
|
325
327
|
privilege: string;
|
|
326
328
|
grantable: boolean;
|
|
329
|
+
columns: string[] | null | undefined;
|
|
327
330
|
}[];
|
|
328
331
|
persistence: "u" | "t" | "p";
|
|
329
332
|
row_security: boolean;
|
|
330
333
|
force_row_security: boolean;
|
|
331
|
-
replica_identity: "
|
|
334
|
+
replica_identity: "n" | "i" | "d" | "f";
|
|
332
335
|
parent_schema: string | null;
|
|
333
336
|
parent_name: string | null;
|
|
334
337
|
partition_bound: string | null;
|
|
@@ -337,5 +340,5 @@ export declare class Table extends BasePgModel implements TableLikeObject {
|
|
|
337
340
|
};
|
|
338
341
|
};
|
|
339
342
|
}
|
|
340
|
-
export declare function extractTables(
|
|
343
|
+
export declare function extractTables(pool: Pool): Promise<Table[]>;
|
|
341
344
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sql } from "@ts-safeql/sql-tag";
|
|
1
2
|
import z from "zod";
|
|
2
3
|
import { BasePgModel, columnPropsSchema, normalizeColumns, } from "../base.model.js";
|
|
3
4
|
import { normalizePrivileges } from "../base.privilege.js";
|
|
@@ -32,6 +33,7 @@ const tableConstraintPropsSchema = z.object({
|
|
|
32
33
|
"c", // CHECK constraint
|
|
33
34
|
"f", // FOREIGN KEY constraint
|
|
34
35
|
"p", // PRIMARY KEY constraint
|
|
36
|
+
"t", // TRIGGER constraint
|
|
35
37
|
"u", // UNIQUE constraint
|
|
36
38
|
"x", // EXCLUDE constraint
|
|
37
39
|
]),
|
|
@@ -182,10 +184,8 @@ export class Table extends BasePgModel {
|
|
|
182
184
|
};
|
|
183
185
|
}
|
|
184
186
|
}
|
|
185
|
-
export async function extractTables(
|
|
186
|
-
|
|
187
|
-
await sql `set search_path = ''`;
|
|
188
|
-
const tableRows = await sql `
|
|
187
|
+
export async function extractTables(pool) {
|
|
188
|
+
const { rows: tableRows } = await pool.query(sql `
|
|
189
189
|
with extension_oids as (
|
|
190
190
|
select objid
|
|
191
191
|
from pg_depend d
|
|
@@ -339,6 +339,8 @@ select
|
|
|
339
339
|
and de.refclassid = 'pg_extension'::regclass
|
|
340
340
|
|
|
341
341
|
where c.conrelid = t.oid
|
|
342
|
+
-- Skip constraint triggers and PG18 NOT NULL constraints; they are modeled elsewhere
|
|
343
|
+
and c.contype not in ('t', 'n')
|
|
342
344
|
and not c.connamespace::regnamespace::text like any(array['pg\\_%', 'information\\_schema'])
|
|
343
345
|
and de.objid is null
|
|
344
346
|
),
|
|
@@ -395,7 +397,7 @@ select
|
|
|
395
397
|
from (
|
|
396
398
|
-- one row for object ACL + one row per column ACL
|
|
397
399
|
select null::name as attname, t.oid as relacl_oid, (
|
|
398
|
-
select c_rel.relacl from pg_class c_rel where c_rel.oid = t.oid
|
|
400
|
+
select COALESCE(c_rel.relacl, acldefault('r', c_rel.relowner)) from pg_class c_rel where c_rel.oid = t.oid
|
|
399
401
|
) as acl
|
|
400
402
|
union all
|
|
401
403
|
select a2.attname, t.oid as relacl_oid, a2.attacl
|
|
@@ -417,10 +419,9 @@ from
|
|
|
417
419
|
group by
|
|
418
420
|
t.oid, t.schema, t.name, t.persistence, t.row_security, t.force_row_security, t.has_indexes, t.has_rules, t.has_triggers, t.has_subclasses, t.is_populated, t.replica_identity, t.is_partition, t.options, t.partition_bound, t.partition_by, t.owner, t.parent_schema, t.parent_name
|
|
419
421
|
order by
|
|
420
|
-
t.schema, t.name
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
});
|
|
422
|
+
t.schema, t.name
|
|
423
|
+
`);
|
|
424
|
+
// Validate and parse each row using the Zod schema
|
|
425
|
+
const validatedRows = tableRows.map((row) => tablePropsSchema.parse(row));
|
|
426
|
+
return validatedRows.map((row) => new Table(row));
|
|
426
427
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../base.change.js";
|
|
1
2
|
import { AlterTriggerChange } from "./trigger.base.js";
|
|
2
3
|
import { CreateTrigger } from "./trigger.create.js";
|
|
4
|
+
import { DropTrigger } from "./trigger.drop.js";
|
|
3
5
|
/**
|
|
4
6
|
* Replace a trigger by dropping and recreating it.
|
|
5
7
|
* This is used when properties that cannot be altered via ALTER TRIGGER change.
|
|
@@ -17,6 +19,27 @@ export class ReplaceTrigger extends AlterTriggerChange {
|
|
|
17
19
|
return [this.trigger.stableId];
|
|
18
20
|
}
|
|
19
21
|
serialize() {
|
|
22
|
+
if (this.trigger.isConstraintTrigger) {
|
|
23
|
+
const dropChange = new DropTrigger({ trigger: this.trigger });
|
|
24
|
+
const createChange = new CreateTrigger({
|
|
25
|
+
trigger: this.trigger,
|
|
26
|
+
indexableObject: this.indexableObject,
|
|
27
|
+
orReplace: false,
|
|
28
|
+
});
|
|
29
|
+
const commentSql = this.trigger.comment !== null
|
|
30
|
+
? [
|
|
31
|
+
"COMMENT ON TRIGGER",
|
|
32
|
+
this.trigger.name,
|
|
33
|
+
"ON",
|
|
34
|
+
`${this.trigger.schema}.${this.trigger.table_name}`,
|
|
35
|
+
"IS",
|
|
36
|
+
quoteLiteral(this.trigger.comment),
|
|
37
|
+
].join(" ")
|
|
38
|
+
: null;
|
|
39
|
+
return [dropChange.serialize(), createChange.serialize(), commentSql]
|
|
40
|
+
.filter(Boolean)
|
|
41
|
+
.join(";\n");
|
|
42
|
+
}
|
|
20
43
|
const createChange = new CreateTrigger({
|
|
21
44
|
trigger: this.trigger,
|
|
22
45
|
indexableObject: this.indexableObject,
|
|
@@ -45,17 +45,16 @@ export class CreateTrigger extends CreateTriggerChange {
|
|
|
45
45
|
// Table dependency
|
|
46
46
|
dependencies.add(stableId.table(this.trigger.schema, this.trigger.table_name));
|
|
47
47
|
// Function dependency
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
// For now, we rely on pg_depend extraction for procedure dependencies.
|
|
51
|
-
// If needed, we could parse the trigger definition to extract the full function signature.
|
|
48
|
+
// Trigger functions always have signature () RETURNS trigger, so no arguments.
|
|
49
|
+
dependencies.add(stableId.procedure(this.trigger.function_schema, this.trigger.function_name));
|
|
52
50
|
// Owner dependency
|
|
53
51
|
dependencies.add(stableId.role(this.trigger.owner));
|
|
54
52
|
return Array.from(dependencies);
|
|
55
53
|
}
|
|
56
54
|
serialize() {
|
|
57
55
|
let definition = this.trigger.definition.trim();
|
|
58
|
-
|
|
56
|
+
const isConstraintTrigger = this.trigger.isConstraintTrigger;
|
|
57
|
+
definition = definition.replace(/^CREATE\s+(?:OR\s+REPLACE\s+)?/i, `CREATE ${this.orReplace && !isConstraintTrigger ? "OR REPLACE " : ""}`);
|
|
59
58
|
return definition;
|
|
60
59
|
}
|
|
61
60
|
}
|
|
@@ -2,4 +2,5 @@ import type { AlterTrigger } from "./trigger.alter.ts";
|
|
|
2
2
|
import type { CommentTrigger } from "./trigger.comment.ts";
|
|
3
3
|
import type { CreateTrigger } from "./trigger.create.ts";
|
|
4
4
|
import type { DropTrigger } from "./trigger.drop.ts";
|
|
5
|
+
/** Union of all trigger-related change variants (`objectType: "trigger"`). @category Change Types */
|
|
5
6
|
export type TriggerChange = AlterTrigger | CommentTrigger | CreateTrigger | DropTrigger;
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Pool } from "pg";
|
|
2
2
|
import z from "zod";
|
|
3
3
|
import { BasePgModel } from "../base.model.ts";
|
|
4
4
|
declare const triggerPropsSchema: z.ZodObject<{
|
|
5
5
|
schema: z.ZodString;
|
|
6
6
|
name: z.ZodString;
|
|
7
7
|
table_name: z.ZodString;
|
|
8
|
+
table_relkind: z.ZodEnum<{
|
|
9
|
+
r: "r";
|
|
10
|
+
v: "v";
|
|
11
|
+
m: "m";
|
|
12
|
+
p: "p";
|
|
13
|
+
f: "f";
|
|
14
|
+
}>;
|
|
8
15
|
function_schema: z.ZodString;
|
|
9
16
|
function_name: z.ZodString;
|
|
10
17
|
trigger_type: z.ZodNumber;
|
|
@@ -37,6 +44,7 @@ export declare class Trigger extends BasePgModel {
|
|
|
37
44
|
readonly schema: TriggerProps["schema"];
|
|
38
45
|
readonly name: TriggerProps["name"];
|
|
39
46
|
readonly table_name: TriggerProps["table_name"];
|
|
47
|
+
readonly table_relkind: TriggerProps["table_relkind"];
|
|
40
48
|
readonly function_schema: TriggerProps["function_schema"];
|
|
41
49
|
readonly function_name: TriggerProps["function_name"];
|
|
42
50
|
readonly trigger_type: TriggerProps["trigger_type"];
|
|
@@ -59,6 +67,7 @@ export declare class Trigger extends BasePgModel {
|
|
|
59
67
|
readonly definition: TriggerProps["definition"];
|
|
60
68
|
readonly comment: TriggerProps["comment"];
|
|
61
69
|
constructor(props: TriggerProps);
|
|
70
|
+
get isConstraintTrigger(): boolean;
|
|
62
71
|
get stableId(): `trigger:${string}`;
|
|
63
72
|
get identityFields(): {
|
|
64
73
|
schema: string;
|
|
@@ -88,5 +97,5 @@ export declare class Trigger extends BasePgModel {
|
|
|
88
97
|
comment: string | null;
|
|
89
98
|
};
|
|
90
99
|
}
|
|
91
|
-
export declare function extractTriggers(
|
|
100
|
+
export declare function extractTriggers(pool: Pool): Promise<Trigger[]>;
|
|
92
101
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sql } from "@ts-safeql/sql-tag";
|
|
1
2
|
import z from "zod";
|
|
2
3
|
import { BasePgModel } from "../base.model.js";
|
|
3
4
|
const TriggerEnabledSchema = z.enum([
|
|
@@ -6,10 +7,18 @@ const TriggerEnabledSchema = z.enum([
|
|
|
6
7
|
"R", // REPLICA - trigger fires only in "replica" mode
|
|
7
8
|
"A", // ALWAYS - trigger fires regardless of replication mode
|
|
8
9
|
]);
|
|
10
|
+
const TriggerTableRelkindSchema = z.enum([
|
|
11
|
+
"r", // ordinary table
|
|
12
|
+
"p", // partitioned table
|
|
13
|
+
"f", // foreign table
|
|
14
|
+
"v", // view
|
|
15
|
+
"m", // materialized view
|
|
16
|
+
]);
|
|
9
17
|
const triggerPropsSchema = z.object({
|
|
10
18
|
schema: z.string(),
|
|
11
19
|
name: z.string(),
|
|
12
20
|
table_name: z.string(),
|
|
21
|
+
table_relkind: TriggerTableRelkindSchema,
|
|
13
22
|
function_schema: z.string(),
|
|
14
23
|
function_name: z.string(),
|
|
15
24
|
trigger_type: z.number(),
|
|
@@ -36,6 +45,7 @@ export class Trigger extends BasePgModel {
|
|
|
36
45
|
schema;
|
|
37
46
|
name;
|
|
38
47
|
table_name;
|
|
48
|
+
table_relkind;
|
|
39
49
|
function_schema;
|
|
40
50
|
function_name;
|
|
41
51
|
trigger_type;
|
|
@@ -63,6 +73,7 @@ export class Trigger extends BasePgModel {
|
|
|
63
73
|
this.schema = props.schema;
|
|
64
74
|
this.name = props.name;
|
|
65
75
|
this.table_name = props.table_name;
|
|
76
|
+
this.table_relkind = props.table_relkind;
|
|
66
77
|
// Data fields
|
|
67
78
|
this.function_schema = props.function_schema;
|
|
68
79
|
this.function_name = props.function_name;
|
|
@@ -86,6 +97,9 @@ export class Trigger extends BasePgModel {
|
|
|
86
97
|
this.definition = props.definition;
|
|
87
98
|
this.comment = props.comment;
|
|
88
99
|
}
|
|
100
|
+
get isConstraintTrigger() {
|
|
101
|
+
return /^CREATE\s+CONSTRAINT\s+TRIGGER/i.test(this.definition.trim());
|
|
102
|
+
}
|
|
89
103
|
get stableId() {
|
|
90
104
|
return `trigger:${this.schema}.${this.table_name}.${this.name}`;
|
|
91
105
|
}
|
|
@@ -121,10 +135,8 @@ export class Trigger extends BasePgModel {
|
|
|
121
135
|
};
|
|
122
136
|
}
|
|
123
137
|
}
|
|
124
|
-
export async function extractTriggers(
|
|
125
|
-
|
|
126
|
-
await sql `set search_path = ''`;
|
|
127
|
-
const triggerRows = await sql `
|
|
138
|
+
export async function extractTriggers(pool) {
|
|
139
|
+
const { rows: triggerRows } = await pool.query(sql `
|
|
128
140
|
with extension_trigger_oids as (
|
|
129
141
|
select objid
|
|
130
142
|
from pg_depend d
|
|
@@ -148,6 +160,7 @@ export async function extractTriggers(sql) {
|
|
|
148
160
|
tc.relnamespace::regnamespace::text as schema,
|
|
149
161
|
quote_ident(t.tgname) as name,
|
|
150
162
|
quote_ident(tc.relname) as table_name,
|
|
163
|
+
tc.relkind as table_relkind,
|
|
151
164
|
|
|
152
165
|
fc.pronamespace::regnamespace::text as function_schema,
|
|
153
166
|
quote_ident(fc.proname) as function_name,
|
|
@@ -226,10 +239,9 @@ export async function extractTriggers(sql) {
|
|
|
226
239
|
and e_function.objid is null
|
|
227
240
|
and not t.tgisinternal
|
|
228
241
|
|
|
229
|
-
order by 1, 2
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
});
|
|
242
|
+
order by 1, 2
|
|
243
|
+
`);
|
|
244
|
+
// Validate and parse each row using the Zod schema
|
|
245
|
+
const validatedRows = triggerRows.map((row) => triggerPropsSchema.parse(row));
|
|
246
|
+
return validatedRows.map((row) => new Trigger(row));
|
|
235
247
|
}
|
|
@@ -3,4 +3,5 @@ import type { CommentCompositeType } from "./composite-type.comment.ts";
|
|
|
3
3
|
import type { CreateCompositeType } from "./composite-type.create.ts";
|
|
4
4
|
import type { DropCompositeType } from "./composite-type.drop.ts";
|
|
5
5
|
import type { CompositeTypePrivilege } from "./composite-type.privilege.ts";
|
|
6
|
+
/** Union of all composite-type-related change variants (`objectType: "composite_type"`). @category Change Types */
|
|
6
7
|
export type CompositeTypeChange = AlterCompositeType | CommentCompositeType | CreateCompositeType | DropCompositeType | CompositeTypePrivilege;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Role } from "../../role/role.model.ts";
|
|
1
|
+
import type { ObjectDiffContext } from "../../diff-context.ts";
|
|
3
2
|
import type { CompositeTypeChange } from "./changes/composite-type.types.ts";
|
|
4
3
|
import type { CompositeType } from "./composite-type.model.ts";
|
|
5
4
|
/**
|
|
@@ -10,9 +9,4 @@ import type { CompositeType } from "./composite-type.model.ts";
|
|
|
10
9
|
* @param branch - The composite types in the branch catalog.
|
|
11
10
|
* @returns A list of changes to apply to main to make it match branch.
|
|
12
11
|
*/
|
|
13
|
-
export declare function diffCompositeTypes(ctx:
|
|
14
|
-
version: number;
|
|
15
|
-
currentUser: string;
|
|
16
|
-
defaultPrivilegeState: DefaultPrivilegeState;
|
|
17
|
-
mainRoles: Record<string, Role>;
|
|
18
|
-
}, main: Record<string, CompositeType>, branch: Record<string, CompositeType>): CompositeTypeChange[];
|
|
12
|
+
export declare function diffCompositeTypes(ctx: Pick<ObjectDiffContext, "version" | "currentUser" | "defaultPrivilegeState">, main: Record<string, CompositeType>, branch: Record<string, CompositeType>): CompositeTypeChange[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { diffObjects } from "../../base.diff.js";
|
|
2
|
-
import { diffPrivileges,
|
|
2
|
+
import { diffPrivileges, emitObjectPrivilegeChanges, filterPublicBuiltInDefaults, } from "../../base.privilege-diff.js";
|
|
3
3
|
import { deepEqual, hasNonAlterableChanges } from "../../utils.js";
|
|
4
4
|
import { AlterCompositeTypeAddAttribute, AlterCompositeTypeAlterAttributeType, AlterCompositeTypeChangeOwner, AlterCompositeTypeDropAttribute, } from "./changes/composite-type.alter.js";
|
|
5
5
|
import { CreateCommentOnCompositeType, CreateCommentOnCompositeTypeAttribute, DropCommentOnCompositeType, DropCommentOnCompositeTypeAttribute, } from "./changes/composite-type.comment.js";
|
|
@@ -47,50 +47,21 @@ export function diffCompositeTypes(ctx, main, branch) {
|
|
|
47
47
|
// We compare default privileges against desired privileges to generate REVOKE/GRANT statements
|
|
48
48
|
// needed to reach the final desired state.
|
|
49
49
|
const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "composite_type", ct.schema ?? "");
|
|
50
|
+
const creatorFilteredDefaults = ct.owner !== ctx.currentUser
|
|
51
|
+
? effectiveDefaults.filter((p) => p.grantee !== ctx.currentUser)
|
|
52
|
+
: effectiveDefaults;
|
|
50
53
|
// Filter out PUBLIC's built-in default USAGE privilege (PostgreSQL grants it automatically)
|
|
51
54
|
// Reference: https://www.postgresql.org/docs/17/ddl-priv.html Table 5.2
|
|
52
55
|
// This prevents generating unnecessary "GRANT USAGE TO PUBLIC" statements
|
|
53
56
|
const desiredPrivileges = filterPublicBuiltInDefaults("composite_type", ct.privileges);
|
|
54
57
|
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
55
58
|
// and shouldn't be compared. Use the composite type owner as the reference.
|
|
56
|
-
const privilegeResults = diffPrivileges(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
void grantable;
|
|
63
|
-
changes.push(new GrantCompositeTypePrivileges({
|
|
64
|
-
compositeType: ct,
|
|
65
|
-
grantee,
|
|
66
|
-
privileges: list,
|
|
67
|
-
version: ctx.version,
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// Generate revoke changes
|
|
72
|
-
if (result.revokes.length > 0) {
|
|
73
|
-
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
74
|
-
for (const [grantable, list] of revokeGroups) {
|
|
75
|
-
void grantable;
|
|
76
|
-
changes.push(new RevokeCompositeTypePrivileges({
|
|
77
|
-
compositeType: ct,
|
|
78
|
-
grantee,
|
|
79
|
-
privileges: list,
|
|
80
|
-
version: ctx.version,
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Generate revoke grant option changes
|
|
85
|
-
if (result.revokeGrantOption.length > 0) {
|
|
86
|
-
changes.push(new RevokeGrantOptionCompositeTypePrivileges({
|
|
87
|
-
compositeType: ct,
|
|
88
|
-
grantee,
|
|
89
|
-
privilegeNames: result.revokeGrantOption,
|
|
90
|
-
version: ctx.version,
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
59
|
+
const privilegeResults = diffPrivileges(filterPublicBuiltInDefaults("composite_type", creatorFilteredDefaults), desiredPrivileges, ct.owner);
|
|
60
|
+
changes.push(...emitObjectPrivilegeChanges(privilegeResults, ct, ct, "compositeType", {
|
|
61
|
+
Grant: GrantCompositeTypePrivileges,
|
|
62
|
+
Revoke: RevokeCompositeTypePrivileges,
|
|
63
|
+
RevokeGrantOption: RevokeGrantOptionCompositeTypePrivileges,
|
|
64
|
+
}, ctx.version));
|
|
94
65
|
}
|
|
95
66
|
for (const compositeTypeId of dropped) {
|
|
96
67
|
changes.push(new DropCompositeType({ compositeType: main[compositeTypeId] }));
|
|
@@ -203,44 +174,12 @@ export function diffCompositeTypes(ctx, main, branch) {
|
|
|
203
174
|
const branchPrivilegesFiltered = filterPublicBuiltInDefaults("composite_type", branchCompositeType.privileges);
|
|
204
175
|
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
205
176
|
// and shouldn't be compared. Use branch owner as the reference.
|
|
206
|
-
const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchCompositeType.owner
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
void grantable;
|
|
213
|
-
changes.push(new GrantCompositeTypePrivileges({
|
|
214
|
-
compositeType: branchCompositeType,
|
|
215
|
-
grantee,
|
|
216
|
-
privileges: list,
|
|
217
|
-
version: ctx.version,
|
|
218
|
-
}));
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// Generate revoke changes
|
|
222
|
-
if (result.revokes.length > 0) {
|
|
223
|
-
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
224
|
-
for (const [grantable, list] of revokeGroups) {
|
|
225
|
-
void grantable;
|
|
226
|
-
changes.push(new RevokeCompositeTypePrivileges({
|
|
227
|
-
compositeType: mainCompositeType,
|
|
228
|
-
grantee,
|
|
229
|
-
privileges: list,
|
|
230
|
-
version: ctx.version,
|
|
231
|
-
}));
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
// Generate revoke grant option changes
|
|
235
|
-
if (result.revokeGrantOption.length > 0) {
|
|
236
|
-
changes.push(new RevokeGrantOptionCompositeTypePrivileges({
|
|
237
|
-
compositeType: mainCompositeType,
|
|
238
|
-
grantee,
|
|
239
|
-
privilegeNames: result.revokeGrantOption,
|
|
240
|
-
version: ctx.version,
|
|
241
|
-
}));
|
|
242
|
-
}
|
|
243
|
-
}
|
|
177
|
+
const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchCompositeType.owner);
|
|
178
|
+
changes.push(...emitObjectPrivilegeChanges(privilegeResults, branchCompositeType, mainCompositeType, "compositeType", {
|
|
179
|
+
Grant: GrantCompositeTypePrivileges,
|
|
180
|
+
Revoke: RevokeCompositeTypePrivileges,
|
|
181
|
+
RevokeGrantOption: RevokeGrantOptionCompositeTypePrivileges,
|
|
182
|
+
}, ctx.version));
|
|
244
183
|
// Note: Composite type renaming would also use ALTER TYPE ... RENAME TO ...
|
|
245
184
|
// But since our CompositeType model uses 'name' as the identity field,
|
|
246
185
|
// a name change would be handled as drop + create by diffObjects()
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Pool } from "pg";
|
|
2
2
|
import z from "zod";
|
|
3
3
|
import { BasePgModel, type TableLikeObject } from "../../base.model.ts";
|
|
4
4
|
import { type PrivilegeProps } from "../../base.privilege-diff.ts";
|
|
@@ -13,10 +13,10 @@ declare const compositeTypePropsSchema: z.ZodObject<{
|
|
|
13
13
|
has_subclasses: z.ZodBoolean;
|
|
14
14
|
is_populated: z.ZodBoolean;
|
|
15
15
|
replica_identity: z.ZodEnum<{
|
|
16
|
-
f: "f";
|
|
17
16
|
n: "n";
|
|
18
17
|
i: "i";
|
|
19
18
|
d: "d";
|
|
19
|
+
f: "f";
|
|
20
20
|
}>;
|
|
21
21
|
is_partition: z.ZodBoolean;
|
|
22
22
|
options: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
@@ -82,7 +82,7 @@ export declare class CompositeType extends BasePgModel implements TableLikeObjec
|
|
|
82
82
|
has_triggers: boolean;
|
|
83
83
|
has_subclasses: boolean;
|
|
84
84
|
is_populated: boolean;
|
|
85
|
-
replica_identity: "
|
|
85
|
+
replica_identity: "n" | "i" | "d" | "f";
|
|
86
86
|
is_partition: boolean;
|
|
87
87
|
options: string[] | null;
|
|
88
88
|
partition_bound: string | null;
|
|
@@ -129,7 +129,7 @@ export declare class CompositeType extends BasePgModel implements TableLikeObjec
|
|
|
129
129
|
has_triggers: boolean;
|
|
130
130
|
has_subclasses: boolean;
|
|
131
131
|
is_populated: boolean;
|
|
132
|
-
replica_identity: "
|
|
132
|
+
replica_identity: "n" | "i" | "d" | "f";
|
|
133
133
|
is_partition: boolean;
|
|
134
134
|
options: string[] | null;
|
|
135
135
|
partition_bound: string | null;
|
|
@@ -144,5 +144,5 @@ export declare class CompositeType extends BasePgModel implements TableLikeObjec
|
|
|
144
144
|
};
|
|
145
145
|
};
|
|
146
146
|
}
|
|
147
|
-
export declare function extractCompositeTypes(
|
|
147
|
+
export declare function extractCompositeTypes(pool: Pool): Promise<CompositeType[]>;
|
|
148
148
|
export {};
|