@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,50 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../../base.change.js";
|
|
2
|
+
import { stableId } from "../../../utils.js";
|
|
3
|
+
import { CreateForeignDataWrapperChange, DropForeignDataWrapperChange, } from "./foreign-data-wrapper.base.js";
|
|
4
|
+
export class CreateCommentOnForeignDataWrapper extends CreateForeignDataWrapperChange {
|
|
5
|
+
foreignDataWrapper;
|
|
6
|
+
scope = "comment";
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super();
|
|
9
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
10
|
+
}
|
|
11
|
+
get creates() {
|
|
12
|
+
return [stableId.comment(this.foreignDataWrapper.stableId)];
|
|
13
|
+
}
|
|
14
|
+
get requires() {
|
|
15
|
+
return [this.foreignDataWrapper.stableId];
|
|
16
|
+
}
|
|
17
|
+
serialize() {
|
|
18
|
+
return [
|
|
19
|
+
"COMMENT ON FOREIGN DATA WRAPPER",
|
|
20
|
+
this.foreignDataWrapper.name,
|
|
21
|
+
"IS",
|
|
22
|
+
// biome-ignore lint/style/noNonNullAssertion: comment is not nullable in this case
|
|
23
|
+
quoteLiteral(this.foreignDataWrapper.comment),
|
|
24
|
+
].join(" ");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class DropCommentOnForeignDataWrapper extends DropForeignDataWrapperChange {
|
|
28
|
+
foreignDataWrapper;
|
|
29
|
+
scope = "comment";
|
|
30
|
+
constructor(props) {
|
|
31
|
+
super();
|
|
32
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
33
|
+
}
|
|
34
|
+
get drops() {
|
|
35
|
+
return [stableId.comment(this.foreignDataWrapper.stableId)];
|
|
36
|
+
}
|
|
37
|
+
get requires() {
|
|
38
|
+
return [
|
|
39
|
+
stableId.comment(this.foreignDataWrapper.stableId),
|
|
40
|
+
this.foreignDataWrapper.stableId,
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
serialize() {
|
|
44
|
+
return [
|
|
45
|
+
"COMMENT ON FOREIGN DATA WRAPPER",
|
|
46
|
+
this.foreignDataWrapper.name,
|
|
47
|
+
"IS NULL",
|
|
48
|
+
].join(" ");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ForeignDataWrapper } from "../foreign-data-wrapper.model.ts";
|
|
2
|
+
import { CreateForeignDataWrapperChange } from "./foreign-data-wrapper.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Create a foreign data wrapper.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-createforeigndatawrapper.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* CREATE FOREIGN DATA WRAPPER name
|
|
11
|
+
* [ HANDLER handler_function | NO HANDLER ]
|
|
12
|
+
* [ VALIDATOR validator_function | NO VALIDATOR ]
|
|
13
|
+
* [ OPTIONS ( option 'value' [, ... ] ) ]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class CreateForeignDataWrapper extends CreateForeignDataWrapperChange {
|
|
17
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
18
|
+
readonly scope: "object";
|
|
19
|
+
constructor(props: {
|
|
20
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
21
|
+
});
|
|
22
|
+
get creates(): `foreignDataWrapper:${string}`[];
|
|
23
|
+
get requires(): string[];
|
|
24
|
+
serialize(): string;
|
|
25
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../../base.change.js";
|
|
2
|
+
import { stableId } from "../../../utils.js";
|
|
3
|
+
import { CreateForeignDataWrapperChange } from "./foreign-data-wrapper.base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create a foreign data wrapper.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-createforeigndatawrapper.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* CREATE FOREIGN DATA WRAPPER name
|
|
12
|
+
* [ HANDLER handler_function | NO HANDLER ]
|
|
13
|
+
* [ VALIDATOR validator_function | NO VALIDATOR ]
|
|
14
|
+
* [ OPTIONS ( option 'value' [, ... ] ) ]
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class CreateForeignDataWrapper extends CreateForeignDataWrapperChange {
|
|
18
|
+
foreignDataWrapper;
|
|
19
|
+
scope = "object";
|
|
20
|
+
constructor(props) {
|
|
21
|
+
super();
|
|
22
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
23
|
+
}
|
|
24
|
+
get creates() {
|
|
25
|
+
return [this.foreignDataWrapper.stableId];
|
|
26
|
+
}
|
|
27
|
+
get requires() {
|
|
28
|
+
const dependencies = new Set();
|
|
29
|
+
// Owner dependency
|
|
30
|
+
dependencies.add(stableId.role(this.foreignDataWrapper.owner));
|
|
31
|
+
// Handler function dependency (if specified)
|
|
32
|
+
if (this.foreignDataWrapper.handler) {
|
|
33
|
+
// Handler is stored as "schema.function_name(args)"
|
|
34
|
+
// We need to parse it to get the procedure stableId
|
|
35
|
+
// For now, we'll skip this dependency as it's complex to parse
|
|
36
|
+
// TODO: Parse handler function reference to add procedure dependency
|
|
37
|
+
}
|
|
38
|
+
// Validator function dependency (if specified)
|
|
39
|
+
if (this.foreignDataWrapper.validator) {
|
|
40
|
+
// Similar to handler
|
|
41
|
+
// TODO: Parse validator function reference to add procedure dependency
|
|
42
|
+
}
|
|
43
|
+
return Array.from(dependencies);
|
|
44
|
+
}
|
|
45
|
+
serialize() {
|
|
46
|
+
const parts = ["CREATE FOREIGN DATA WRAPPER"];
|
|
47
|
+
// Add FDW name
|
|
48
|
+
parts.push(this.foreignDataWrapper.name);
|
|
49
|
+
// Add HANDLER clause
|
|
50
|
+
if (this.foreignDataWrapper.handler) {
|
|
51
|
+
parts.push("HANDLER", this.foreignDataWrapper.handler);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
parts.push("NO HANDLER");
|
|
55
|
+
}
|
|
56
|
+
// Add VALIDATOR clause
|
|
57
|
+
if (this.foreignDataWrapper.validator) {
|
|
58
|
+
parts.push("VALIDATOR", this.foreignDataWrapper.validator);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
parts.push("NO VALIDATOR");
|
|
62
|
+
}
|
|
63
|
+
// Add OPTIONS clause
|
|
64
|
+
if (this.foreignDataWrapper.options &&
|
|
65
|
+
this.foreignDataWrapper.options.length > 0) {
|
|
66
|
+
const optionPairs = [];
|
|
67
|
+
for (let i = 0; i < this.foreignDataWrapper.options.length; i += 2) {
|
|
68
|
+
if (i + 1 < this.foreignDataWrapper.options.length) {
|
|
69
|
+
optionPairs.push(`${this.foreignDataWrapper.options[i]} ${quoteLiteral(this.foreignDataWrapper.options[i + 1])}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (optionPairs.length > 0) {
|
|
73
|
+
parts.push(`OPTIONS (${optionPairs.join(", ")})`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return parts.join(" ");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ForeignDataWrapper } from "../foreign-data-wrapper.model.ts";
|
|
2
|
+
import { DropForeignDataWrapperChange } from "./foreign-data-wrapper.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Drop a foreign data wrapper.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-dropforeigndatawrapper.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare class DropForeignDataWrapper extends DropForeignDataWrapperChange {
|
|
14
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
15
|
+
readonly scope: "object";
|
|
16
|
+
constructor(props: {
|
|
17
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
18
|
+
});
|
|
19
|
+
get drops(): `foreignDataWrapper:${string}`[];
|
|
20
|
+
get requires(): `foreignDataWrapper:${string}`[];
|
|
21
|
+
serialize(): string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DropForeignDataWrapperChange } from "./foreign-data-wrapper.base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Drop a foreign data wrapper.
|
|
4
|
+
*
|
|
5
|
+
* @see https://www.postgresql.org/docs/17/sql-dropforeigndatawrapper.html
|
|
6
|
+
*
|
|
7
|
+
* Synopsis
|
|
8
|
+
* ```sql
|
|
9
|
+
* DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export class DropForeignDataWrapper extends DropForeignDataWrapperChange {
|
|
13
|
+
foreignDataWrapper;
|
|
14
|
+
scope = "object";
|
|
15
|
+
constructor(props) {
|
|
16
|
+
super();
|
|
17
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
18
|
+
}
|
|
19
|
+
get drops() {
|
|
20
|
+
return [this.foreignDataWrapper.stableId];
|
|
21
|
+
}
|
|
22
|
+
get requires() {
|
|
23
|
+
return [this.foreignDataWrapper.stableId];
|
|
24
|
+
}
|
|
25
|
+
serialize() {
|
|
26
|
+
return ["DROP FOREIGN DATA WRAPPER", this.foreignDataWrapper.name].join(" ");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ForeignDataWrapper } from "../foreign-data-wrapper.model.ts";
|
|
2
|
+
import { AlterForeignDataWrapperChange } from "./foreign-data-wrapper.base.ts";
|
|
3
|
+
export type ForeignDataWrapperPrivilege = GrantForeignDataWrapperPrivileges | RevokeForeignDataWrapperPrivileges | RevokeGrantOptionForeignDataWrapperPrivileges;
|
|
4
|
+
/**
|
|
5
|
+
* Grant privileges on a foreign data wrapper.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-grant.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* GRANT { USAGE | ALL [ PRIVILEGES ] }
|
|
12
|
+
* ON FOREIGN DATA WRAPPER name [, ...]
|
|
13
|
+
* TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
14
|
+
* [ GRANTED BY role_specification ]
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class GrantForeignDataWrapperPrivileges extends AlterForeignDataWrapperChange {
|
|
18
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
19
|
+
readonly grantee: string;
|
|
20
|
+
readonly privileges: {
|
|
21
|
+
privilege: string;
|
|
22
|
+
grantable: boolean;
|
|
23
|
+
}[];
|
|
24
|
+
readonly version: number | undefined;
|
|
25
|
+
readonly scope: "privilege";
|
|
26
|
+
constructor(props: {
|
|
27
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
28
|
+
grantee: string;
|
|
29
|
+
privileges: {
|
|
30
|
+
privilege: string;
|
|
31
|
+
grantable: boolean;
|
|
32
|
+
}[];
|
|
33
|
+
version?: number;
|
|
34
|
+
});
|
|
35
|
+
get creates(): `acl:${string}::grantee:${string}`[];
|
|
36
|
+
get requires(): (`role:${string}` | `foreignDataWrapper:${string}`)[];
|
|
37
|
+
serialize(): string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Revoke privileges on a foreign data wrapper.
|
|
41
|
+
*
|
|
42
|
+
* @see https://www.postgresql.org/docs/17/sql-revoke.html
|
|
43
|
+
*
|
|
44
|
+
* Synopsis
|
|
45
|
+
* ```sql
|
|
46
|
+
* REVOKE [ GRANT OPTION FOR ]
|
|
47
|
+
* { USAGE | ALL [ PRIVILEGES ] }
|
|
48
|
+
* ON FOREIGN DATA WRAPPER name [, ...]
|
|
49
|
+
* FROM role_specification [, ...]
|
|
50
|
+
* [ GRANTED BY role_specification ]
|
|
51
|
+
* [ CASCADE | RESTRICT ]
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare class RevokeForeignDataWrapperPrivileges extends AlterForeignDataWrapperChange {
|
|
55
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
56
|
+
readonly grantee: string;
|
|
57
|
+
readonly privileges: {
|
|
58
|
+
privilege: string;
|
|
59
|
+
grantable: boolean;
|
|
60
|
+
}[];
|
|
61
|
+
readonly version: number | undefined;
|
|
62
|
+
readonly scope: "privilege";
|
|
63
|
+
constructor(props: {
|
|
64
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
65
|
+
grantee: string;
|
|
66
|
+
privileges: {
|
|
67
|
+
privilege: string;
|
|
68
|
+
grantable: boolean;
|
|
69
|
+
}[];
|
|
70
|
+
version?: number;
|
|
71
|
+
});
|
|
72
|
+
get drops(): `acl:${string}::grantee:${string}`[];
|
|
73
|
+
get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `foreignDataWrapper:${string}`)[];
|
|
74
|
+
serialize(): string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Revoke grant option for privileges on a foreign data wrapper.
|
|
78
|
+
*
|
|
79
|
+
* This removes the ability to grant the privilege to others, but keeps the privilege itself.
|
|
80
|
+
*
|
|
81
|
+
* @see https://www.postgresql.org/docs/17/sql-revoke.html
|
|
82
|
+
*/
|
|
83
|
+
export declare class RevokeGrantOptionForeignDataWrapperPrivileges extends AlterForeignDataWrapperChange {
|
|
84
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
85
|
+
readonly grantee: string;
|
|
86
|
+
readonly privilegeNames: string[];
|
|
87
|
+
readonly version: number | undefined;
|
|
88
|
+
readonly scope: "privilege";
|
|
89
|
+
constructor(props: {
|
|
90
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
91
|
+
grantee: string;
|
|
92
|
+
privilegeNames: string[];
|
|
93
|
+
version?: number;
|
|
94
|
+
});
|
|
95
|
+
get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `foreignDataWrapper:${string}`)[];
|
|
96
|
+
serialize(): string;
|
|
97
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { formatObjectPrivilegeList } from "../../../base.privilege.js";
|
|
2
|
+
import { stableId } from "../../../utils.js";
|
|
3
|
+
import { AlterForeignDataWrapperChange } from "./foreign-data-wrapper.base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Grant privileges on a foreign data wrapper.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-grant.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* GRANT { USAGE | ALL [ PRIVILEGES ] }
|
|
12
|
+
* ON FOREIGN DATA WRAPPER name [, ...]
|
|
13
|
+
* TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
14
|
+
* [ GRANTED BY role_specification ]
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class GrantForeignDataWrapperPrivileges extends AlterForeignDataWrapperChange {
|
|
18
|
+
foreignDataWrapper;
|
|
19
|
+
grantee;
|
|
20
|
+
privileges;
|
|
21
|
+
version;
|
|
22
|
+
scope = "privilege";
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super();
|
|
25
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
26
|
+
this.grantee = props.grantee;
|
|
27
|
+
this.privileges = props.privileges;
|
|
28
|
+
this.version = props.version;
|
|
29
|
+
}
|
|
30
|
+
get creates() {
|
|
31
|
+
return [stableId.acl(this.foreignDataWrapper.stableId, this.grantee)];
|
|
32
|
+
}
|
|
33
|
+
get requires() {
|
|
34
|
+
return [this.foreignDataWrapper.stableId, stableId.role(this.grantee)];
|
|
35
|
+
}
|
|
36
|
+
serialize() {
|
|
37
|
+
const hasGrantable = this.privileges.some((p) => p.grantable);
|
|
38
|
+
const hasBase = this.privileges.some((p) => !p.grantable);
|
|
39
|
+
if (hasGrantable && hasBase) {
|
|
40
|
+
throw new Error("GrantForeignDataWrapperPrivileges expects privileges with uniform grantable flag");
|
|
41
|
+
}
|
|
42
|
+
const withGrant = hasGrantable ? " WITH GRANT OPTION" : "";
|
|
43
|
+
const list = this.privileges.map((p) => p.privilege);
|
|
44
|
+
const privSql = formatObjectPrivilegeList("FOREIGN DATA WRAPPER", list, this.version);
|
|
45
|
+
return `GRANT ${privSql} ON FOREIGN DATA WRAPPER ${this.foreignDataWrapper.name} TO ${this.grantee}${withGrant}`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Revoke privileges on a foreign data wrapper.
|
|
50
|
+
*
|
|
51
|
+
* @see https://www.postgresql.org/docs/17/sql-revoke.html
|
|
52
|
+
*
|
|
53
|
+
* Synopsis
|
|
54
|
+
* ```sql
|
|
55
|
+
* REVOKE [ GRANT OPTION FOR ]
|
|
56
|
+
* { USAGE | ALL [ PRIVILEGES ] }
|
|
57
|
+
* ON FOREIGN DATA WRAPPER name [, ...]
|
|
58
|
+
* FROM role_specification [, ...]
|
|
59
|
+
* [ GRANTED BY role_specification ]
|
|
60
|
+
* [ CASCADE | RESTRICT ]
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export class RevokeForeignDataWrapperPrivileges extends AlterForeignDataWrapperChange {
|
|
64
|
+
foreignDataWrapper;
|
|
65
|
+
grantee;
|
|
66
|
+
privileges;
|
|
67
|
+
version;
|
|
68
|
+
scope = "privilege";
|
|
69
|
+
constructor(props) {
|
|
70
|
+
super();
|
|
71
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
72
|
+
this.grantee = props.grantee;
|
|
73
|
+
this.privileges = props.privileges;
|
|
74
|
+
this.version = props.version;
|
|
75
|
+
}
|
|
76
|
+
get drops() {
|
|
77
|
+
return [stableId.acl(this.foreignDataWrapper.stableId, this.grantee)];
|
|
78
|
+
}
|
|
79
|
+
get requires() {
|
|
80
|
+
return [
|
|
81
|
+
stableId.acl(this.foreignDataWrapper.stableId, this.grantee),
|
|
82
|
+
this.foreignDataWrapper.stableId,
|
|
83
|
+
stableId.role(this.grantee),
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
serialize() {
|
|
87
|
+
const list = this.privileges.map((p) => p.privilege);
|
|
88
|
+
const privSql = formatObjectPrivilegeList("FOREIGN DATA WRAPPER", list, this.version);
|
|
89
|
+
return `REVOKE ${privSql} ON FOREIGN DATA WRAPPER ${this.foreignDataWrapper.name} FROM ${this.grantee}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Revoke grant option for privileges on a foreign data wrapper.
|
|
94
|
+
*
|
|
95
|
+
* This removes the ability to grant the privilege to others, but keeps the privilege itself.
|
|
96
|
+
*
|
|
97
|
+
* @see https://www.postgresql.org/docs/17/sql-revoke.html
|
|
98
|
+
*/
|
|
99
|
+
export class RevokeGrantOptionForeignDataWrapperPrivileges extends AlterForeignDataWrapperChange {
|
|
100
|
+
foreignDataWrapper;
|
|
101
|
+
grantee;
|
|
102
|
+
privilegeNames;
|
|
103
|
+
version;
|
|
104
|
+
scope = "privilege";
|
|
105
|
+
constructor(props) {
|
|
106
|
+
super();
|
|
107
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
108
|
+
this.grantee = props.grantee;
|
|
109
|
+
this.privilegeNames = [...new Set(props.privilegeNames)].sort();
|
|
110
|
+
this.version = props.version;
|
|
111
|
+
}
|
|
112
|
+
get requires() {
|
|
113
|
+
return [
|
|
114
|
+
stableId.acl(this.foreignDataWrapper.stableId, this.grantee),
|
|
115
|
+
this.foreignDataWrapper.stableId,
|
|
116
|
+
stableId.role(this.grantee),
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
serialize() {
|
|
120
|
+
const privSql = formatObjectPrivilegeList("FOREIGN DATA WRAPPER", this.privilegeNames, this.version);
|
|
121
|
+
return `REVOKE GRANT OPTION FOR ${privSql} ON FOREIGN DATA WRAPPER ${this.foreignDataWrapper.name} FROM ${this.grantee}`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AlterForeignDataWrapper } from "./foreign-data-wrapper.alter.ts";
|
|
2
|
+
import type { CommentForeignDataWrapper } from "./foreign-data-wrapper.comment.ts";
|
|
3
|
+
import type { CreateForeignDataWrapper } from "./foreign-data-wrapper.create.ts";
|
|
4
|
+
import type { DropForeignDataWrapper } from "./foreign-data-wrapper.drop.ts";
|
|
5
|
+
import type { ForeignDataWrapperPrivilege } from "./foreign-data-wrapper.privilege.ts";
|
|
6
|
+
export type ForeignDataWrapperChange = AlterForeignDataWrapper | CommentForeignDataWrapper | CreateForeignDataWrapper | DropForeignDataWrapper | ForeignDataWrapperPrivilege;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DefaultPrivilegeState } from "../../base.default-privileges.ts";
|
|
2
|
+
import type { Role } from "../../role/role.model.ts";
|
|
3
|
+
import type { ForeignDataWrapperChange } from "./changes/foreign-data-wrapper.types.ts";
|
|
4
|
+
import type { ForeignDataWrapper } from "./foreign-data-wrapper.model.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Diff two sets of foreign data wrappers from main and branch catalogs.
|
|
7
|
+
*
|
|
8
|
+
* @param ctx - Context containing version, currentUser, and defaultPrivilegeState
|
|
9
|
+
* @param main - The foreign data wrappers in the main catalog.
|
|
10
|
+
* @param branch - The foreign data wrappers in the branch catalog.
|
|
11
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
12
|
+
*/
|
|
13
|
+
export declare function diffForeignDataWrappers(ctx: {
|
|
14
|
+
version: number;
|
|
15
|
+
currentUser: string;
|
|
16
|
+
defaultPrivilegeState: DefaultPrivilegeState;
|
|
17
|
+
mainRoles: Record<string, Role>;
|
|
18
|
+
}, main: Record<string, ForeignDataWrapper>, branch: Record<string, ForeignDataWrapper>): ForeignDataWrapperChange[];
|
package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { diffObjects } from "../../base.diff.js";
|
|
2
|
+
import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../../base.privilege-diff.js";
|
|
3
|
+
import { AlterForeignDataWrapperChangeOwner, AlterForeignDataWrapperSetOptions, } from "./changes/foreign-data-wrapper.alter.js";
|
|
4
|
+
import { CreateCommentOnForeignDataWrapper, DropCommentOnForeignDataWrapper, } from "./changes/foreign-data-wrapper.comment.js";
|
|
5
|
+
import { CreateForeignDataWrapper } from "./changes/foreign-data-wrapper.create.js";
|
|
6
|
+
import { DropForeignDataWrapper } from "./changes/foreign-data-wrapper.drop.js";
|
|
7
|
+
import { GrantForeignDataWrapperPrivileges, RevokeForeignDataWrapperPrivileges, RevokeGrantOptionForeignDataWrapperPrivileges, } from "./changes/foreign-data-wrapper.privilege.js";
|
|
8
|
+
/**
|
|
9
|
+
* Diff two sets of foreign data wrappers from main and branch catalogs.
|
|
10
|
+
*
|
|
11
|
+
* @param ctx - Context containing version, currentUser, and defaultPrivilegeState
|
|
12
|
+
* @param main - The foreign data wrappers in the main catalog.
|
|
13
|
+
* @param branch - The foreign data wrappers in the branch catalog.
|
|
14
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
15
|
+
*/
|
|
16
|
+
export function diffForeignDataWrappers(ctx, main, branch) {
|
|
17
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
18
|
+
const changes = [];
|
|
19
|
+
for (const fdwId of created) {
|
|
20
|
+
const createdFdw = branch[fdwId];
|
|
21
|
+
changes.push(new CreateForeignDataWrapper({ foreignDataWrapper: createdFdw }));
|
|
22
|
+
// OWNER: If the FDW should be owned by someone other than the current user,
|
|
23
|
+
// emit ALTER FOREIGN DATA WRAPPER ... OWNER TO after creation
|
|
24
|
+
if (createdFdw.owner !== ctx.currentUser) {
|
|
25
|
+
changes.push(new AlterForeignDataWrapperChangeOwner({
|
|
26
|
+
foreignDataWrapper: createdFdw,
|
|
27
|
+
owner: createdFdw.owner,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
if (createdFdw.comment !== null) {
|
|
31
|
+
changes.push(new CreateCommentOnForeignDataWrapper({
|
|
32
|
+
foreignDataWrapper: createdFdw,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
// PRIVILEGES: For created objects, compare against default privileges state
|
|
36
|
+
// Foreign Data Wrappers don't have default privileges, so we compare against empty array
|
|
37
|
+
const effectiveDefaults = [];
|
|
38
|
+
const desiredPrivileges = filterPublicBuiltInDefaults("foreign_data_wrapper", createdFdw.privileges);
|
|
39
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
40
|
+
const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, createdFdw.owner, ctx.mainRoles);
|
|
41
|
+
// Generate grant changes
|
|
42
|
+
for (const [grantee, result] of privilegeResults) {
|
|
43
|
+
if (result.grants.length > 0) {
|
|
44
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
45
|
+
for (const [grantable, list] of grantGroups) {
|
|
46
|
+
void grantable;
|
|
47
|
+
changes.push(new GrantForeignDataWrapperPrivileges({
|
|
48
|
+
foreignDataWrapper: createdFdw,
|
|
49
|
+
grantee,
|
|
50
|
+
privileges: list,
|
|
51
|
+
version: ctx.version,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Generate revoke changes
|
|
56
|
+
if (result.revokes.length > 0) {
|
|
57
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
58
|
+
for (const [grantable, list] of revokeGroups) {
|
|
59
|
+
void grantable;
|
|
60
|
+
changes.push(new RevokeForeignDataWrapperPrivileges({
|
|
61
|
+
foreignDataWrapper: createdFdw,
|
|
62
|
+
grantee,
|
|
63
|
+
privileges: list,
|
|
64
|
+
version: ctx.version,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Generate revoke grant option changes
|
|
69
|
+
if (result.revokeGrantOption.length > 0) {
|
|
70
|
+
changes.push(new RevokeGrantOptionForeignDataWrapperPrivileges({
|
|
71
|
+
foreignDataWrapper: createdFdw,
|
|
72
|
+
grantee,
|
|
73
|
+
privilegeNames: result.revokeGrantOption,
|
|
74
|
+
version: ctx.version,
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const fdwId of dropped) {
|
|
80
|
+
changes.push(new DropForeignDataWrapper({ foreignDataWrapper: main[fdwId] }));
|
|
81
|
+
}
|
|
82
|
+
for (const fdwId of altered) {
|
|
83
|
+
const mainFdw = main[fdwId];
|
|
84
|
+
const branchFdw = branch[fdwId];
|
|
85
|
+
// OWNER
|
|
86
|
+
if (mainFdw.owner !== branchFdw.owner) {
|
|
87
|
+
changes.push(new AlterForeignDataWrapperChangeOwner({
|
|
88
|
+
foreignDataWrapper: mainFdw,
|
|
89
|
+
owner: branchFdw.owner,
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
// HANDLER - if changed, need to recreate (not directly alterable)
|
|
93
|
+
if (mainFdw.handler !== branchFdw.handler) {
|
|
94
|
+
changes.push(new DropForeignDataWrapper({ foreignDataWrapper: mainFdw }));
|
|
95
|
+
changes.push(new CreateForeignDataWrapper({ foreignDataWrapper: branchFdw }));
|
|
96
|
+
if (branchFdw.comment !== null) {
|
|
97
|
+
changes.push(new CreateCommentOnForeignDataWrapper({
|
|
98
|
+
foreignDataWrapper: branchFdw,
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
// VALIDATOR - if changed, need to recreate (not directly alterable)
|
|
104
|
+
if (mainFdw.validator !== branchFdw.validator) {
|
|
105
|
+
changes.push(new DropForeignDataWrapper({ foreignDataWrapper: mainFdw }));
|
|
106
|
+
changes.push(new CreateForeignDataWrapper({ foreignDataWrapper: branchFdw }));
|
|
107
|
+
if (branchFdw.comment !== null) {
|
|
108
|
+
changes.push(new CreateCommentOnForeignDataWrapper({
|
|
109
|
+
foreignDataWrapper: branchFdw,
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
// OPTIONS
|
|
115
|
+
const optionsChanged = diffOptions(mainFdw.options, branchFdw.options);
|
|
116
|
+
if (optionsChanged.length > 0) {
|
|
117
|
+
changes.push(new AlterForeignDataWrapperSetOptions({
|
|
118
|
+
foreignDataWrapper: mainFdw,
|
|
119
|
+
options: optionsChanged,
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
// COMMENT
|
|
123
|
+
if (mainFdw.comment !== branchFdw.comment) {
|
|
124
|
+
if (branchFdw.comment === null) {
|
|
125
|
+
changes.push(new DropCommentOnForeignDataWrapper({ foreignDataWrapper: mainFdw }));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
changes.push(new CreateCommentOnForeignDataWrapper({
|
|
129
|
+
foreignDataWrapper: branchFdw,
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// PRIVILEGES
|
|
134
|
+
const mainPrivilegesFiltered = filterPublicBuiltInDefaults("foreign_data_wrapper", mainFdw.privileges);
|
|
135
|
+
const branchPrivilegesFiltered = filterPublicBuiltInDefaults("foreign_data_wrapper", branchFdw.privileges);
|
|
136
|
+
const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchFdw.owner, ctx.mainRoles);
|
|
137
|
+
for (const [grantee, result] of privilegeResults) {
|
|
138
|
+
// Generate grant changes
|
|
139
|
+
if (result.grants.length > 0) {
|
|
140
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
141
|
+
for (const [grantable, list] of grantGroups) {
|
|
142
|
+
void grantable;
|
|
143
|
+
changes.push(new GrantForeignDataWrapperPrivileges({
|
|
144
|
+
foreignDataWrapper: branchFdw,
|
|
145
|
+
grantee,
|
|
146
|
+
privileges: list,
|
|
147
|
+
version: ctx.version,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Generate revoke changes
|
|
152
|
+
if (result.revokes.length > 0) {
|
|
153
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
154
|
+
for (const [grantable, list] of revokeGroups) {
|
|
155
|
+
void grantable;
|
|
156
|
+
changes.push(new RevokeForeignDataWrapperPrivileges({
|
|
157
|
+
foreignDataWrapper: mainFdw,
|
|
158
|
+
grantee,
|
|
159
|
+
privileges: list,
|
|
160
|
+
version: ctx.version,
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Generate revoke grant option changes
|
|
165
|
+
if (result.revokeGrantOption.length > 0) {
|
|
166
|
+
changes.push(new RevokeGrantOptionForeignDataWrapperPrivileges({
|
|
167
|
+
foreignDataWrapper: mainFdw,
|
|
168
|
+
grantee,
|
|
169
|
+
privilegeNames: result.revokeGrantOption,
|
|
170
|
+
version: ctx.version,
|
|
171
|
+
}));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Note: FDW renaming would also use ALTER FOREIGN DATA WRAPPER ... RENAME TO ...
|
|
175
|
+
// But since our ForeignDataWrapper model uses 'name' as the identity field,
|
|
176
|
+
// a name change would be handled as drop + create by diffObjects()
|
|
177
|
+
}
|
|
178
|
+
return changes;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Diff options arrays to determine ADD/SET/DROP operations.
|
|
182
|
+
* Options are stored as [key1, value1, key2, value2, ...]
|
|
183
|
+
*/
|
|
184
|
+
function diffOptions(mainOptions, branchOptions) {
|
|
185
|
+
const mainMap = new Map();
|
|
186
|
+
const branchMap = new Map();
|
|
187
|
+
// Parse main options
|
|
188
|
+
if (mainOptions) {
|
|
189
|
+
for (let i = 0; i < mainOptions.length; i += 2) {
|
|
190
|
+
if (i + 1 < mainOptions.length) {
|
|
191
|
+
mainMap.set(mainOptions[i], mainOptions[i + 1]);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Parse branch options
|
|
196
|
+
if (branchOptions) {
|
|
197
|
+
for (let i = 0; i < branchOptions.length; i += 2) {
|
|
198
|
+
if (i + 1 < branchOptions.length) {
|
|
199
|
+
branchMap.set(branchOptions[i], branchOptions[i + 1]);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const changes = [];
|
|
204
|
+
// Find options to ADD or SET
|
|
205
|
+
for (const [key, value] of branchMap) {
|
|
206
|
+
const mainValue = mainMap.get(key);
|
|
207
|
+
if (mainValue === undefined) {
|
|
208
|
+
changes.push({ action: "ADD", option: key, value });
|
|
209
|
+
}
|
|
210
|
+
else if (mainValue !== value) {
|
|
211
|
+
changes.push({ action: "SET", option: key, value });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Find options to DROP
|
|
215
|
+
for (const [key] of mainMap) {
|
|
216
|
+
if (!branchMap.has(key)) {
|
|
217
|
+
changes.push({ action: "DROP", option: key });
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return changes;
|
|
221
|
+
}
|