@supabase/pg-delta 0.0.0 → 1.0.0-alpha.0
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/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/cli/app.d.ts +1 -0
- package/dist/cli/app.js +26 -0
- package/dist/cli/bin/cli.d.ts +2 -0
- package/dist/cli/bin/cli.js +7 -0
- package/dist/cli/commands/apply.d.ts +5 -0
- package/dist/cli/commands/apply.js +85 -0
- package/dist/cli/commands/plan.d.ts +5 -0
- package/dist/cli/commands/plan.js +137 -0
- package/dist/cli/commands/sync.d.ts +5 -0
- package/dist/cli/commands/sync.js +141 -0
- package/dist/cli/formatters/index.d.ts +4 -0
- package/dist/cli/formatters/index.js +4 -0
- package/dist/cli/formatters/tree/tree-builder.d.ts +10 -0
- package/dist/cli/formatters/tree/tree-builder.js +333 -0
- package/dist/cli/formatters/tree/tree-renderer.d.ts +45 -0
- package/dist/cli/formatters/tree/tree-renderer.js +303 -0
- package/dist/cli/formatters/tree/tree.d.ts +8 -0
- package/dist/cli/formatters/tree/tree.js +161 -0
- package/dist/cli/utils/integrations.d.ts +13 -0
- package/dist/cli/utils/integrations.js +35 -0
- package/dist/cli/utils.d.ts +64 -0
- package/dist/cli/utils.js +160 -0
- package/dist/core/catalog.diff.d.ts +5 -0
- package/dist/core/catalog.diff.js +147 -0
- package/dist/core/catalog.model.d.ts +93 -0
- package/dist/core/catalog.model.js +254 -0
- package/dist/core/change.types.d.ts +22 -0
- package/dist/core/change.types.js +1 -0
- package/dist/core/context.d.ts +11 -0
- package/dist/core/context.js +12 -0
- package/dist/core/depend.d.ts +31 -0
- package/dist/core/depend.js +1833 -0
- package/dist/core/expand-replace-dependencies.d.ts +14 -0
- package/dist/core/expand-replace-dependencies.js +280 -0
- package/dist/core/fingerprint.d.ts +23 -0
- package/dist/core/fingerprint.js +174 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.js +14 -0
- package/dist/core/integrations/filter/dsl.d.ts +97 -0
- package/dist/core/integrations/filter/dsl.js +107 -0
- package/dist/core/integrations/filter/extractors.d.ts +12 -0
- package/dist/core/integrations/filter/extractors.js +136 -0
- package/dist/core/integrations/integration-dsl.d.ts +22 -0
- package/dist/core/integrations/integration-dsl.js +6 -0
- package/dist/core/integrations/integration.types.d.ts +5 -0
- package/dist/core/integrations/integration.types.js +1 -0
- package/dist/core/integrations/serialize/dsl.d.ts +58 -0
- package/dist/core/integrations/serialize/dsl.js +42 -0
- package/dist/core/main.d.ts +5 -0
- package/dist/core/main.js +44 -0
- package/dist/core/objects/aggregate/aggregate.diff.d.ts +10 -0
- package/dist/core/objects/aggregate/aggregate.diff.js +186 -0
- package/dist/core/objects/aggregate/aggregate.model.d.ts +174 -0
- package/dist/core/objects/aggregate/aggregate.model.js +297 -0
- package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +19 -0
- package/dist/core/objects/aggregate/changes/aggregate.alter.js +25 -0
- package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +17 -0
- package/dist/core/objects/aggregate/changes/aggregate.base.js +13 -0
- package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +23 -0
- package/dist/core/objects/aggregate/changes/aggregate.comment.js +44 -0
- package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +19 -0
- package/dist/core/objects/aggregate/changes/aggregate.create.js +228 -0
- package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +17 -0
- package/dist/core/objects/aggregate/changes/aggregate.drop.js +26 -0
- package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +62 -0
- package/dist/core/objects/aggregate/changes/aggregate.privilege.js +102 -0
- package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +6 -0
- package/dist/core/objects/aggregate/changes/aggregate.types.js +1 -0
- package/dist/core/objects/base.change.d.ts +46 -0
- package/dist/core/objects/base.change.js +38 -0
- package/dist/core/objects/base.default-privileges.d.ts +29 -0
- package/dist/core/objects/base.default-privileges.js +167 -0
- package/dist/core/objects/base.diff.d.ts +6 -0
- package/dist/core/objects/base.diff.js +12 -0
- package/dist/core/objects/base.model.d.ts +74 -0
- package/dist/core/objects/base.model.js +47 -0
- package/dist/core/objects/base.privilege-diff.d.ts +54 -0
- package/dist/core/objects/base.privilege-diff.js +216 -0
- package/dist/core/objects/base.privilege.d.ts +27 -0
- package/dist/core/objects/base.privilege.js +169 -0
- package/dist/core/objects/collation/changes/collation.alter.d.ts +45 -0
- package/dist/core/objects/collation/changes/collation.alter.js +52 -0
- package/dist/core/objects/collation/changes/collation.base.d.ts +17 -0
- package/dist/core/objects/collation/changes/collation.base.js +13 -0
- package/dist/core/objects/collation/changes/collation.comment.d.ts +26 -0
- package/dist/core/objects/collation/changes/collation.comment.js +50 -0
- package/dist/core/objects/collation/changes/collation.create.d.ts +32 -0
- package/dist/core/objects/collation/changes/collation.create.js +86 -0
- package/dist/core/objects/collation/changes/collation.drop.d.ts +22 -0
- package/dist/core/objects/collation/changes/collation.drop.js +31 -0
- package/dist/core/objects/collation/changes/collation.types.d.ts +5 -0
- package/dist/core/objects/collation/changes/collation.types.js +1 -0
- package/dist/core/objects/collation/collation.diff.d.ts +13 -0
- package/dist/core/objects/collation/collation.diff.js +85 -0
- package/dist/core/objects/collation/collation.model.d.ts +67 -0
- package/dist/core/objects/collation/collation.model.js +207 -0
- package/dist/core/objects/domain/changes/domain.alter.d.ts +143 -0
- package/dist/core/objects/domain/changes/domain.alter.js +191 -0
- package/dist/core/objects/domain/changes/domain.base.d.ts +17 -0
- package/dist/core/objects/domain/changes/domain.base.js +13 -0
- package/dist/core/objects/domain/changes/domain.comment.d.ts +25 -0
- package/dist/core/objects/domain/changes/domain.comment.js +47 -0
- package/dist/core/objects/domain/changes/domain.create.d.ts +30 -0
- package/dist/core/objects/domain/changes/domain.create.js +92 -0
- package/dist/core/objects/domain/changes/domain.drop.d.ts +22 -0
- package/dist/core/objects/domain/changes/domain.drop.js +28 -0
- package/dist/core/objects/domain/changes/domain.privilege.d.ts +97 -0
- package/dist/core/objects/domain/changes/domain.privilege.js +127 -0
- package/dist/core/objects/domain/changes/domain.types.d.ts +6 -0
- package/dist/core/objects/domain/changes/domain.types.js +1 -0
- package/dist/core/objects/domain/domain.diff.d.ts +18 -0
- package/dist/core/objects/domain/domain.diff.js +244 -0
- package/dist/core/objects/domain/domain.model.d.ts +103 -0
- package/dist/core/objects/domain/domain.model.js +172 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +44 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +51 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +17 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.base.js +13 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +23 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +46 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +25 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.create.js +55 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +22 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +28 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +5 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.types.js +1 -0
- package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +13 -0
- package/dist/core/objects/event-trigger/event-trigger.diff.js +81 -0
- package/dist/core/objects/event-trigger/event-trigger.model.d.ts +45 -0
- package/dist/core/objects/event-trigger/event-trigger.model.js +89 -0
- package/dist/core/objects/extension/changes/extension.alter.d.ts +44 -0
- package/dist/core/objects/extension/changes/extension.alter.js +51 -0
- package/dist/core/objects/extension/changes/extension.base.d.ts +17 -0
- package/dist/core/objects/extension/changes/extension.base.js +13 -0
- package/dist/core/objects/extension/changes/extension.comment.d.ts +26 -0
- package/dist/core/objects/extension/changes/extension.comment.js +46 -0
- package/dist/core/objects/extension/changes/extension.create.d.ts +25 -0
- package/dist/core/objects/extension/changes/extension.create.js +49 -0
- package/dist/core/objects/extension/changes/extension.drop.d.ts +22 -0
- package/dist/core/objects/extension/changes/extension.drop.js +28 -0
- package/dist/core/objects/extension/changes/extension.types.d.ts +5 -0
- package/dist/core/objects/extension/changes/extension.types.js +1 -0
- package/dist/core/objects/extension/extension.diff.d.ts +10 -0
- package/dist/core/objects/extension/extension.diff.js +65 -0
- package/dist/core/objects/extension/extension.model.d.ts +52 -0
- package/dist/core/objects/extension/extension.model.js +268 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +51 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +61 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +26 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +50 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +25 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +78 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +22 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +28 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +97 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +123 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +6 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +18 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +221 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +59 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +128 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +5 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +163 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +248 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +26 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +50 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +25 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +64 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +22 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +31 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +97 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +129 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +6 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +18 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +268 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +117 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +215 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +65 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +84 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +26 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +43 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +24 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +62 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +22 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +28 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +97 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +123 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +6 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +18 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +209 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +62 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.model.js +118 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +37 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +38 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +24 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +52 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +23 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +34 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +4 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.d.ts +10 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.js +77 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +36 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +85 -0
- package/dist/core/objects/index/changes/index.alter.d.ts +76 -0
- package/dist/core/objects/index/changes/index.alter.js +94 -0
- package/dist/core/objects/index/changes/index.base.d.ts +17 -0
- package/dist/core/objects/index/changes/index.base.js +13 -0
- package/dist/core/objects/index/changes/index.comment.d.ts +26 -0
- package/dist/core/objects/index/changes/index.comment.js +50 -0
- package/dist/core/objects/index/changes/index.create.d.ts +30 -0
- package/dist/core/objects/index/changes/index.create.js +53 -0
- package/dist/core/objects/index/changes/index.drop.d.ts +22 -0
- package/dist/core/objects/index/changes/index.drop.js +28 -0
- package/dist/core/objects/index/changes/index.types.d.ts +5 -0
- package/dist/core/objects/index/changes/index.types.js +1 -0
- package/dist/core/objects/index/changes/utils.d.ts +3 -0
- package/dist/core/objects/index/changes/utils.js +6 -0
- package/dist/core/objects/index/index.diff.d.ts +12 -0
- package/dist/core/objects/index/index.diff.js +182 -0
- package/dist/core/objects/index/index.model.d.ts +150 -0
- package/dist/core/objects/index/index.model.js +340 -0
- package/dist/core/objects/language/changes/language.alter.d.ts +32 -0
- package/dist/core/objects/language/changes/language.alter.js +30 -0
- package/dist/core/objects/language/changes/language.base.d.ts +17 -0
- package/dist/core/objects/language/changes/language.base.js +13 -0
- package/dist/core/objects/language/changes/language.comment.d.ts +26 -0
- package/dist/core/objects/language/changes/language.comment.js +45 -0
- package/dist/core/objects/language/changes/language.create.d.ts +25 -0
- package/dist/core/objects/language/changes/language.create.js +76 -0
- package/dist/core/objects/language/changes/language.drop.d.ts +22 -0
- package/dist/core/objects/language/changes/language.drop.js +31 -0
- package/dist/core/objects/language/changes/language.privilege.d.ts +97 -0
- package/dist/core/objects/language/changes/language.privilege.js +128 -0
- package/dist/core/objects/language/changes/language.types.d.ts +6 -0
- package/dist/core/objects/language/changes/language.types.js +1 -0
- package/dist/core/objects/language/language.diff.d.ts +15 -0
- package/dist/core/objects/language/language.diff.js +117 -0
- package/dist/core/objects/language/language.model.d.ts +62 -0
- package/dist/core/objects/language/language.model.js +128 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +67 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +63 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +17 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.base.js +13 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +53 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +112 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +35 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.create.js +71 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +26 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +42 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +105 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +151 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +6 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.types.js +1 -0
- package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +18 -0
- package/dist/core/objects/materialized-view/materialized-view.diff.js +335 -0
- package/dist/core/objects/materialized-view/materialized-view.model.d.ts +152 -0
- package/dist/core/objects/materialized-view/materialized-view.model.js +228 -0
- package/dist/core/objects/procedure/changes/procedure.alter.d.ts +143 -0
- package/dist/core/objects/procedure/changes/procedure.alter.js +207 -0
- package/dist/core/objects/procedure/changes/procedure.base.d.ts +17 -0
- package/dist/core/objects/procedure/changes/procedure.base.js +13 -0
- package/dist/core/objects/procedure/changes/procedure.comment.d.ts +26 -0
- package/dist/core/objects/procedure/changes/procedure.comment.js +52 -0
- package/dist/core/objects/procedure/changes/procedure.create.d.ts +42 -0
- package/dist/core/objects/procedure/changes/procedure.create.js +77 -0
- package/dist/core/objects/procedure/changes/procedure.drop.d.ts +23 -0
- package/dist/core/objects/procedure/changes/procedure.drop.js +37 -0
- package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +98 -0
- package/dist/core/objects/procedure/changes/procedure.privilege.js +144 -0
- package/dist/core/objects/procedure/changes/procedure.types.d.ts +6 -0
- package/dist/core/objects/procedure/changes/procedure.types.js +1 -0
- package/dist/core/objects/procedure/procedure.diff.d.ts +18 -0
- package/dist/core/objects/procedure/procedure.diff.js +282 -0
- package/dist/core/objects/procedure/procedure.model.d.ts +132 -0
- package/dist/core/objects/procedure/procedure.model.js +244 -0
- package/dist/core/objects/procedure/utils.d.ts +14 -0
- package/dist/core/objects/procedure/utils.js +55 -0
- package/dist/core/objects/publication/changes/publication.alter.d.ts +88 -0
- package/dist/core/objects/publication/changes/publication.alter.js +176 -0
- package/dist/core/objects/publication/changes/publication.base.d.ts +17 -0
- package/dist/core/objects/publication/changes/publication.base.js +13 -0
- package/dist/core/objects/publication/changes/publication.comment.d.ts +23 -0
- package/dist/core/objects/publication/changes/publication.comment.js +46 -0
- package/dist/core/objects/publication/changes/publication.create.d.ts +17 -0
- package/dist/core/objects/publication/changes/publication.create.js +61 -0
- package/dist/core/objects/publication/changes/publication.drop.d.ts +17 -0
- package/dist/core/objects/publication/changes/publication.drop.js +23 -0
- package/dist/core/objects/publication/changes/publication.types.d.ts +5 -0
- package/dist/core/objects/publication/changes/publication.types.js +1 -0
- package/dist/core/objects/publication/publication.diff.d.ts +5 -0
- package/dist/core/objects/publication/publication.diff.js +161 -0
- package/dist/core/objects/publication/publication.model.d.ts +96 -0
- package/dist/core/objects/publication/publication.model.js +186 -0
- package/dist/core/objects/publication/utils.d.ts +5 -0
- package/dist/core/objects/publication/utils.js +45 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +62 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +90 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.base.d.ts +17 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.base.js +13 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +23 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +51 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +27 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.create.js +79 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +22 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +33 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +5 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.types.js +1 -0
- package/dist/core/objects/rls-policy/rls-policy.diff.d.ts +10 -0
- package/dist/core/objects/rls-policy/rls-policy.diff.js +80 -0
- package/dist/core/objects/rls-policy/rls-policy.model.d.ts +52 -0
- package/dist/core/objects/rls-policy/rls-policy.model.js +127 -0
- package/dist/core/objects/role/changes/role.alter.d.ts +78 -0
- package/dist/core/objects/role/changes/role.alter.js +55 -0
- package/dist/core/objects/role/changes/role.base.d.ts +17 -0
- package/dist/core/objects/role/changes/role.base.js +13 -0
- package/dist/core/objects/role/changes/role.comment.d.ts +23 -0
- package/dist/core/objects/role/changes/role.comment.js +42 -0
- package/dist/core/objects/role/changes/role.create.d.ts +38 -0
- package/dist/core/objects/role/changes/role.create.js +83 -0
- package/dist/core/objects/role/changes/role.drop.d.ts +22 -0
- package/dist/core/objects/role/changes/role.drop.js +28 -0
- package/dist/core/objects/role/changes/role.privilege.d.ts +148 -0
- package/dist/core/objects/role/changes/role.privilege.js +283 -0
- package/dist/core/objects/role/changes/role.types.d.ts +6 -0
- package/dist/core/objects/role/changes/role.types.js +1 -0
- package/dist/core/objects/role/role.diff.d.ts +13 -0
- package/dist/core/objects/role/role.diff.js +386 -0
- package/dist/core/objects/role/role.model.d.ts +89 -0
- package/dist/core/objects/role/role.model.js +312 -0
- package/dist/core/objects/rule/changes/rule.alter.d.ts +22 -0
- package/dist/core/objects/rule/changes/rule.alter.js +58 -0
- package/dist/core/objects/rule/changes/rule.base.d.ts +17 -0
- package/dist/core/objects/rule/changes/rule.base.js +13 -0
- package/dist/core/objects/rule/changes/rule.comment.d.ts +22 -0
- package/dist/core/objects/rule/changes/rule.comment.js +51 -0
- package/dist/core/objects/rule/changes/rule.create.d.ts +14 -0
- package/dist/core/objects/rule/changes/rule.create.js +28 -0
- package/dist/core/objects/rule/changes/rule.drop.d.ts +12 -0
- package/dist/core/objects/rule/changes/rule.drop.js +23 -0
- package/dist/core/objects/rule/changes/rule.types.d.ts +5 -0
- package/dist/core/objects/rule/changes/rule.types.js +1 -0
- package/dist/core/objects/rule/rule.diff.d.ts +3 -0
- package/dist/core/objects/rule/rule.diff.js +53 -0
- package/dist/core/objects/rule/rule.model.d.ts +72 -0
- package/dist/core/objects/rule/rule.model.js +156 -0
- package/dist/core/objects/schema/changes/schema.alter.d.ts +32 -0
- package/dist/core/objects/schema/changes/schema.alter.js +25 -0
- package/dist/core/objects/schema/changes/schema.base.d.ts +17 -0
- package/dist/core/objects/schema/changes/schema.base.js +13 -0
- package/dist/core/objects/schema/changes/schema.comment.d.ts +23 -0
- package/dist/core/objects/schema/changes/schema.comment.js +43 -0
- package/dist/core/objects/schema/changes/schema.create.d.ts +27 -0
- package/dist/core/objects/schema/changes/schema.create.js +38 -0
- package/dist/core/objects/schema/changes/schema.drop.d.ts +22 -0
- package/dist/core/objects/schema/changes/schema.drop.js +28 -0
- package/dist/core/objects/schema/changes/schema.privilege.d.ts +97 -0
- package/dist/core/objects/schema/changes/schema.privilege.js +131 -0
- package/dist/core/objects/schema/changes/schema.types.d.ts +6 -0
- package/dist/core/objects/schema/changes/schema.types.js +1 -0
- package/dist/core/objects/schema/schema.diff.d.ts +18 -0
- package/dist/core/objects/schema/schema.diff.js +142 -0
- package/dist/core/objects/schema/schema.model.d.ts +47 -0
- package/dist/core/objects/schema/schema.model.js +91 -0
- package/dist/core/objects/sequence/changes/sequence.alter.d.ts +59 -0
- package/dist/core/objects/sequence/changes/sequence.alter.js +75 -0
- package/dist/core/objects/sequence/changes/sequence.base.d.ts +17 -0
- package/dist/core/objects/sequence/changes/sequence.base.js +13 -0
- package/dist/core/objects/sequence/changes/sequence.comment.d.ts +23 -0
- package/dist/core/objects/sequence/changes/sequence.comment.js +47 -0
- package/dist/core/objects/sequence/changes/sequence.create.d.ts +25 -0
- package/dist/core/objects/sequence/changes/sequence.create.js +78 -0
- package/dist/core/objects/sequence/changes/sequence.drop.d.ts +22 -0
- package/dist/core/objects/sequence/changes/sequence.drop.js +31 -0
- package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +101 -0
- package/dist/core/objects/sequence/changes/sequence.privilege.js +135 -0
- package/dist/core/objects/sequence/changes/sequence.types.d.ts +6 -0
- package/dist/core/objects/sequence/changes/sequence.types.js +1 -0
- package/dist/core/objects/sequence/sequence.diff.d.ts +20 -0
- package/dist/core/objects/sequence/sequence.diff.js +258 -0
- package/dist/core/objects/sequence/sequence.model.d.ts +76 -0
- package/dist/core/objects/sequence/sequence.model.js +169 -0
- package/dist/core/objects/subscription/changes/subscription.alter.d.ts +56 -0
- package/dist/core/objects/subscription/changes/subscription.alter.js +82 -0
- package/dist/core/objects/subscription/changes/subscription.base.d.ts +17 -0
- package/dist/core/objects/subscription/changes/subscription.base.js +13 -0
- package/dist/core/objects/subscription/changes/subscription.comment.d.ts +23 -0
- package/dist/core/objects/subscription/changes/subscription.comment.js +46 -0
- package/dist/core/objects/subscription/changes/subscription.create.d.ts +12 -0
- package/dist/core/objects/subscription/changes/subscription.create.js +52 -0
- package/dist/core/objects/subscription/changes/subscription.drop.d.ts +11 -0
- package/dist/core/objects/subscription/changes/subscription.drop.js +15 -0
- package/dist/core/objects/subscription/changes/subscription.types.d.ts +5 -0
- package/dist/core/objects/subscription/changes/subscription.types.js +1 -0
- package/dist/core/objects/subscription/subscription.diff.d.ts +5 -0
- package/dist/core/objects/subscription/subscription.diff.js +167 -0
- package/dist/core/objects/subscription/subscription.model.d.ts +80 -0
- package/dist/core/objects/subscription/subscription.model.js +166 -0
- package/dist/core/objects/subscription/utils.d.ts +37 -0
- package/dist/core/objects/subscription/utils.js +112 -0
- package/dist/core/objects/table/changes/table.alter.d.ts +357 -0
- package/dist/core/objects/table/changes/table.alter.js +607 -0
- package/dist/core/objects/table/changes/table.base.d.ts +17 -0
- package/dist/core/objects/table/changes/table.base.js +13 -0
- package/dist/core/objects/table/changes/table.comment.d.ts +106 -0
- package/dist/core/objects/table/changes/table.comment.js +175 -0
- package/dist/core/objects/table/changes/table.create.d.ts +33 -0
- package/dist/core/objects/table/changes/table.create.js +145 -0
- package/dist/core/objects/table/changes/table.drop.d.ts +22 -0
- package/dist/core/objects/table/changes/table.drop.js +35 -0
- package/dist/core/objects/table/changes/table.privilege.d.ts +107 -0
- package/dist/core/objects/table/changes/table.privilege.js +150 -0
- package/dist/core/objects/table/changes/table.types.d.ts +6 -0
- package/dist/core/objects/table/changes/table.types.js +1 -0
- package/dist/core/objects/table/table.diff.d.ts +18 -0
- package/dist/core/objects/table/table.diff.js +668 -0
- package/dist/core/objects/table/table.model.d.ts +341 -0
- package/dist/core/objects/table/table.model.js +426 -0
- package/dist/core/objects/trigger/changes/trigger.alter.d.ts +29 -0
- package/dist/core/objects/trigger/changes/trigger.alter.js +27 -0
- package/dist/core/objects/trigger/changes/trigger.base.d.ts +17 -0
- package/dist/core/objects/trigger/changes/trigger.base.js +13 -0
- package/dist/core/objects/trigger/changes/trigger.comment.d.ts +23 -0
- package/dist/core/objects/trigger/changes/trigger.comment.js +51 -0
- package/dist/core/objects/trigger/changes/trigger.create.d.ts +41 -0
- package/dist/core/objects/trigger/changes/trigger.create.js +61 -0
- package/dist/core/objects/trigger/changes/trigger.drop.d.ts +22 -0
- package/dist/core/objects/trigger/changes/trigger.drop.js +33 -0
- package/dist/core/objects/trigger/changes/trigger.types.d.ts +5 -0
- package/dist/core/objects/trigger/changes/trigger.types.js +1 -0
- package/dist/core/objects/trigger/trigger.diff.d.ts +11 -0
- package/dist/core/objects/trigger/trigger.diff.js +84 -0
- package/dist/core/objects/trigger/trigger.model.d.ts +92 -0
- package/dist/core/objects/trigger/trigger.model.js +235 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +81 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +123 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +17 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.base.js +13 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +53 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +108 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +23 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.create.js +72 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +22 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +31 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +97 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +131 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +6 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.types.js +1 -0
- package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +18 -0
- package/dist/core/objects/type/composite-type/composite-type.diff.js +250 -0
- package/dist/core/objects/type/composite-type/composite-type.model.d.ts +148 -0
- package/dist/core/objects/type/composite-type/composite-type.model.js +223 -0
- package/dist/core/objects/type/enum/changes/enum.alter.d.ts +52 -0
- package/dist/core/objects/type/enum/changes/enum.alter.js +60 -0
- package/dist/core/objects/type/enum/changes/enum.base.d.ts +17 -0
- package/dist/core/objects/type/enum/changes/enum.base.js +13 -0
- package/dist/core/objects/type/enum/changes/enum.comment.d.ts +26 -0
- package/dist/core/objects/type/enum/changes/enum.comment.js +47 -0
- package/dist/core/objects/type/enum/changes/enum.create.d.ts +22 -0
- package/dist/core/objects/type/enum/changes/enum.create.js +43 -0
- package/dist/core/objects/type/enum/changes/enum.drop.d.ts +22 -0
- package/dist/core/objects/type/enum/changes/enum.drop.js +28 -0
- package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +97 -0
- package/dist/core/objects/type/enum/changes/enum.privilege.js +131 -0
- package/dist/core/objects/type/enum/changes/enum.types.d.ts +6 -0
- package/dist/core/objects/type/enum/changes/enum.types.js +1 -0
- package/dist/core/objects/type/enum/enum.diff.d.ts +18 -0
- package/dist/core/objects/type/enum/enum.diff.js +268 -0
- package/dist/core/objects/type/enum/enum.model.d.ts +66 -0
- package/dist/core/objects/type/enum/enum.model.js +154 -0
- package/dist/core/objects/type/range/changes/range.alter.d.ts +33 -0
- package/dist/core/objects/type/range/changes/range.alter.js +30 -0
- package/dist/core/objects/type/range/changes/range.base.d.ts +17 -0
- package/dist/core/objects/type/range/changes/range.base.js +13 -0
- package/dist/core/objects/type/range/changes/range.comment.d.ts +26 -0
- package/dist/core/objects/type/range/changes/range.comment.js +47 -0
- package/dist/core/objects/type/range/changes/range.create.d.ts +31 -0
- package/dist/core/objects/type/range/changes/range.create.js +113 -0
- package/dist/core/objects/type/range/changes/range.drop.d.ts +22 -0
- package/dist/core/objects/type/range/changes/range.drop.js +28 -0
- package/dist/core/objects/type/range/changes/range.privilege.d.ts +97 -0
- package/dist/core/objects/type/range/changes/range.privilege.js +131 -0
- package/dist/core/objects/type/range/changes/range.types.d.ts +6 -0
- package/dist/core/objects/type/range/changes/range.types.js +1 -0
- package/dist/core/objects/type/range/range.diff.d.ts +18 -0
- package/dist/core/objects/type/range/range.diff.js +172 -0
- package/dist/core/objects/type/range/range.model.d.ts +81 -0
- package/dist/core/objects/type/range/range.model.js +165 -0
- package/dist/core/objects/type/type.types.d.ts +4 -0
- package/dist/core/objects/type/type.types.js +1 -0
- package/dist/core/objects/utils.d.ts +57 -0
- package/dist/core/objects/utils.js +137 -0
- package/dist/core/objects/view/changes/view.alter.d.ts +62 -0
- package/dist/core/objects/view/changes/view.alter.js +75 -0
- package/dist/core/objects/view/changes/view.base.d.ts +17 -0
- package/dist/core/objects/view/changes/view.base.js +13 -0
- package/dist/core/objects/view/changes/view.comment.d.ts +23 -0
- package/dist/core/objects/view/changes/view.comment.js +46 -0
- package/dist/core/objects/view/changes/view.create.d.ts +27 -0
- package/dist/core/objects/view/changes/view.create.js +57 -0
- package/dist/core/objects/view/changes/view.drop.d.ts +17 -0
- package/dist/core/objects/view/changes/view.drop.js +30 -0
- package/dist/core/objects/view/changes/view.privilege.d.ts +107 -0
- package/dist/core/objects/view/changes/view.privilege.js +150 -0
- package/dist/core/objects/view/changes/view.types.d.ts +6 -0
- package/dist/core/objects/view/changes/view.types.js +1 -0
- package/dist/core/objects/view/view.diff.d.ts +18 -0
- package/dist/core/objects/view/view.diff.js +270 -0
- package/dist/core/objects/view/view.model.d.ts +152 -0
- package/dist/core/objects/view/view.model.js +250 -0
- package/dist/core/plan/apply.d.ts +33 -0
- package/dist/core/plan/apply.js +112 -0
- package/dist/core/plan/create.d.ts +22 -0
- package/dist/core/plan/create.js +228 -0
- package/dist/core/plan/hierarchy.d.ts +19 -0
- package/dist/core/plan/hierarchy.js +488 -0
- package/dist/core/plan/index.d.ts +19 -0
- package/dist/core/plan/index.js +21 -0
- package/dist/core/plan/io.d.ts +12 -0
- package/dist/core/plan/io.js +17 -0
- package/dist/core/plan/risk.d.ts +10 -0
- package/dist/core/plan/risk.js +38 -0
- package/dist/core/plan/serialize.d.ts +26 -0
- package/dist/core/plan/serialize.js +176 -0
- package/dist/core/plan/statements.d.ts +8 -0
- package/dist/core/plan/statements.js +13 -0
- package/dist/core/plan/types.d.ts +153 -0
- package/dist/core/plan/types.js +32 -0
- package/dist/core/postgres-config.d.ts +8 -0
- package/dist/core/postgres-config.js +46 -0
- package/dist/core/sort/custom-constraints.d.ts +9 -0
- package/dist/core/sort/custom-constraints.js +133 -0
- package/dist/core/sort/debug-visualization.d.ts +8 -0
- package/dist/core/sort/debug-visualization.js +145 -0
- package/dist/core/sort/dependency-filter.d.ts +19 -0
- package/dist/core/sort/dependency-filter.js +152 -0
- package/dist/core/sort/graph-builder.d.ts +37 -0
- package/dist/core/sort/graph-builder.js +172 -0
- package/dist/core/sort/graph-utils.d.ts +14 -0
- package/dist/core/sort/graph-utils.js +41 -0
- package/dist/core/sort/logical-sort.d.ts +26 -0
- package/dist/core/sort/logical-sort.js +532 -0
- package/dist/core/sort/sort-changes.d.ts +28 -0
- package/dist/core/sort/sort-changes.js +147 -0
- package/dist/core/sort/topological-sort.d.ts +20 -0
- package/dist/core/sort/topological-sort.js +138 -0
- package/dist/core/sort/types.d.ts +102 -0
- package/dist/core/sort/types.js +1 -0
- package/dist/core/sort/utils.d.ts +23 -0
- package/dist/core/sort/utils.js +51 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +58 -12
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { diffObjects } from "../base.diff.js";
|
|
2
|
+
import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
|
|
3
|
+
import { AlterDomainAddConstraint, AlterDomainChangeOwner, AlterDomainDropConstraint, AlterDomainDropDefault, AlterDomainDropNotNull, AlterDomainSetDefault, AlterDomainSetNotNull, AlterDomainValidateConstraint, } from "./changes/domain.alter.js";
|
|
4
|
+
import { CreateCommentOnDomain, DropCommentOnDomain, } from "./changes/domain.comment.js";
|
|
5
|
+
import { CreateDomain } from "./changes/domain.create.js";
|
|
6
|
+
import { DropDomain } from "./changes/domain.drop.js";
|
|
7
|
+
import { GrantDomainPrivileges, RevokeDomainPrivileges, RevokeGrantOptionDomainPrivileges, } from "./changes/domain.privilege.js";
|
|
8
|
+
/**
|
|
9
|
+
* Diff two sets of domains from main and branch catalogs.
|
|
10
|
+
*
|
|
11
|
+
* @param ctx - Context containing version, currentUser, and defaultPrivilegeState
|
|
12
|
+
* @param main - The domains in the main catalog.
|
|
13
|
+
* @param branch - The domains in the branch catalog.
|
|
14
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
15
|
+
*/
|
|
16
|
+
export function diffDomains(ctx, main, branch) {
|
|
17
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
18
|
+
const changes = [];
|
|
19
|
+
for (const domainId of created) {
|
|
20
|
+
const newDomain = branch[domainId];
|
|
21
|
+
changes.push(new CreateDomain({ domain: newDomain }));
|
|
22
|
+
// OWNER: If the domain should be owned by someone other than the current user,
|
|
23
|
+
// emit ALTER DOMAIN ... OWNER TO after creation
|
|
24
|
+
if (newDomain.owner !== ctx.currentUser) {
|
|
25
|
+
changes.push(new AlterDomainChangeOwner({
|
|
26
|
+
domain: newDomain,
|
|
27
|
+
owner: newDomain.owner,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
if (newDomain.comment !== null) {
|
|
31
|
+
changes.push(new CreateCommentOnDomain({ domain: newDomain }));
|
|
32
|
+
}
|
|
33
|
+
// For unvalidated constraints, CREATE DOMAIN cannot specify NOT VALID.
|
|
34
|
+
// Add them after creation and validate to match branch state semantics.
|
|
35
|
+
// For already validated constraints, they are emitted inline in CREATE DOMAIN.
|
|
36
|
+
if (newDomain.constraints && newDomain.constraints.length > 0) {
|
|
37
|
+
for (const c of newDomain.constraints) {
|
|
38
|
+
if (c.validated === false) {
|
|
39
|
+
changes.push(new AlterDomainAddConstraint({ domain: newDomain, constraint: c }));
|
|
40
|
+
changes.push(new AlterDomainValidateConstraint({
|
|
41
|
+
domain: newDomain,
|
|
42
|
+
constraint: c,
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// PRIVILEGES: For created objects, compare against default privileges state
|
|
48
|
+
// The migration script will run ALTER DEFAULT PRIVILEGES before CREATE (via constraint spec),
|
|
49
|
+
// so objects are created with the default privileges state in effect.
|
|
50
|
+
// We compare default privileges against desired privileges to generate REVOKE/GRANT statements
|
|
51
|
+
// needed to reach the final desired state.
|
|
52
|
+
const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "domain", newDomain.schema ?? "");
|
|
53
|
+
// Filter out PUBLIC's built-in default USAGE privilege (PostgreSQL grants it automatically)
|
|
54
|
+
// Reference: https://www.postgresql.org/docs/17/ddl-priv.html Table 5.2
|
|
55
|
+
// This prevents generating unnecessary "GRANT USAGE TO PUBLIC" statements
|
|
56
|
+
const desiredPrivileges = filterPublicBuiltInDefaults("domain", newDomain.privileges);
|
|
57
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
58
|
+
// and shouldn't be compared. Use the domain owner as the reference.
|
|
59
|
+
const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, newDomain.owner, ctx.mainRoles);
|
|
60
|
+
// Generate grant changes
|
|
61
|
+
for (const [grantee, result] of privilegeResults) {
|
|
62
|
+
if (result.grants.length > 0) {
|
|
63
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
64
|
+
for (const [grantable, list] of grantGroups) {
|
|
65
|
+
void grantable;
|
|
66
|
+
changes.push(new GrantDomainPrivileges({
|
|
67
|
+
domain: newDomain,
|
|
68
|
+
grantee,
|
|
69
|
+
privileges: list,
|
|
70
|
+
version: ctx.version,
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Generate revoke changes
|
|
75
|
+
if (result.revokes.length > 0) {
|
|
76
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
77
|
+
for (const [grantable, list] of revokeGroups) {
|
|
78
|
+
void grantable;
|
|
79
|
+
changes.push(new RevokeDomainPrivileges({
|
|
80
|
+
domain: newDomain,
|
|
81
|
+
grantee,
|
|
82
|
+
privileges: list,
|
|
83
|
+
version: ctx.version,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Generate revoke grant option changes
|
|
88
|
+
if (result.revokeGrantOption.length > 0) {
|
|
89
|
+
changes.push(new RevokeGrantOptionDomainPrivileges({
|
|
90
|
+
domain: newDomain,
|
|
91
|
+
grantee,
|
|
92
|
+
privilegeNames: result.revokeGrantOption,
|
|
93
|
+
version: ctx.version,
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
for (const domainId of dropped) {
|
|
99
|
+
changes.push(new DropDomain({ domain: main[domainId] }));
|
|
100
|
+
}
|
|
101
|
+
for (const domainId of altered) {
|
|
102
|
+
const mainDomain = main[domainId];
|
|
103
|
+
const branchDomain = branch[domainId];
|
|
104
|
+
// DEFAULT
|
|
105
|
+
if (mainDomain.default_value !== branchDomain.default_value) {
|
|
106
|
+
if (branchDomain.default_value === null) {
|
|
107
|
+
changes.push(new AlterDomainDropDefault({ domain: mainDomain }));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
changes.push(new AlterDomainSetDefault({
|
|
111
|
+
domain: mainDomain,
|
|
112
|
+
defaultValue: branchDomain.default_value,
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// NOT NULL
|
|
117
|
+
if (mainDomain.not_null !== branchDomain.not_null) {
|
|
118
|
+
if (branchDomain.not_null) {
|
|
119
|
+
changes.push(new AlterDomainSetNotNull({ domain: mainDomain }));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
changes.push(new AlterDomainDropNotNull({ domain: mainDomain }));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// DOMAIN CONSTRAINTS
|
|
126
|
+
const mainByName = new Map(mainDomain.constraints.map((c) => [c.name, c]));
|
|
127
|
+
const branchByName = new Map(branchDomain.constraints.map((c) => [c.name, c]));
|
|
128
|
+
// Note: Constraint renames are modeled as drop+add because name is part
|
|
129
|
+
// of the identity we diff on. No dedicated rename class is generated here.
|
|
130
|
+
// Created
|
|
131
|
+
for (const [name, c] of branchByName) {
|
|
132
|
+
if (!mainByName.has(name)) {
|
|
133
|
+
changes.push(new AlterDomainAddConstraint({
|
|
134
|
+
domain: branchDomain,
|
|
135
|
+
constraint: c,
|
|
136
|
+
}));
|
|
137
|
+
if (!c.validated) {
|
|
138
|
+
changes.push(new AlterDomainValidateConstraint({
|
|
139
|
+
domain: branchDomain,
|
|
140
|
+
constraint: c,
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Dropped
|
|
146
|
+
for (const [name, c] of mainByName) {
|
|
147
|
+
if (!branchByName.has(name)) {
|
|
148
|
+
changes.push(new AlterDomainDropConstraint({
|
|
149
|
+
domain: mainDomain,
|
|
150
|
+
constraint: c,
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Altered (drop + add for now)
|
|
155
|
+
for (const [name, mainC] of mainByName) {
|
|
156
|
+
const branchC = branchByName.get(name);
|
|
157
|
+
if (!branchC)
|
|
158
|
+
continue;
|
|
159
|
+
const changed = mainC.validated !== branchC.validated ||
|
|
160
|
+
mainC.is_local !== branchC.is_local ||
|
|
161
|
+
mainC.no_inherit !== branchC.no_inherit ||
|
|
162
|
+
mainC.check_expression !== branchC.check_expression;
|
|
163
|
+
if (changed) {
|
|
164
|
+
changes.push(new AlterDomainDropConstraint({
|
|
165
|
+
domain: mainDomain,
|
|
166
|
+
constraint: mainC,
|
|
167
|
+
}));
|
|
168
|
+
changes.push(new AlterDomainAddConstraint({
|
|
169
|
+
domain: branchDomain,
|
|
170
|
+
constraint: branchC,
|
|
171
|
+
}));
|
|
172
|
+
if (!branchC.validated) {
|
|
173
|
+
changes.push(new AlterDomainValidateConstraint({
|
|
174
|
+
domain: branchDomain,
|
|
175
|
+
constraint: branchC,
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// OWNER
|
|
181
|
+
if (mainDomain.owner !== branchDomain.owner) {
|
|
182
|
+
changes.push(new AlterDomainChangeOwner({
|
|
183
|
+
domain: mainDomain,
|
|
184
|
+
owner: branchDomain.owner,
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
// COMMENT
|
|
188
|
+
if (mainDomain.comment !== branchDomain.comment) {
|
|
189
|
+
if (branchDomain.comment === null) {
|
|
190
|
+
changes.push(new DropCommentOnDomain({ domain: mainDomain }));
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
changes.push(new CreateCommentOnDomain({ domain: branchDomain }));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// PRIVILEGES
|
|
197
|
+
// Filter out PUBLIC's built-in default USAGE privilege from main catalog
|
|
198
|
+
// (PostgreSQL grants it automatically, so we shouldn't compare it)
|
|
199
|
+
const mainPrivilegesFiltered = filterPublicBuiltInDefaults("domain", mainDomain.privileges);
|
|
200
|
+
// Filter out PUBLIC's built-in default USAGE privilege from branch catalog
|
|
201
|
+
const branchPrivilegesFiltered = filterPublicBuiltInDefaults("domain", branchDomain.privileges);
|
|
202
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
203
|
+
// and shouldn't be compared. Use branch owner as the reference.
|
|
204
|
+
const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchDomain.owner, ctx.mainRoles);
|
|
205
|
+
for (const [grantee, result] of privilegeResults) {
|
|
206
|
+
// Generate grant changes
|
|
207
|
+
if (result.grants.length > 0) {
|
|
208
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
209
|
+
for (const [grantable, list] of grantGroups) {
|
|
210
|
+
void grantable;
|
|
211
|
+
changes.push(new GrantDomainPrivileges({
|
|
212
|
+
domain: branchDomain,
|
|
213
|
+
grantee,
|
|
214
|
+
privileges: list,
|
|
215
|
+
version: ctx.version,
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Generate revoke changes
|
|
220
|
+
if (result.revokes.length > 0) {
|
|
221
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
222
|
+
for (const [grantable, list] of revokeGroups) {
|
|
223
|
+
void grantable;
|
|
224
|
+
changes.push(new RevokeDomainPrivileges({
|
|
225
|
+
domain: mainDomain,
|
|
226
|
+
grantee,
|
|
227
|
+
privileges: list,
|
|
228
|
+
version: ctx.version,
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Generate revoke grant option changes
|
|
233
|
+
if (result.revokeGrantOption.length > 0) {
|
|
234
|
+
changes.push(new RevokeGrantOptionDomainPrivileges({
|
|
235
|
+
domain: mainDomain,
|
|
236
|
+
grantee,
|
|
237
|
+
privilegeNames: result.revokeGrantOption,
|
|
238
|
+
version: ctx.version,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return changes;
|
|
244
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { Sql } from "postgres";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { BasePgModel } from "../base.model.ts";
|
|
4
|
+
import { type PrivilegeProps } from "../base.privilege-diff.ts";
|
|
5
|
+
declare const domainConstraintPropsSchema: z.ZodObject<{
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
validated: z.ZodBoolean;
|
|
8
|
+
is_local: z.ZodBoolean;
|
|
9
|
+
no_inherit: z.ZodBoolean;
|
|
10
|
+
check_expression: z.ZodNullable<z.ZodString>;
|
|
11
|
+
}, z.z.core.$strip>;
|
|
12
|
+
declare const domainPropsSchema: z.ZodObject<{
|
|
13
|
+
schema: z.ZodString;
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
base_type: z.ZodString;
|
|
16
|
+
base_type_schema: z.ZodString;
|
|
17
|
+
base_type_str: z.ZodOptional<z.ZodString>;
|
|
18
|
+
not_null: z.ZodBoolean;
|
|
19
|
+
type_modifier: z.ZodNullable<z.ZodNumber>;
|
|
20
|
+
array_dimensions: z.ZodNullable<z.ZodNumber>;
|
|
21
|
+
collation: z.ZodNullable<z.ZodString>;
|
|
22
|
+
default_bin: z.ZodNullable<z.ZodString>;
|
|
23
|
+
default_value: z.ZodNullable<z.ZodString>;
|
|
24
|
+
owner: z.ZodString;
|
|
25
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
26
|
+
constraints: z.ZodArray<z.ZodObject<{
|
|
27
|
+
name: z.ZodString;
|
|
28
|
+
validated: z.ZodBoolean;
|
|
29
|
+
is_local: z.ZodBoolean;
|
|
30
|
+
no_inherit: z.ZodBoolean;
|
|
31
|
+
check_expression: z.ZodNullable<z.ZodString>;
|
|
32
|
+
}, z.z.core.$strip>>;
|
|
33
|
+
privileges: z.ZodArray<z.ZodObject<{
|
|
34
|
+
grantee: z.ZodString;
|
|
35
|
+
privilege: z.ZodString;
|
|
36
|
+
grantable: z.ZodBoolean;
|
|
37
|
+
columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
38
|
+
}, z.z.core.$strip>>;
|
|
39
|
+
}, z.z.core.$strip>;
|
|
40
|
+
export type DomainConstraintProps = z.infer<typeof domainConstraintPropsSchema>;
|
|
41
|
+
type DomainPrivilegeProps = PrivilegeProps;
|
|
42
|
+
export type DomainProps = z.infer<typeof domainPropsSchema>;
|
|
43
|
+
/**
|
|
44
|
+
* A domain is a user-defined data type that is based on another underlying type.
|
|
45
|
+
*
|
|
46
|
+
* @see https://www.postgresql.org/docs/17/domains.html
|
|
47
|
+
*/
|
|
48
|
+
export declare class Domain extends BasePgModel {
|
|
49
|
+
readonly schema: DomainProps["schema"];
|
|
50
|
+
readonly name: DomainProps["name"];
|
|
51
|
+
readonly base_type: DomainProps["base_type"];
|
|
52
|
+
readonly base_type_schema: DomainProps["base_type_schema"];
|
|
53
|
+
readonly base_type_str?: DomainProps["base_type_str"];
|
|
54
|
+
readonly not_null: DomainProps["not_null"];
|
|
55
|
+
readonly type_modifier: DomainProps["type_modifier"];
|
|
56
|
+
readonly array_dimensions: DomainProps["array_dimensions"];
|
|
57
|
+
readonly collation: DomainProps["collation"];
|
|
58
|
+
readonly default_bin: DomainProps["default_bin"];
|
|
59
|
+
readonly default_value: DomainProps["default_value"];
|
|
60
|
+
readonly owner: DomainProps["owner"];
|
|
61
|
+
readonly comment: DomainProps["comment"];
|
|
62
|
+
readonly constraints: DomainConstraintProps[];
|
|
63
|
+
readonly privileges: DomainPrivilegeProps[];
|
|
64
|
+
constructor(props: DomainProps);
|
|
65
|
+
get stableId(): `domain:${string}`;
|
|
66
|
+
get identityFields(): {
|
|
67
|
+
schema: string;
|
|
68
|
+
name: string;
|
|
69
|
+
};
|
|
70
|
+
get dataFields(): {
|
|
71
|
+
base_type: string;
|
|
72
|
+
base_type_schema: string;
|
|
73
|
+
not_null: boolean;
|
|
74
|
+
type_modifier: number | null;
|
|
75
|
+
array_dimensions: number | null;
|
|
76
|
+
collation: string | null;
|
|
77
|
+
default_bin: string | null;
|
|
78
|
+
default_value: string | null;
|
|
79
|
+
owner: string;
|
|
80
|
+
comment: string | null;
|
|
81
|
+
constraints: {
|
|
82
|
+
name: string;
|
|
83
|
+
validated: boolean;
|
|
84
|
+
is_local: boolean;
|
|
85
|
+
no_inherit: boolean;
|
|
86
|
+
check_expression: string | null;
|
|
87
|
+
}[];
|
|
88
|
+
privileges: {
|
|
89
|
+
grantee: string;
|
|
90
|
+
privilege: string;
|
|
91
|
+
grantable: boolean;
|
|
92
|
+
columns?: string[] | null | undefined;
|
|
93
|
+
}[];
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Extract all domains from the database.
|
|
98
|
+
*
|
|
99
|
+
* @param sql - The SQL client.
|
|
100
|
+
* @returns A list of domains.
|
|
101
|
+
*/
|
|
102
|
+
export declare function extractDomains(sql: Sql): Promise<Domain[]>;
|
|
103
|
+
export {};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../base.model.js";
|
|
3
|
+
import { privilegePropsSchema, } from "../base.privilege-diff.js";
|
|
4
|
+
const domainConstraintPropsSchema = z.object({
|
|
5
|
+
name: z.string(),
|
|
6
|
+
validated: z.boolean(),
|
|
7
|
+
is_local: z.boolean(),
|
|
8
|
+
no_inherit: z.boolean(),
|
|
9
|
+
check_expression: z.string().nullable(),
|
|
10
|
+
});
|
|
11
|
+
const domainPropsSchema = z.object({
|
|
12
|
+
schema: z.string(),
|
|
13
|
+
name: z.string(),
|
|
14
|
+
base_type: z.string(),
|
|
15
|
+
base_type_schema: z.string(),
|
|
16
|
+
base_type_str: z.string().optional(),
|
|
17
|
+
not_null: z.boolean(),
|
|
18
|
+
type_modifier: z.number().nullable(),
|
|
19
|
+
array_dimensions: z.number().nullable(),
|
|
20
|
+
collation: z.string().nullable(),
|
|
21
|
+
default_bin: z.string().nullable(),
|
|
22
|
+
default_value: z.string().nullable(),
|
|
23
|
+
owner: z.string(),
|
|
24
|
+
comment: z.string().nullable(),
|
|
25
|
+
constraints: z.array(domainConstraintPropsSchema),
|
|
26
|
+
privileges: z.array(privilegePropsSchema),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* A domain is a user-defined data type that is based on another underlying type.
|
|
30
|
+
*
|
|
31
|
+
* @see https://www.postgresql.org/docs/17/domains.html
|
|
32
|
+
*/
|
|
33
|
+
export class Domain extends BasePgModel {
|
|
34
|
+
schema;
|
|
35
|
+
name;
|
|
36
|
+
base_type;
|
|
37
|
+
base_type_schema;
|
|
38
|
+
base_type_str;
|
|
39
|
+
not_null;
|
|
40
|
+
type_modifier;
|
|
41
|
+
array_dimensions;
|
|
42
|
+
collation;
|
|
43
|
+
default_bin;
|
|
44
|
+
default_value;
|
|
45
|
+
owner;
|
|
46
|
+
comment;
|
|
47
|
+
constraints;
|
|
48
|
+
privileges;
|
|
49
|
+
constructor(props) {
|
|
50
|
+
super();
|
|
51
|
+
// Identity fields
|
|
52
|
+
this.schema = props.schema;
|
|
53
|
+
this.name = props.name;
|
|
54
|
+
// Data fields
|
|
55
|
+
this.base_type = props.base_type;
|
|
56
|
+
this.base_type_schema = props.base_type_schema;
|
|
57
|
+
this.base_type_str = props.base_type_str;
|
|
58
|
+
this.not_null = props.not_null;
|
|
59
|
+
this.type_modifier = props.type_modifier;
|
|
60
|
+
this.array_dimensions = props.array_dimensions;
|
|
61
|
+
this.collation = props.collation;
|
|
62
|
+
this.default_bin = props.default_bin;
|
|
63
|
+
this.default_value = props.default_value;
|
|
64
|
+
this.owner = props.owner;
|
|
65
|
+
this.comment = props.comment;
|
|
66
|
+
this.constraints = props.constraints;
|
|
67
|
+
this.privileges = props.privileges;
|
|
68
|
+
}
|
|
69
|
+
get stableId() {
|
|
70
|
+
return `domain:${this.schema}.${this.name}`;
|
|
71
|
+
}
|
|
72
|
+
get identityFields() {
|
|
73
|
+
return {
|
|
74
|
+
schema: this.schema,
|
|
75
|
+
name: this.name,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
get dataFields() {
|
|
79
|
+
return {
|
|
80
|
+
base_type: this.base_type,
|
|
81
|
+
base_type_schema: this.base_type_schema,
|
|
82
|
+
not_null: this.not_null,
|
|
83
|
+
type_modifier: this.type_modifier,
|
|
84
|
+
array_dimensions: this.array_dimensions,
|
|
85
|
+
collation: this.collation,
|
|
86
|
+
default_bin: this.default_bin,
|
|
87
|
+
default_value: this.default_value,
|
|
88
|
+
owner: this.owner,
|
|
89
|
+
comment: this.comment,
|
|
90
|
+
constraints: this.constraints,
|
|
91
|
+
privileges: this.privileges,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Extract all domains from the database.
|
|
97
|
+
*
|
|
98
|
+
* @param sql - The SQL client.
|
|
99
|
+
* @returns A list of domains.
|
|
100
|
+
*/
|
|
101
|
+
export async function extractDomains(sql) {
|
|
102
|
+
return sql.begin(async (sql) => {
|
|
103
|
+
await sql `set search_path = ''`;
|
|
104
|
+
const domainRows = await sql `
|
|
105
|
+
with extension_oids as (
|
|
106
|
+
select
|
|
107
|
+
objid
|
|
108
|
+
from
|
|
109
|
+
pg_depend d
|
|
110
|
+
where
|
|
111
|
+
d.refclassid = 'pg_extension'::regclass
|
|
112
|
+
and d.classid = 'pg_type'::regclass
|
|
113
|
+
)
|
|
114
|
+
select
|
|
115
|
+
t.typnamespace::regnamespace::text as schema,
|
|
116
|
+
quote_ident(t.typname) as name,
|
|
117
|
+
bt.typname as base_type,
|
|
118
|
+
bt.typnamespace::regnamespace::text as base_type_schema,
|
|
119
|
+
format_type(t.typbasetype, t.typtypmod) as base_type_str,
|
|
120
|
+
t.typnotnull as not_null,
|
|
121
|
+
t.typtypmod as type_modifier,
|
|
122
|
+
t.typndims as array_dimensions,
|
|
123
|
+
case when t.typcollation <> bt.typcollation then quote_ident(c.collname) else null end as collation,
|
|
124
|
+
pg_get_expr(t.typdefaultbin, 0) as default_bin,
|
|
125
|
+
t.typdefault as default_value,
|
|
126
|
+
t.typowner::regrole::text as owner,
|
|
127
|
+
obj_description(t.oid, 'pg_type') as comment,
|
|
128
|
+
coalesce(
|
|
129
|
+
(
|
|
130
|
+
select json_agg(
|
|
131
|
+
json_build_object(
|
|
132
|
+
'name', quote_ident(con.conname),
|
|
133
|
+
'validated', con.convalidated,
|
|
134
|
+
'is_local', con.conislocal,
|
|
135
|
+
'no_inherit', con.connoinherit,
|
|
136
|
+
'check_expression', pg_get_expr(con.conbin, 0)
|
|
137
|
+
)
|
|
138
|
+
order by con.conname
|
|
139
|
+
)
|
|
140
|
+
from pg_catalog.pg_constraint con
|
|
141
|
+
where con.contypid = t.oid
|
|
142
|
+
), '[]'
|
|
143
|
+
) as constraints,
|
|
144
|
+
coalesce(
|
|
145
|
+
(
|
|
146
|
+
select json_agg(
|
|
147
|
+
json_build_object(
|
|
148
|
+
'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
|
|
149
|
+
'privilege', x.privilege_type,
|
|
150
|
+
'grantable', x.is_grantable
|
|
151
|
+
)
|
|
152
|
+
order by x.grantee, x.privilege_type
|
|
153
|
+
)
|
|
154
|
+
from lateral aclexplode(t.typacl) as x(grantor, grantee, privilege_type, is_grantable)
|
|
155
|
+
), '[]'
|
|
156
|
+
) as privileges
|
|
157
|
+
from
|
|
158
|
+
pg_catalog.pg_type t
|
|
159
|
+
inner join pg_catalog.pg_type bt on bt.oid = t.typbasetype
|
|
160
|
+
left join pg_catalog.pg_collation c on c.oid = t.typcollation
|
|
161
|
+
left outer join extension_oids e on t.oid = e.objid
|
|
162
|
+
where not t.typnamespace::regnamespace::text like any(array['pg\\_%', 'information\\_schema'])
|
|
163
|
+
and e.objid is null
|
|
164
|
+
and t.typtype = 'd'
|
|
165
|
+
order by
|
|
166
|
+
1, 2;
|
|
167
|
+
`;
|
|
168
|
+
// Validate and parse each row using the Zod schema
|
|
169
|
+
const validatedRows = domainRows.map((row) => domainPropsSchema.parse(row));
|
|
170
|
+
return validatedRows.map((row) => new Domain(row));
|
|
171
|
+
});
|
|
172
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { EventTrigger } from "../event-trigger.model.ts";
|
|
2
|
+
import { AlterEventTriggerChange } from "./event-trigger.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Alter an event trigger.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-altereventtrigger.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* ALTER EVENT TRIGGER name DISABLE
|
|
11
|
+
* ALTER EVENT TRIGGER name ENABLE [ REPLICA | ALWAYS ]
|
|
12
|
+
* ALTER EVENT TRIGGER name OWNER TO { newowner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
13
|
+
* ALTER EVENT TRIGGER name RENAME TO newname
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export type AlterEventTrigger = AlterEventTriggerChangeOwner | AlterEventTriggerSetEnabled;
|
|
17
|
+
/**
|
|
18
|
+
* ALTER EVENT TRIGGER ... OWNER TO ...
|
|
19
|
+
*/
|
|
20
|
+
export declare class AlterEventTriggerChangeOwner extends AlterEventTriggerChange {
|
|
21
|
+
readonly eventTrigger: EventTrigger;
|
|
22
|
+
readonly owner: string;
|
|
23
|
+
readonly scope: "object";
|
|
24
|
+
constructor(props: {
|
|
25
|
+
eventTrigger: EventTrigger;
|
|
26
|
+
owner: string;
|
|
27
|
+
});
|
|
28
|
+
get requires(): `eventTrigger:${string}`[];
|
|
29
|
+
serialize(): string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* ALTER EVENT TRIGGER ... ENABLE/DISABLE ...
|
|
33
|
+
*/
|
|
34
|
+
export declare class AlterEventTriggerSetEnabled extends AlterEventTriggerChange {
|
|
35
|
+
readonly eventTrigger: EventTrigger;
|
|
36
|
+
readonly enabled: EventTrigger["enabled"];
|
|
37
|
+
readonly scope: "object";
|
|
38
|
+
constructor(props: {
|
|
39
|
+
eventTrigger: EventTrigger;
|
|
40
|
+
enabled: EventTrigger["enabled"];
|
|
41
|
+
});
|
|
42
|
+
get requires(): `eventTrigger:${string}`[];
|
|
43
|
+
serialize(): string;
|
|
44
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AlterEventTriggerChange } from "./event-trigger.base.js";
|
|
2
|
+
/**
|
|
3
|
+
* ALTER EVENT TRIGGER ... OWNER TO ...
|
|
4
|
+
*/
|
|
5
|
+
export class AlterEventTriggerChangeOwner extends AlterEventTriggerChange {
|
|
6
|
+
eventTrigger;
|
|
7
|
+
owner;
|
|
8
|
+
scope = "object";
|
|
9
|
+
constructor(props) {
|
|
10
|
+
super();
|
|
11
|
+
this.eventTrigger = props.eventTrigger;
|
|
12
|
+
this.owner = props.owner;
|
|
13
|
+
}
|
|
14
|
+
get requires() {
|
|
15
|
+
return [this.eventTrigger.stableId];
|
|
16
|
+
}
|
|
17
|
+
serialize() {
|
|
18
|
+
return [
|
|
19
|
+
"ALTER EVENT TRIGGER",
|
|
20
|
+
this.eventTrigger.name,
|
|
21
|
+
"OWNER TO",
|
|
22
|
+
this.owner,
|
|
23
|
+
].join(" ");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const ENABLED_SQL = {
|
|
27
|
+
O: "ENABLE",
|
|
28
|
+
D: "DISABLE",
|
|
29
|
+
R: "ENABLE REPLICA",
|
|
30
|
+
A: "ENABLE ALWAYS",
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* ALTER EVENT TRIGGER ... ENABLE/DISABLE ...
|
|
34
|
+
*/
|
|
35
|
+
export class AlterEventTriggerSetEnabled extends AlterEventTriggerChange {
|
|
36
|
+
eventTrigger;
|
|
37
|
+
enabled;
|
|
38
|
+
scope = "object";
|
|
39
|
+
constructor(props) {
|
|
40
|
+
super();
|
|
41
|
+
this.eventTrigger = props.eventTrigger;
|
|
42
|
+
this.enabled = props.enabled;
|
|
43
|
+
}
|
|
44
|
+
get requires() {
|
|
45
|
+
return [this.eventTrigger.stableId];
|
|
46
|
+
}
|
|
47
|
+
serialize() {
|
|
48
|
+
const clause = ENABLED_SQL[this.enabled];
|
|
49
|
+
return ["ALTER EVENT TRIGGER", this.eventTrigger.name, clause].join(" ");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { EventTrigger } from "../event-trigger.model.ts";
|
|
3
|
+
declare abstract class BaseEventTriggerChange extends BaseChange {
|
|
4
|
+
abstract readonly eventTrigger: EventTrigger;
|
|
5
|
+
abstract readonly scope: "object" | "comment";
|
|
6
|
+
readonly objectType: "event_trigger";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateEventTriggerChange extends BaseEventTriggerChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterEventTriggerChange extends BaseEventTriggerChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropEventTriggerChange extends BaseEventTriggerChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.js";
|
|
2
|
+
class BaseEventTriggerChange extends BaseChange {
|
|
3
|
+
objectType = "event_trigger";
|
|
4
|
+
}
|
|
5
|
+
export class CreateEventTriggerChange extends BaseEventTriggerChange {
|
|
6
|
+
operation = "create";
|
|
7
|
+
}
|
|
8
|
+
export class AlterEventTriggerChange extends BaseEventTriggerChange {
|
|
9
|
+
operation = "alter";
|
|
10
|
+
}
|
|
11
|
+
export class DropEventTriggerChange extends BaseEventTriggerChange {
|
|
12
|
+
operation = "drop";
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EventTrigger } from "../event-trigger.model.ts";
|
|
2
|
+
import { CreateEventTriggerChange, DropEventTriggerChange } from "./event-trigger.base.ts";
|
|
3
|
+
export type CommentEventTrigger = CreateCommentOnEventTrigger | DropCommentOnEventTrigger;
|
|
4
|
+
export declare class CreateCommentOnEventTrigger extends CreateEventTriggerChange {
|
|
5
|
+
readonly eventTrigger: EventTrigger;
|
|
6
|
+
readonly scope: "comment";
|
|
7
|
+
constructor(props: {
|
|
8
|
+
eventTrigger: EventTrigger;
|
|
9
|
+
});
|
|
10
|
+
get creates(): `comment:${string}`[];
|
|
11
|
+
get requires(): `eventTrigger:${string}`[];
|
|
12
|
+
serialize(): string;
|
|
13
|
+
}
|
|
14
|
+
export declare class DropCommentOnEventTrigger extends DropEventTriggerChange {
|
|
15
|
+
readonly eventTrigger: EventTrigger;
|
|
16
|
+
readonly scope: "comment";
|
|
17
|
+
constructor(props: {
|
|
18
|
+
eventTrigger: EventTrigger;
|
|
19
|
+
});
|
|
20
|
+
get drops(): `comment:${string}`[];
|
|
21
|
+
get requires(): (`comment:${string}` | `eventTrigger:${string}`)[];
|
|
22
|
+
serialize(): string;
|
|
23
|
+
}
|