@supabase/pg-delta 0.0.0 → 1.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +14 -0
- package/dist/cli/utils/integrations.js +44 -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 +15 -0
- package/dist/core/fingerprint.js +174 -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/filter/filter.types.d.ts +2 -0
- package/dist/core/integrations/filter/filter.types.js +1 -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 +6 -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/integrations/serialize/serialize.types.d.ts +2 -0
- package/dist/core/integrations/serialize/serialize.types.js +1 -0
- package/dist/core/integrations/supabase.d.ts +10 -0
- package/dist/core/integrations/supabase.js +114 -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 +18 -0
- package/dist/core/plan/index.js +20 -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 +142 -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 +9 -0
- package/dist/index.js +8 -0
- package/package.json +61 -12
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { stableId } from "../../utils.js";
|
|
2
|
+
import { CreateExtensionChange } from "./extension.base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create an extension.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-createextension.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* CREATE EXTENSION [ IF NOT EXISTS ] extension_name
|
|
11
|
+
* [ WITH ] [ SCHEMA schema_name ]
|
|
12
|
+
* [ VERSION version ]
|
|
13
|
+
* [ CASCADE ]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export class CreateExtension extends CreateExtensionChange {
|
|
17
|
+
extension;
|
|
18
|
+
scope = "object";
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super();
|
|
21
|
+
this.extension = props.extension;
|
|
22
|
+
}
|
|
23
|
+
get creates() {
|
|
24
|
+
return [this.extension.stableId, ...this.extension.members];
|
|
25
|
+
}
|
|
26
|
+
get requires() {
|
|
27
|
+
const dependencies = new Set();
|
|
28
|
+
// Schema dependency
|
|
29
|
+
dependencies.add(stableId.schema(this.extension.schema));
|
|
30
|
+
// Owner dependency
|
|
31
|
+
dependencies.add(stableId.role(this.extension.owner));
|
|
32
|
+
return Array.from(dependencies);
|
|
33
|
+
}
|
|
34
|
+
serialize() {
|
|
35
|
+
const parts = ["CREATE EXTENSION"];
|
|
36
|
+
// Add extension name
|
|
37
|
+
parts.push(this.extension.name);
|
|
38
|
+
// Add schema
|
|
39
|
+
parts.push("WITH SCHEMA", this.extension.schema);
|
|
40
|
+
// Add version
|
|
41
|
+
// TODO: Omit version for now as versions can differ between main and branch
|
|
42
|
+
// if (this.extension.version) {
|
|
43
|
+
// parts.push("VERSION", quoteLiteral(this.extension.version));
|
|
44
|
+
// }
|
|
45
|
+
// TODO: Add CASCADE if the extension has dependencies
|
|
46
|
+
// parts.push("CASCADE");
|
|
47
|
+
return parts.join(" ");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Extension } from "../extension.model.ts";
|
|
2
|
+
import { DropExtensionChange } from "./extension.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Drop an extension.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-dropextension.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare class DropExtension extends DropExtensionChange {
|
|
14
|
+
readonly extension: Extension;
|
|
15
|
+
readonly scope: "object";
|
|
16
|
+
constructor(props: {
|
|
17
|
+
extension: Extension;
|
|
18
|
+
});
|
|
19
|
+
get drops(): string[];
|
|
20
|
+
get requires(): string[];
|
|
21
|
+
serialize(): string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DropExtensionChange } from "./extension.base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Drop an extension.
|
|
4
|
+
*
|
|
5
|
+
* @see https://www.postgresql.org/docs/17/sql-dropextension.html
|
|
6
|
+
*
|
|
7
|
+
* Synopsis
|
|
8
|
+
* ```sql
|
|
9
|
+
* DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export class DropExtension extends DropExtensionChange {
|
|
13
|
+
extension;
|
|
14
|
+
scope = "object";
|
|
15
|
+
constructor(props) {
|
|
16
|
+
super();
|
|
17
|
+
this.extension = props.extension;
|
|
18
|
+
}
|
|
19
|
+
get drops() {
|
|
20
|
+
return [this.extension.stableId, ...this.extension.members];
|
|
21
|
+
}
|
|
22
|
+
get requires() {
|
|
23
|
+
return [this.extension.stableId, ...this.extension.members];
|
|
24
|
+
}
|
|
25
|
+
serialize() {
|
|
26
|
+
return ["DROP EXTENSION", this.extension.name].join(" ");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AlterExtension } from "./extension.alter.ts";
|
|
2
|
+
import type { CommentExtension } from "./extension.comment.ts";
|
|
3
|
+
import type { CreateExtension } from "./extension.create.ts";
|
|
4
|
+
import type { DropExtension } from "./extension.drop.ts";
|
|
5
|
+
export type ExtensionChange = AlterExtension | CommentExtension | CreateExtension | DropExtension;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ExtensionChange } from "./changes/extension.types.ts";
|
|
2
|
+
import type { Extension } from "./extension.model.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Diff two sets of extensions from main and branch catalogs.
|
|
5
|
+
*
|
|
6
|
+
* @param main - The extensions in the main catalog.
|
|
7
|
+
* @param branch - The extensions in the branch catalog.
|
|
8
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
9
|
+
*/
|
|
10
|
+
export declare function diffExtensions(main: Record<string, Extension>, branch: Record<string, Extension>): ExtensionChange[];
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { diffObjects } from "../base.diff.js";
|
|
2
|
+
import { AlterExtensionSetSchema } from "./changes/extension.alter.js";
|
|
3
|
+
import { CreateCommentOnExtension, DropCommentOnExtension, } from "./changes/extension.comment.js";
|
|
4
|
+
import { CreateExtension } from "./changes/extension.create.js";
|
|
5
|
+
import { DropExtension } from "./changes/extension.drop.js";
|
|
6
|
+
/**
|
|
7
|
+
* Diff two sets of extensions from main and branch catalogs.
|
|
8
|
+
*
|
|
9
|
+
* @param main - The extensions in the main catalog.
|
|
10
|
+
* @param branch - The extensions in the branch catalog.
|
|
11
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
12
|
+
*/
|
|
13
|
+
export function diffExtensions(main, branch) {
|
|
14
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
15
|
+
const changes = [];
|
|
16
|
+
for (const extensionId of created) {
|
|
17
|
+
const ext = branch[extensionId];
|
|
18
|
+
changes.push(new CreateExtension({ extension: ext }));
|
|
19
|
+
if (ext.comment !== null) {
|
|
20
|
+
changes.push(new CreateCommentOnExtension({ extension: ext }));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
for (const extensionId of dropped) {
|
|
24
|
+
changes.push(new DropExtension({ extension: main[extensionId] }));
|
|
25
|
+
}
|
|
26
|
+
for (const extensionId of altered) {
|
|
27
|
+
const mainExtension = main[extensionId];
|
|
28
|
+
const branchExtension = branch[extensionId];
|
|
29
|
+
const schemaChanged = mainExtension.schema !== branchExtension.schema;
|
|
30
|
+
if (schemaChanged && !mainExtension.relocatable) {
|
|
31
|
+
// Cannot ALTER schema if not relocatable: must replace
|
|
32
|
+
changes.push(new DropExtension({ extension: mainExtension }), new CreateExtension({ extension: branchExtension }));
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
// VERSION
|
|
36
|
+
// TODO: Omit version for now as versions can differ between main and branch
|
|
37
|
+
// if (mainExtension.version !== branchExtension.version) {
|
|
38
|
+
// changes.push(
|
|
39
|
+
// new AlterExtensionUpdateVersion({
|
|
40
|
+
// extension: mainExtension,
|
|
41
|
+
// version: branchExtension.version,
|
|
42
|
+
// }),
|
|
43
|
+
// );
|
|
44
|
+
// }
|
|
45
|
+
// SCHEMA (only if relocatable)
|
|
46
|
+
if (schemaChanged && mainExtension.relocatable) {
|
|
47
|
+
changes.push(new AlterExtensionSetSchema({
|
|
48
|
+
extension: mainExtension,
|
|
49
|
+
schema: branchExtension.schema,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
// COMMENT
|
|
53
|
+
if (mainExtension.comment !== branchExtension.comment) {
|
|
54
|
+
if (branchExtension.comment === null) {
|
|
55
|
+
changes.push(new DropCommentOnExtension({ extension: mainExtension }));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
changes.push(new CreateCommentOnExtension({ extension: branchExtension }));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Note: Extension renaming would also use ALTER EXTENSION ... RENAME TO ...
|
|
62
|
+
// Name is identity; renames are handled as drop + create by diffObjects()
|
|
63
|
+
}
|
|
64
|
+
return changes;
|
|
65
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Sql } from "postgres";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { BasePgModel } from "../base.model.ts";
|
|
4
|
+
/**
|
|
5
|
+
* All properties exposed by CREATE EXTENSION statement are included in diff output.
|
|
6
|
+
* https://www.postgresql.org/docs/current/sql-createextension.html
|
|
7
|
+
*
|
|
8
|
+
* ALTER EXTENSION statement can be generated for changes to the following properties:
|
|
9
|
+
* - version (limited to available ones), schema (only if relocatable)
|
|
10
|
+
* https://www.postgresql.org/docs/current/sql-alterextension.html
|
|
11
|
+
*
|
|
12
|
+
* Adding or dropping member objects are not supported. For eg. pgmq allows detaching
|
|
13
|
+
* user defined queues by removing its entry from pg_depend. If the detached table
|
|
14
|
+
* lives in an excluded schema like pg_catalog, it will not be diffed.
|
|
15
|
+
*
|
|
16
|
+
* The extension's configuration tables are not diffed.
|
|
17
|
+
* - extconfig, extcondition
|
|
18
|
+
* https://www.postgresql.org/docs/current/catalog-pg-extension.html
|
|
19
|
+
*/
|
|
20
|
+
declare const extensionPropsSchema: z.ZodObject<{
|
|
21
|
+
name: z.ZodString;
|
|
22
|
+
schema: z.ZodString;
|
|
23
|
+
relocatable: z.ZodBoolean;
|
|
24
|
+
version: z.ZodString;
|
|
25
|
+
owner: z.ZodString;
|
|
26
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
27
|
+
members: z.ZodArray<z.ZodString>;
|
|
28
|
+
}, z.z.core.$strip>;
|
|
29
|
+
export type ExtensionProps = z.infer<typeof extensionPropsSchema>;
|
|
30
|
+
export declare class Extension extends BasePgModel {
|
|
31
|
+
readonly name: ExtensionProps["name"];
|
|
32
|
+
readonly schema: ExtensionProps["schema"];
|
|
33
|
+
readonly relocatable: ExtensionProps["relocatable"];
|
|
34
|
+
readonly version: ExtensionProps["version"];
|
|
35
|
+
readonly owner: ExtensionProps["owner"];
|
|
36
|
+
readonly comment: ExtensionProps["comment"];
|
|
37
|
+
readonly members: ExtensionProps["members"];
|
|
38
|
+
constructor(props: ExtensionProps);
|
|
39
|
+
get stableId(): `extension:${string}`;
|
|
40
|
+
get identityFields(): {
|
|
41
|
+
name: string;
|
|
42
|
+
};
|
|
43
|
+
get dataFields(): {
|
|
44
|
+
schema: string;
|
|
45
|
+
relocatable: boolean;
|
|
46
|
+
version: string;
|
|
47
|
+
owner: string;
|
|
48
|
+
comment: string | null;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export declare function extractExtensions(sql: Sql): Promise<Extension[]>;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../base.model.js";
|
|
3
|
+
/**
|
|
4
|
+
* All properties exposed by CREATE EXTENSION statement are included in diff output.
|
|
5
|
+
* https://www.postgresql.org/docs/current/sql-createextension.html
|
|
6
|
+
*
|
|
7
|
+
* ALTER EXTENSION statement can be generated for changes to the following properties:
|
|
8
|
+
* - version (limited to available ones), schema (only if relocatable)
|
|
9
|
+
* https://www.postgresql.org/docs/current/sql-alterextension.html
|
|
10
|
+
*
|
|
11
|
+
* Adding or dropping member objects are not supported. For eg. pgmq allows detaching
|
|
12
|
+
* user defined queues by removing its entry from pg_depend. If the detached table
|
|
13
|
+
* lives in an excluded schema like pg_catalog, it will not be diffed.
|
|
14
|
+
*
|
|
15
|
+
* The extension's configuration tables are not diffed.
|
|
16
|
+
* - extconfig, extcondition
|
|
17
|
+
* https://www.postgresql.org/docs/current/catalog-pg-extension.html
|
|
18
|
+
*/
|
|
19
|
+
const extensionPropsSchema = z.object({
|
|
20
|
+
name: z.string(),
|
|
21
|
+
schema: z.string(),
|
|
22
|
+
relocatable: z.boolean(),
|
|
23
|
+
version: z.string(),
|
|
24
|
+
owner: z.string(),
|
|
25
|
+
comment: z.string().nullable(),
|
|
26
|
+
members: z.array(z.string()),
|
|
27
|
+
});
|
|
28
|
+
export class Extension extends BasePgModel {
|
|
29
|
+
name;
|
|
30
|
+
schema;
|
|
31
|
+
relocatable;
|
|
32
|
+
version;
|
|
33
|
+
owner;
|
|
34
|
+
comment;
|
|
35
|
+
members;
|
|
36
|
+
constructor(props) {
|
|
37
|
+
super();
|
|
38
|
+
// Identity fields
|
|
39
|
+
this.name = props.name;
|
|
40
|
+
// Data fields
|
|
41
|
+
this.schema = props.schema;
|
|
42
|
+
this.relocatable = props.relocatable;
|
|
43
|
+
this.version = props.version;
|
|
44
|
+
this.owner = props.owner;
|
|
45
|
+
this.comment = props.comment;
|
|
46
|
+
this.members = props.members;
|
|
47
|
+
}
|
|
48
|
+
get stableId() {
|
|
49
|
+
// Extension names are unique per database; schema is relocatable
|
|
50
|
+
return `extension:${this.name}`;
|
|
51
|
+
}
|
|
52
|
+
get identityFields() {
|
|
53
|
+
return {
|
|
54
|
+
name: this.name,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
get dataFields() {
|
|
58
|
+
return {
|
|
59
|
+
schema: this.schema,
|
|
60
|
+
relocatable: this.relocatable,
|
|
61
|
+
version: this.version,
|
|
62
|
+
owner: this.owner,
|
|
63
|
+
comment: this.comment,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// TODO: fetch extension dependencies so we can determine when to use CASCADE on creation
|
|
68
|
+
export async function extractExtensions(sql) {
|
|
69
|
+
return sql.begin(async (sql) => {
|
|
70
|
+
await sql `set search_path = ''`;
|
|
71
|
+
const extensionRows = await sql `
|
|
72
|
+
with extension_rows as (
|
|
73
|
+
select
|
|
74
|
+
e.oid,
|
|
75
|
+
quote_ident(e.extname) as name,
|
|
76
|
+
e.extnamespace::regnamespace::text as schema,
|
|
77
|
+
e.extrelocatable as relocatable,
|
|
78
|
+
e.extversion as version,
|
|
79
|
+
e.extowner::regrole::text as owner,
|
|
80
|
+
obj_description(e.oid, 'pg_extension') as comment
|
|
81
|
+
from
|
|
82
|
+
pg_catalog.pg_extension e
|
|
83
|
+
), extension_members_raw as (
|
|
84
|
+
select
|
|
85
|
+
er.oid as extension_oid,
|
|
86
|
+
d.classid,
|
|
87
|
+
d.objid,
|
|
88
|
+
d.objsubid
|
|
89
|
+
from
|
|
90
|
+
extension_rows er
|
|
91
|
+
join pg_depend d on d.refclassid = 'pg_extension'::regclass
|
|
92
|
+
and d.refobjid = er.oid
|
|
93
|
+
where
|
|
94
|
+
d.deptype = 'e'
|
|
95
|
+
), ids as (
|
|
96
|
+
select distinct
|
|
97
|
+
classid,
|
|
98
|
+
objid,
|
|
99
|
+
coalesce(nullif(objsubid, 0), 0)::int2 as objsubid
|
|
100
|
+
from extension_members_raw
|
|
101
|
+
), objects as (
|
|
102
|
+
select 'pg_namespace'::regclass as classid, n.oid as objid, 0::int2 as objsubid,
|
|
103
|
+
format('schema:%I', n.nspname) as stable_id
|
|
104
|
+
from pg_namespace n
|
|
105
|
+
join ids i on i.classid = 'pg_namespace'::regclass and i.objid = n.oid and i.objsubid = 0
|
|
106
|
+
|
|
107
|
+
union all
|
|
108
|
+
|
|
109
|
+
select 'pg_class'::regclass, c.oid, 0::int2,
|
|
110
|
+
case c.relkind
|
|
111
|
+
when 'r' then format('table:%I.%I', ns.nspname, c.relname)
|
|
112
|
+
when 'p' then format('table:%I.%I', ns.nspname, c.relname)
|
|
113
|
+
when 'v' then format('view:%I.%I', ns.nspname, c.relname)
|
|
114
|
+
when 'm' then format('materializedView:%I.%I', ns.nspname, c.relname)
|
|
115
|
+
when 'S' then format('sequence:%I.%I', ns.nspname, c.relname)
|
|
116
|
+
when 'i' then format('index:%I.%I.%I', ns.nspname, tbl.relname, c.relname)
|
|
117
|
+
when 'c' then format('type:%I.%I', ns.nspname, c.relname)
|
|
118
|
+
else format('unknown:%s.%s', 'pg_class', c.oid::text)
|
|
119
|
+
end as stable_id
|
|
120
|
+
from pg_class c
|
|
121
|
+
join pg_namespace ns on ns.oid = c.relnamespace
|
|
122
|
+
left join pg_index idx on idx.indexrelid = c.oid
|
|
123
|
+
left join pg_class tbl on tbl.oid = idx.indrelid
|
|
124
|
+
join ids i on i.classid = 'pg_class'::regclass and i.objid = c.oid and i.objsubid = 0
|
|
125
|
+
|
|
126
|
+
union all
|
|
127
|
+
|
|
128
|
+
select 'pg_class'::regclass, a.attrelid, a.attnum,
|
|
129
|
+
format('column:%I.%I.%I', ns.nspname, c.relname, a.attname) as stable_id
|
|
130
|
+
from pg_attribute a
|
|
131
|
+
join pg_class c on c.oid = a.attrelid
|
|
132
|
+
join pg_namespace ns on ns.oid = c.relnamespace
|
|
133
|
+
join ids i on i.classid = 'pg_class'::regclass and i.objid = a.attrelid and i.objsubid = a.attnum
|
|
134
|
+
where a.attnum > 0 and not a.attisdropped
|
|
135
|
+
|
|
136
|
+
union all
|
|
137
|
+
|
|
138
|
+
select 'pg_type'::regclass, t.oid, 0::int2,
|
|
139
|
+
case t.typtype
|
|
140
|
+
when 'd' then format('domain:%I.%I', ns.nspname, t.typname)
|
|
141
|
+
when 'e' then format('type:%I.%I', ns.nspname, t.typname)
|
|
142
|
+
when 'r' then format('type:%I.%I', ns.nspname, t.typname)
|
|
143
|
+
when 'm' then format('multirange:%I.%I', ns.nspname, t.typname)
|
|
144
|
+
when 'c' then
|
|
145
|
+
case
|
|
146
|
+
when r.oid is not null and r.relkind in ('r','p','f') then format('table:%I.%I', rns.nspname, r.relname)
|
|
147
|
+
when r.oid is not null and r.relkind = 'v' then format('view:%I.%I', rns.nspname, r.relname)
|
|
148
|
+
when r.oid is not null and r.relkind = 'm' then format('materializedView:%I.%I', rns.nspname, r.relname)
|
|
149
|
+
else format('type:%I.%I', ns.nspname, t.typname)
|
|
150
|
+
end
|
|
151
|
+
when 'p' then format('pseudoType:%I.%I', ns.nspname, t.typname)
|
|
152
|
+
else format('type:%I.%I', ns.nspname, t.typname)
|
|
153
|
+
end as stable_id
|
|
154
|
+
from pg_type t
|
|
155
|
+
join pg_namespace ns on ns.oid = t.typnamespace
|
|
156
|
+
left join pg_class r on r.oid = t.typrelid
|
|
157
|
+
left join pg_namespace rns on rns.oid = r.relnamespace
|
|
158
|
+
join ids i on i.classid = 'pg_type'::regclass and i.objid = t.oid and i.objsubid = 0
|
|
159
|
+
|
|
160
|
+
union all
|
|
161
|
+
|
|
162
|
+
select 'pg_constraint'::regclass, c.oid, 0::int2,
|
|
163
|
+
case
|
|
164
|
+
when c.contypid <> 0 then format('constraint:%I.%I.%I', ns.nspname, ty.typname, c.conname)
|
|
165
|
+
when c.conrelid <> 0 then format('constraint:%I.%I.%I', tbl_ns.nspname, tbl.relname, c.conname)
|
|
166
|
+
else format('constraint:%s', c.oid::text)
|
|
167
|
+
end as stable_id
|
|
168
|
+
from pg_constraint c
|
|
169
|
+
left join pg_type ty on ty.oid = c.contypid
|
|
170
|
+
left join pg_namespace ns on ns.oid = ty.typnamespace
|
|
171
|
+
left join pg_class tbl on tbl.oid = c.conrelid
|
|
172
|
+
left join pg_namespace tbl_ns on tbl_ns.oid = tbl.relnamespace
|
|
173
|
+
join ids i on i.classid = 'pg_constraint'::regclass and i.objid = c.oid and i.objsubid = 0
|
|
174
|
+
|
|
175
|
+
union all
|
|
176
|
+
|
|
177
|
+
select 'pg_proc'::regclass, p.oid, 0::int2,
|
|
178
|
+
format(
|
|
179
|
+
'procedure:%I.%I(%s)',
|
|
180
|
+
ns.nspname,
|
|
181
|
+
p.proname,
|
|
182
|
+
coalesce((select string_agg(format_type(oid, null), ',' order by ord)
|
|
183
|
+
from unnest(p.proargtypes) with ordinality as t(oid, ord)), '')
|
|
184
|
+
) as stable_id
|
|
185
|
+
from pg_proc p
|
|
186
|
+
join pg_namespace ns on ns.oid = p.pronamespace
|
|
187
|
+
join ids i on i.classid = 'pg_proc'::regclass and i.objid = p.oid and i.objsubid = 0
|
|
188
|
+
|
|
189
|
+
union all
|
|
190
|
+
|
|
191
|
+
select 'pg_trigger'::regclass, tg.oid, 0::int2,
|
|
192
|
+
format('trigger:%I.%I.%I', ns.nspname, tbl.relname, tg.tgname) as stable_id
|
|
193
|
+
from pg_trigger tg
|
|
194
|
+
join pg_class tbl on tbl.oid = tg.tgrelid
|
|
195
|
+
join pg_namespace ns on ns.oid = tbl.relnamespace
|
|
196
|
+
join ids i on i.classid = 'pg_trigger'::regclass and i.objid = tg.oid and i.objsubid = 0
|
|
197
|
+
|
|
198
|
+
union all
|
|
199
|
+
|
|
200
|
+
select 'pg_collation'::regclass, c.oid, 0::int2,
|
|
201
|
+
format('collation:%I.%I', ns.nspname, c.collname) as stable_id
|
|
202
|
+
from pg_collation c
|
|
203
|
+
join pg_namespace ns on ns.oid = c.collnamespace
|
|
204
|
+
join ids i on i.classid = 'pg_collation'::regclass and i.objid = c.oid and i.objsubid = 0
|
|
205
|
+
|
|
206
|
+
union all
|
|
207
|
+
|
|
208
|
+
select 'pg_event_trigger'::regclass, et.oid, 0::int2,
|
|
209
|
+
format('eventTrigger:%I', et.evtname) as stable_id
|
|
210
|
+
from pg_event_trigger et
|
|
211
|
+
join ids i on i.classid = 'pg_event_trigger'::regclass and i.objid = et.oid and i.objsubid = 0
|
|
212
|
+
|
|
213
|
+
union all
|
|
214
|
+
|
|
215
|
+
select 'pg_ts_config'::regclass, cfg.oid, 0::int2,
|
|
216
|
+
format('tsConfig:%I.%I', ns.nspname, cfg.cfgname) as stable_id
|
|
217
|
+
from pg_ts_config cfg
|
|
218
|
+
join pg_namespace ns on ns.oid = cfg.cfgnamespace
|
|
219
|
+
join ids i on i.classid = 'pg_ts_config'::regclass and i.objid = cfg.oid and i.objsubid = 0
|
|
220
|
+
|
|
221
|
+
union all
|
|
222
|
+
|
|
223
|
+
select 'pg_ts_dict'::regclass, dict.oid, 0::int2,
|
|
224
|
+
format('tsDict:%I.%I', ns.nspname, dict.dictname) as stable_id
|
|
225
|
+
from pg_ts_dict dict
|
|
226
|
+
join pg_namespace ns on ns.oid = dict.dictnamespace
|
|
227
|
+
join ids i on i.classid = 'pg_ts_dict'::regclass and i.objid = dict.oid and i.objsubid = 0
|
|
228
|
+
|
|
229
|
+
union all
|
|
230
|
+
|
|
231
|
+
select 'pg_ts_template'::regclass, tmpl.oid, 0::int2,
|
|
232
|
+
format('tsTemplate:%I.%I', ns.nspname, tmpl.tmplname) as stable_id
|
|
233
|
+
from pg_ts_template tmpl
|
|
234
|
+
join pg_namespace ns on ns.oid = tmpl.tmplnamespace
|
|
235
|
+
join ids i on i.classid = 'pg_ts_template'::regclass and i.objid = tmpl.oid and i.objsubid = 0
|
|
236
|
+
), extension_members as (
|
|
237
|
+
select
|
|
238
|
+
em.extension_oid,
|
|
239
|
+
obj.stable_id
|
|
240
|
+
from extension_members_raw em
|
|
241
|
+
join objects obj
|
|
242
|
+
on obj.classid = em.classid
|
|
243
|
+
and obj.objid = em.objid
|
|
244
|
+
and obj.objsubid = coalesce(nullif(em.objsubid, 0), 0)
|
|
245
|
+
)
|
|
246
|
+
select
|
|
247
|
+
er.name,
|
|
248
|
+
er.schema,
|
|
249
|
+
er.relocatable,
|
|
250
|
+
er.version,
|
|
251
|
+
er.owner,
|
|
252
|
+
er.comment,
|
|
253
|
+
coalesce(
|
|
254
|
+
(
|
|
255
|
+
select json_agg(em.stable_id order by em.stable_id)
|
|
256
|
+
from extension_members em
|
|
257
|
+
where em.extension_oid = er.oid
|
|
258
|
+
), '[]'::json
|
|
259
|
+
) as members
|
|
260
|
+
from extension_rows er
|
|
261
|
+
order by
|
|
262
|
+
er.name;
|
|
263
|
+
`;
|
|
264
|
+
// Validate and parse each row using the Zod schema
|
|
265
|
+
const validatedRows = extensionRows.map((row) => extensionPropsSchema.parse(row));
|
|
266
|
+
return validatedRows.map((row) => new Extension(row));
|
|
267
|
+
});
|
|
268
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ForeignDataWrapper } from "../foreign-data-wrapper.model.ts";
|
|
2
|
+
import { AlterForeignDataWrapperChange } from "./foreign-data-wrapper.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Alter a foreign data wrapper.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-alterforeigndatawrapper.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* ALTER FOREIGN DATA WRAPPER name
|
|
11
|
+
* [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]
|
|
12
|
+
* ALTER FOREIGN DATA WRAPPER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export type AlterForeignDataWrapper = AlterForeignDataWrapperChangeOwner | AlterForeignDataWrapperSetOptions;
|
|
16
|
+
/**
|
|
17
|
+
* ALTER FOREIGN DATA WRAPPER ... OWNER TO ...
|
|
18
|
+
*/
|
|
19
|
+
export declare class AlterForeignDataWrapperChangeOwner extends AlterForeignDataWrapperChange {
|
|
20
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
21
|
+
readonly owner: string;
|
|
22
|
+
readonly scope: "object";
|
|
23
|
+
constructor(props: {
|
|
24
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
25
|
+
owner: string;
|
|
26
|
+
});
|
|
27
|
+
get requires(): (`role:${string}` | `foreignDataWrapper:${string}`)[];
|
|
28
|
+
serialize(): string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* ALTER FOREIGN DATA WRAPPER ... OPTIONS ( ADD | SET | DROP ... )
|
|
32
|
+
*/
|
|
33
|
+
export declare class AlterForeignDataWrapperSetOptions extends AlterForeignDataWrapperChange {
|
|
34
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
35
|
+
readonly options: Array<{
|
|
36
|
+
action: "ADD" | "SET" | "DROP";
|
|
37
|
+
option: string;
|
|
38
|
+
value?: string;
|
|
39
|
+
}>;
|
|
40
|
+
readonly scope: "object";
|
|
41
|
+
constructor(props: {
|
|
42
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
43
|
+
options: Array<{
|
|
44
|
+
action: "ADD" | "SET" | "DROP";
|
|
45
|
+
option: string;
|
|
46
|
+
value?: string;
|
|
47
|
+
}>;
|
|
48
|
+
});
|
|
49
|
+
get requires(): `foreignDataWrapper:${string}`[];
|
|
50
|
+
serialize(): string;
|
|
51
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../../base.change.js";
|
|
2
|
+
import { stableId } from "../../../utils.js";
|
|
3
|
+
import { AlterForeignDataWrapperChange } from "./foreign-data-wrapper.base.js";
|
|
4
|
+
/**
|
|
5
|
+
* ALTER FOREIGN DATA WRAPPER ... OWNER TO ...
|
|
6
|
+
*/
|
|
7
|
+
export class AlterForeignDataWrapperChangeOwner extends AlterForeignDataWrapperChange {
|
|
8
|
+
foreignDataWrapper;
|
|
9
|
+
owner;
|
|
10
|
+
scope = "object";
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super();
|
|
13
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
14
|
+
this.owner = props.owner;
|
|
15
|
+
}
|
|
16
|
+
get requires() {
|
|
17
|
+
return [this.foreignDataWrapper.stableId, stableId.role(this.owner)];
|
|
18
|
+
}
|
|
19
|
+
serialize() {
|
|
20
|
+
return [
|
|
21
|
+
"ALTER FOREIGN DATA WRAPPER",
|
|
22
|
+
this.foreignDataWrapper.name,
|
|
23
|
+
"OWNER TO",
|
|
24
|
+
this.owner,
|
|
25
|
+
].join(" ");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* ALTER FOREIGN DATA WRAPPER ... OPTIONS ( ADD | SET | DROP ... )
|
|
30
|
+
*/
|
|
31
|
+
export class AlterForeignDataWrapperSetOptions extends AlterForeignDataWrapperChange {
|
|
32
|
+
foreignDataWrapper;
|
|
33
|
+
options;
|
|
34
|
+
scope = "object";
|
|
35
|
+
constructor(props) {
|
|
36
|
+
super();
|
|
37
|
+
this.foreignDataWrapper = props.foreignDataWrapper;
|
|
38
|
+
this.options = props.options;
|
|
39
|
+
}
|
|
40
|
+
get requires() {
|
|
41
|
+
return [this.foreignDataWrapper.stableId];
|
|
42
|
+
}
|
|
43
|
+
serialize() {
|
|
44
|
+
const optionParts = [];
|
|
45
|
+
for (const opt of this.options) {
|
|
46
|
+
if (opt.action === "DROP") {
|
|
47
|
+
optionParts.push(`DROP ${opt.option}`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const value = opt.value !== undefined ? quoteLiteral(opt.value) : "''";
|
|
51
|
+
optionParts.push(`${opt.action} ${opt.option} ${value}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return [
|
|
55
|
+
"ALTER FOREIGN DATA WRAPPER",
|
|
56
|
+
this.foreignDataWrapper.name,
|
|
57
|
+
"OPTIONS",
|
|
58
|
+
`(${optionParts.join(", ")})`,
|
|
59
|
+
].join(" ");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../../base.change.ts";
|
|
2
|
+
import type { ForeignDataWrapper } from "../foreign-data-wrapper.model.ts";
|
|
3
|
+
declare abstract class BaseForeignDataWrapperChange extends BaseChange {
|
|
4
|
+
abstract readonly foreignDataWrapper: ForeignDataWrapper;
|
|
5
|
+
abstract readonly scope: "object" | "comment" | "privilege";
|
|
6
|
+
readonly objectType: "foreign_data_wrapper";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateForeignDataWrapperChange extends BaseForeignDataWrapperChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterForeignDataWrapperChange extends BaseForeignDataWrapperChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropForeignDataWrapperChange extends BaseForeignDataWrapperChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseChange } from "../../../base.change.js";
|
|
2
|
+
class BaseForeignDataWrapperChange extends BaseChange {
|
|
3
|
+
objectType = "foreign_data_wrapper";
|
|
4
|
+
}
|
|
5
|
+
export class CreateForeignDataWrapperChange extends BaseForeignDataWrapperChange {
|
|
6
|
+
operation = "create";
|
|
7
|
+
}
|
|
8
|
+
export class AlterForeignDataWrapperChange extends BaseForeignDataWrapperChange {
|
|
9
|
+
operation = "alter";
|
|
10
|
+
}
|
|
11
|
+
export class DropForeignDataWrapperChange extends BaseForeignDataWrapperChange {
|
|
12
|
+
operation = "drop";
|
|
13
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ForeignDataWrapper } from "../foreign-data-wrapper.model.ts";
|
|
2
|
+
import { CreateForeignDataWrapperChange, DropForeignDataWrapperChange } from "./foreign-data-wrapper.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Create/drop comments on foreign data wrappers.
|
|
5
|
+
*/
|
|
6
|
+
export type CommentForeignDataWrapper = CreateCommentOnForeignDataWrapper | DropCommentOnForeignDataWrapper;
|
|
7
|
+
export declare class CreateCommentOnForeignDataWrapper extends CreateForeignDataWrapperChange {
|
|
8
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
9
|
+
readonly scope: "comment";
|
|
10
|
+
constructor(props: {
|
|
11
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
12
|
+
});
|
|
13
|
+
get creates(): `comment:${string}`[];
|
|
14
|
+
get requires(): `foreignDataWrapper:${string}`[];
|
|
15
|
+
serialize(): string;
|
|
16
|
+
}
|
|
17
|
+
export declare class DropCommentOnForeignDataWrapper extends DropForeignDataWrapperChange {
|
|
18
|
+
readonly foreignDataWrapper: ForeignDataWrapper;
|
|
19
|
+
readonly scope: "comment";
|
|
20
|
+
constructor(props: {
|
|
21
|
+
foreignDataWrapper: ForeignDataWrapper;
|
|
22
|
+
});
|
|
23
|
+
get drops(): `comment:${string}`[];
|
|
24
|
+
get requires(): (`comment:${string}` | `foreignDataWrapper:${string}`)[];
|
|
25
|
+
serialize(): string;
|
|
26
|
+
}
|