@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,258 @@
|
|
|
1
|
+
import { diffObjects } from "../base.diff.js";
|
|
2
|
+
import { diffPrivileges, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
|
|
3
|
+
import { hasNonAlterableChanges } from "../utils.js";
|
|
4
|
+
import { AlterSequenceSetOptions, AlterSequenceSetOwnedBy, } from "./changes/sequence.alter.js";
|
|
5
|
+
import { CreateCommentOnSequence, DropCommentOnSequence, } from "./changes/sequence.comment.js";
|
|
6
|
+
import { CreateSequence } from "./changes/sequence.create.js";
|
|
7
|
+
import { DropSequence } from "./changes/sequence.drop.js";
|
|
8
|
+
import { GrantSequencePrivileges, RevokeGrantOptionSequencePrivileges, RevokeSequencePrivileges, } from "./changes/sequence.privilege.js";
|
|
9
|
+
/**
|
|
10
|
+
* Diff two sets of sequences from main and branch catalogs.
|
|
11
|
+
*
|
|
12
|
+
* @param ctx - Context containing version, currentUser, and defaultPrivilegeState
|
|
13
|
+
* @param main - The sequences in the main catalog.
|
|
14
|
+
* @param branch - The sequences in the branch catalog.
|
|
15
|
+
* @param branchTables - The tables in the branch catalog (used to check if owning tables are being dropped).
|
|
16
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
17
|
+
*/
|
|
18
|
+
export function diffSequences(ctx, main, branch, branchTables = {}) {
|
|
19
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
20
|
+
const changes = [];
|
|
21
|
+
for (const sequenceId of created) {
|
|
22
|
+
const createdSeq = branch[sequenceId];
|
|
23
|
+
changes.push(new CreateSequence({ sequence: createdSeq }));
|
|
24
|
+
if (createdSeq.comment !== null) {
|
|
25
|
+
changes.push(new CreateCommentOnSequence({ sequence: createdSeq }));
|
|
26
|
+
}
|
|
27
|
+
// If the created sequence is OWNED BY a column, emit an ALTER to set it
|
|
28
|
+
if (createdSeq.owned_by_schema !== null &&
|
|
29
|
+
createdSeq.owned_by_table !== null &&
|
|
30
|
+
createdSeq.owned_by_column !== null) {
|
|
31
|
+
changes.push(new AlterSequenceSetOwnedBy({
|
|
32
|
+
sequence: createdSeq,
|
|
33
|
+
ownedBy: {
|
|
34
|
+
schema: createdSeq.owned_by_schema,
|
|
35
|
+
table: createdSeq.owned_by_table,
|
|
36
|
+
column: createdSeq.owned_by_column,
|
|
37
|
+
},
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
// PRIVILEGES: For created objects, compare against default privileges state
|
|
41
|
+
// The migration script will run ALTER DEFAULT PRIVILEGES before CREATE (via constraint spec),
|
|
42
|
+
// so objects are created with the default privileges state in effect.
|
|
43
|
+
// We compare default privileges against desired privileges to generate REVOKE/GRANT statements
|
|
44
|
+
// needed to reach the final desired state.
|
|
45
|
+
const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "sequence", createdSeq.schema ?? "");
|
|
46
|
+
const desiredPrivileges = createdSeq.privileges;
|
|
47
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
48
|
+
// and shouldn't be compared. Use the sequence owner as the reference.
|
|
49
|
+
// Superuser privileges are filtered inside diffPrivileges.
|
|
50
|
+
const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, createdSeq.owner, ctx.mainRoles);
|
|
51
|
+
// Generate grant changes
|
|
52
|
+
for (const [grantee, result] of privilegeResults) {
|
|
53
|
+
if (result.grants.length > 0) {
|
|
54
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
55
|
+
for (const [grantable, list] of grantGroups) {
|
|
56
|
+
void grantable;
|
|
57
|
+
changes.push(new GrantSequencePrivileges({
|
|
58
|
+
sequence: createdSeq,
|
|
59
|
+
grantee,
|
|
60
|
+
privileges: list,
|
|
61
|
+
version: ctx.version,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Generate revoke changes
|
|
66
|
+
if (result.revokes.length > 0) {
|
|
67
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
68
|
+
for (const [grantable, list] of revokeGroups) {
|
|
69
|
+
void grantable;
|
|
70
|
+
changes.push(new RevokeSequencePrivileges({
|
|
71
|
+
sequence: createdSeq,
|
|
72
|
+
grantee,
|
|
73
|
+
privileges: list,
|
|
74
|
+
version: ctx.version,
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Generate revoke grant option changes
|
|
79
|
+
if (result.revokeGrantOption.length > 0) {
|
|
80
|
+
changes.push(new RevokeGrantOptionSequencePrivileges({
|
|
81
|
+
sequence: createdSeq,
|
|
82
|
+
grantee,
|
|
83
|
+
privilegeNames: result.revokeGrantOption,
|
|
84
|
+
version: ctx.version,
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const sequenceId of dropped) {
|
|
90
|
+
const sequence = main[sequenceId];
|
|
91
|
+
// Skip generating DROP SEQUENCE if the sequence is owned by a table that's being dropped.
|
|
92
|
+
// PostgreSQL automatically drops sequences owned by tables when the table is dropped,
|
|
93
|
+
// so generating DROP SEQUENCE would cause an error (sequence doesn't exist).
|
|
94
|
+
if (sequence.owned_by_schema &&
|
|
95
|
+
sequence.owned_by_table &&
|
|
96
|
+
sequence.owned_by_column) {
|
|
97
|
+
const ownedByTableId = `table:${sequence.owned_by_schema}.${sequence.owned_by_table}`;
|
|
98
|
+
// If the owning table doesn't exist in branch catalog, it's being dropped
|
|
99
|
+
// and will auto-drop this sequence, so skip generating DROP SEQUENCE
|
|
100
|
+
if (!(ownedByTableId in branchTables)) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
changes.push(new DropSequence({ sequence }));
|
|
105
|
+
}
|
|
106
|
+
for (const sequenceId of altered) {
|
|
107
|
+
const mainSequence = main[sequenceId];
|
|
108
|
+
const branchSequence = branch[sequenceId];
|
|
109
|
+
// Check if non-alterable properties have changed
|
|
110
|
+
// These require dropping and recreating the sequence
|
|
111
|
+
const NON_ALTERABLE_FIELDS = [
|
|
112
|
+
"data_type",
|
|
113
|
+
"persistence",
|
|
114
|
+
];
|
|
115
|
+
const nonAlterablePropsChanged = hasNonAlterableChanges(mainSequence, branchSequence, NON_ALTERABLE_FIELDS);
|
|
116
|
+
if (nonAlterablePropsChanged) {
|
|
117
|
+
// Replace the entire sequence (drop + create)
|
|
118
|
+
changes.push(new DropSequence({ sequence: mainSequence }), new CreateSequence({ sequence: branchSequence }));
|
|
119
|
+
// Re-apply OWNED BY if present on branch
|
|
120
|
+
if (branchSequence.owned_by_schema !== null &&
|
|
121
|
+
branchSequence.owned_by_table !== null &&
|
|
122
|
+
branchSequence.owned_by_column !== null) {
|
|
123
|
+
changes.push(new AlterSequenceSetOwnedBy({
|
|
124
|
+
sequence: branchSequence,
|
|
125
|
+
ownedBy: {
|
|
126
|
+
schema: branchSequence.owned_by_schema,
|
|
127
|
+
table: branchSequence.owned_by_table,
|
|
128
|
+
column: branchSequence.owned_by_column,
|
|
129
|
+
},
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
else if (mainSequence.owned_by_schema !== null ||
|
|
133
|
+
mainSequence.owned_by_table !== null ||
|
|
134
|
+
mainSequence.owned_by_column !== null) {
|
|
135
|
+
// If main had ownership but branch removed it, emit OWNED BY NONE
|
|
136
|
+
changes.push(new AlterSequenceSetOwnedBy({
|
|
137
|
+
sequence: mainSequence,
|
|
138
|
+
ownedBy: null,
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Only alterable properties changed - emit ALTER for options/owner
|
|
144
|
+
const optionsChanged = mainSequence.increment !== branchSequence.increment ||
|
|
145
|
+
mainSequence.minimum_value !== branchSequence.minimum_value ||
|
|
146
|
+
mainSequence.maximum_value !== branchSequence.maximum_value ||
|
|
147
|
+
mainSequence.start_value !== branchSequence.start_value ||
|
|
148
|
+
mainSequence.cache_size !== branchSequence.cache_size ||
|
|
149
|
+
mainSequence.cycle_option !== branchSequence.cycle_option;
|
|
150
|
+
if (optionsChanged) {
|
|
151
|
+
const options = [];
|
|
152
|
+
if (mainSequence.increment !== branchSequence.increment) {
|
|
153
|
+
options.push("INCREMENT BY", String(branchSequence.increment));
|
|
154
|
+
}
|
|
155
|
+
if (mainSequence.minimum_value !== branchSequence.minimum_value) {
|
|
156
|
+
const defaultMin = BigInt(1);
|
|
157
|
+
if (branchSequence.minimum_value === defaultMin) {
|
|
158
|
+
options.push("NO MINVALUE");
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
options.push("MINVALUE", branchSequence.minimum_value.toString());
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (mainSequence.maximum_value !== branchSequence.maximum_value) {
|
|
165
|
+
const defaultMax = branchSequence.data_type === "integer"
|
|
166
|
+
? BigInt("2147483647")
|
|
167
|
+
: BigInt("9223372036854775807");
|
|
168
|
+
if (branchSequence.maximum_value === defaultMax) {
|
|
169
|
+
options.push("NO MAXVALUE");
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
options.push("MAXVALUE", branchSequence.maximum_value.toString());
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (mainSequence.start_value !== branchSequence.start_value) {
|
|
176
|
+
options.push("START WITH", String(branchSequence.start_value));
|
|
177
|
+
}
|
|
178
|
+
if (mainSequence.cache_size !== branchSequence.cache_size) {
|
|
179
|
+
options.push("CACHE", String(branchSequence.cache_size));
|
|
180
|
+
}
|
|
181
|
+
if (mainSequence.cycle_option !== branchSequence.cycle_option) {
|
|
182
|
+
options.push(branchSequence.cycle_option ? "CYCLE" : "NO CYCLE");
|
|
183
|
+
}
|
|
184
|
+
changes.push(new AlterSequenceSetOptions({ sequence: mainSequence, options }));
|
|
185
|
+
}
|
|
186
|
+
const ownedByChanged = mainSequence.owned_by_schema !== branchSequence.owned_by_schema ||
|
|
187
|
+
mainSequence.owned_by_table !== branchSequence.owned_by_table ||
|
|
188
|
+
mainSequence.owned_by_column !== branchSequence.owned_by_column;
|
|
189
|
+
if (ownedByChanged) {
|
|
190
|
+
const ownedBy = branchSequence.owned_by_schema &&
|
|
191
|
+
branchSequence.owned_by_table &&
|
|
192
|
+
branchSequence.owned_by_column
|
|
193
|
+
? {
|
|
194
|
+
schema: branchSequence.owned_by_schema,
|
|
195
|
+
table: branchSequence.owned_by_table,
|
|
196
|
+
column: branchSequence.owned_by_column,
|
|
197
|
+
}
|
|
198
|
+
: null;
|
|
199
|
+
changes.push(new AlterSequenceSetOwnedBy({ sequence: mainSequence, ownedBy }));
|
|
200
|
+
}
|
|
201
|
+
// COMMENT
|
|
202
|
+
if (mainSequence.comment !== branchSequence.comment) {
|
|
203
|
+
if (branchSequence.comment === null) {
|
|
204
|
+
changes.push(new DropCommentOnSequence({ sequence: mainSequence }));
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
changes.push(new CreateCommentOnSequence({ sequence: branchSequence }));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// PRIVILEGES
|
|
211
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
212
|
+
// and shouldn't be compared. Use branch owner as the reference.
|
|
213
|
+
// Superuser privileges are filtered inside diffPrivileges.
|
|
214
|
+
const privilegeResults = diffPrivileges(mainSequence.privileges, branchSequence.privileges, branchSequence.owner, ctx.mainRoles);
|
|
215
|
+
for (const [grantee, result] of privilegeResults) {
|
|
216
|
+
// Generate grant changes
|
|
217
|
+
if (result.grants.length > 0) {
|
|
218
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
219
|
+
for (const [grantable, list] of grantGroups) {
|
|
220
|
+
void grantable;
|
|
221
|
+
changes.push(new GrantSequencePrivileges({
|
|
222
|
+
sequence: branchSequence,
|
|
223
|
+
grantee,
|
|
224
|
+
privileges: list,
|
|
225
|
+
version: ctx.version,
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Generate revoke changes
|
|
230
|
+
if (result.revokes.length > 0) {
|
|
231
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
232
|
+
for (const [grantable, list] of revokeGroups) {
|
|
233
|
+
void grantable;
|
|
234
|
+
changes.push(new RevokeSequencePrivileges({
|
|
235
|
+
sequence: mainSequence,
|
|
236
|
+
grantee,
|
|
237
|
+
privileges: list,
|
|
238
|
+
version: ctx.version,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Generate revoke grant option changes
|
|
243
|
+
if (result.revokeGrantOption.length > 0) {
|
|
244
|
+
changes.push(new RevokeGrantOptionSequencePrivileges({
|
|
245
|
+
sequence: mainSequence,
|
|
246
|
+
grantee,
|
|
247
|
+
privilegeNames: result.revokeGrantOption,
|
|
248
|
+
version: ctx.version,
|
|
249
|
+
}));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Note: Sequence renaming would also use ALTER SEQUENCE ... RENAME TO ...
|
|
253
|
+
// But since our Sequence model uses 'name' as the identity field,
|
|
254
|
+
// a name change would be handled as drop + create by diffObjects()
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return changes;
|
|
258
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Sql } from "postgres";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { BasePgModel } from "../base.model.ts";
|
|
4
|
+
import { type PrivilegeProps } from "../base.privilege-diff.ts";
|
|
5
|
+
declare const sequencePropsSchema: z.ZodObject<{
|
|
6
|
+
schema: z.ZodString;
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
data_type: z.ZodString;
|
|
9
|
+
start_value: z.ZodNumber;
|
|
10
|
+
minimum_value: z.ZodBigInt;
|
|
11
|
+
maximum_value: z.ZodBigInt;
|
|
12
|
+
increment: z.ZodNumber;
|
|
13
|
+
cycle_option: z.ZodBoolean;
|
|
14
|
+
cache_size: z.ZodNumber;
|
|
15
|
+
persistence: z.ZodString;
|
|
16
|
+
owned_by_schema: z.ZodNullable<z.ZodString>;
|
|
17
|
+
owned_by_table: z.ZodNullable<z.ZodString>;
|
|
18
|
+
owned_by_column: z.ZodNullable<z.ZodString>;
|
|
19
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
20
|
+
privileges: z.ZodArray<z.ZodObject<{
|
|
21
|
+
grantee: z.ZodString;
|
|
22
|
+
privilege: z.ZodString;
|
|
23
|
+
grantable: z.ZodBoolean;
|
|
24
|
+
columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
25
|
+
}, z.z.core.$strip>>;
|
|
26
|
+
owner: z.ZodString;
|
|
27
|
+
}, z.z.core.$strip>;
|
|
28
|
+
type SequencePrivilegeProps = PrivilegeProps;
|
|
29
|
+
export type SequenceProps = z.infer<typeof sequencePropsSchema>;
|
|
30
|
+
export declare class Sequence extends BasePgModel {
|
|
31
|
+
readonly schema: SequenceProps["schema"];
|
|
32
|
+
readonly name: SequenceProps["name"];
|
|
33
|
+
readonly data_type: SequenceProps["data_type"];
|
|
34
|
+
readonly start_value: SequenceProps["start_value"];
|
|
35
|
+
readonly minimum_value: SequenceProps["minimum_value"];
|
|
36
|
+
readonly maximum_value: SequenceProps["maximum_value"];
|
|
37
|
+
readonly increment: SequenceProps["increment"];
|
|
38
|
+
readonly cycle_option: SequenceProps["cycle_option"];
|
|
39
|
+
readonly cache_size: SequenceProps["cache_size"];
|
|
40
|
+
readonly persistence: SequenceProps["persistence"];
|
|
41
|
+
readonly owned_by_schema: SequenceProps["owned_by_schema"];
|
|
42
|
+
readonly owned_by_table: SequenceProps["owned_by_table"];
|
|
43
|
+
readonly owned_by_column: SequenceProps["owned_by_column"];
|
|
44
|
+
readonly comment: SequenceProps["comment"];
|
|
45
|
+
readonly privileges: SequencePrivilegeProps[];
|
|
46
|
+
readonly owner: SequenceProps["owner"];
|
|
47
|
+
constructor(props: SequenceProps);
|
|
48
|
+
get stableId(): `sequence:${string}`;
|
|
49
|
+
get identityFields(): {
|
|
50
|
+
schema: string;
|
|
51
|
+
name: string;
|
|
52
|
+
};
|
|
53
|
+
get dataFields(): {
|
|
54
|
+
data_type: string;
|
|
55
|
+
start_value: number;
|
|
56
|
+
minimum_value: bigint;
|
|
57
|
+
maximum_value: bigint;
|
|
58
|
+
increment: number;
|
|
59
|
+
cycle_option: boolean;
|
|
60
|
+
cache_size: number;
|
|
61
|
+
persistence: string;
|
|
62
|
+
owned_by_schema: string | null;
|
|
63
|
+
owned_by_table: string | null;
|
|
64
|
+
owned_by_column: string | null;
|
|
65
|
+
comment: string | null;
|
|
66
|
+
privileges: {
|
|
67
|
+
grantee: string;
|
|
68
|
+
privilege: string;
|
|
69
|
+
grantable: boolean;
|
|
70
|
+
columns?: string[] | null | undefined;
|
|
71
|
+
}[];
|
|
72
|
+
owner: string;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export declare function extractSequences(sql: Sql): Promise<Sequence[]>;
|
|
76
|
+
export {};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../base.model.js";
|
|
3
|
+
import { privilegePropsSchema, } from "../base.privilege-diff.js";
|
|
4
|
+
const sequencePropsSchema = z.object({
|
|
5
|
+
schema: z.string(),
|
|
6
|
+
name: z.string(),
|
|
7
|
+
data_type: z.string(),
|
|
8
|
+
start_value: z.number(),
|
|
9
|
+
minimum_value: z.bigint(),
|
|
10
|
+
maximum_value: z.bigint(),
|
|
11
|
+
increment: z.number(),
|
|
12
|
+
cycle_option: z.boolean(),
|
|
13
|
+
cache_size: z.number(),
|
|
14
|
+
persistence: z.string(),
|
|
15
|
+
owned_by_schema: z.string().nullable(),
|
|
16
|
+
owned_by_table: z.string().nullable(),
|
|
17
|
+
owned_by_column: z.string().nullable(),
|
|
18
|
+
comment: z.string().nullable(),
|
|
19
|
+
privileges: z.array(privilegePropsSchema),
|
|
20
|
+
owner: z.string(),
|
|
21
|
+
});
|
|
22
|
+
export class Sequence extends BasePgModel {
|
|
23
|
+
schema;
|
|
24
|
+
name;
|
|
25
|
+
data_type;
|
|
26
|
+
start_value;
|
|
27
|
+
minimum_value;
|
|
28
|
+
maximum_value;
|
|
29
|
+
increment;
|
|
30
|
+
cycle_option;
|
|
31
|
+
cache_size;
|
|
32
|
+
persistence;
|
|
33
|
+
owned_by_schema;
|
|
34
|
+
owned_by_table;
|
|
35
|
+
owned_by_column;
|
|
36
|
+
comment;
|
|
37
|
+
privileges;
|
|
38
|
+
owner;
|
|
39
|
+
constructor(props) {
|
|
40
|
+
super();
|
|
41
|
+
// Identity fields
|
|
42
|
+
this.schema = props.schema;
|
|
43
|
+
this.name = props.name;
|
|
44
|
+
// Data fields
|
|
45
|
+
this.data_type = props.data_type;
|
|
46
|
+
this.start_value = props.start_value;
|
|
47
|
+
this.minimum_value = props.minimum_value;
|
|
48
|
+
this.maximum_value = props.maximum_value;
|
|
49
|
+
this.increment = props.increment;
|
|
50
|
+
this.cycle_option = props.cycle_option;
|
|
51
|
+
this.cache_size = props.cache_size;
|
|
52
|
+
this.persistence = props.persistence;
|
|
53
|
+
this.owned_by_schema = props.owned_by_schema;
|
|
54
|
+
this.owned_by_table = props.owned_by_table;
|
|
55
|
+
this.owned_by_column = props.owned_by_column;
|
|
56
|
+
this.comment = props.comment;
|
|
57
|
+
this.privileges = props.privileges;
|
|
58
|
+
this.owner = props.owner;
|
|
59
|
+
}
|
|
60
|
+
get stableId() {
|
|
61
|
+
return `sequence:${this.schema}.${this.name}`;
|
|
62
|
+
}
|
|
63
|
+
get identityFields() {
|
|
64
|
+
return {
|
|
65
|
+
schema: this.schema,
|
|
66
|
+
name: this.name,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
get dataFields() {
|
|
70
|
+
return {
|
|
71
|
+
data_type: this.data_type,
|
|
72
|
+
start_value: this.start_value,
|
|
73
|
+
minimum_value: this.minimum_value,
|
|
74
|
+
maximum_value: this.maximum_value,
|
|
75
|
+
increment: this.increment,
|
|
76
|
+
cycle_option: this.cycle_option,
|
|
77
|
+
cache_size: this.cache_size,
|
|
78
|
+
persistence: this.persistence,
|
|
79
|
+
owned_by_schema: this.owned_by_schema,
|
|
80
|
+
owned_by_table: this.owned_by_table,
|
|
81
|
+
owned_by_column: this.owned_by_column,
|
|
82
|
+
comment: this.comment,
|
|
83
|
+
privileges: this.privileges,
|
|
84
|
+
owner: this.owner,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export async function extractSequences(sql) {
|
|
89
|
+
return sql.begin(async (sql) => {
|
|
90
|
+
await sql `set search_path = ''`;
|
|
91
|
+
const sequenceRows = await sql `
|
|
92
|
+
with extension_sequence_oids as (
|
|
93
|
+
select
|
|
94
|
+
objid
|
|
95
|
+
from
|
|
96
|
+
pg_depend d
|
|
97
|
+
where
|
|
98
|
+
d.refclassid = 'pg_extension'::regclass
|
|
99
|
+
and d.classid = 'pg_class'::regclass
|
|
100
|
+
),
|
|
101
|
+
extension_table_oids as (
|
|
102
|
+
select
|
|
103
|
+
objid
|
|
104
|
+
from
|
|
105
|
+
pg_depend d
|
|
106
|
+
where
|
|
107
|
+
d.refclassid = 'pg_extension'::regclass
|
|
108
|
+
and d.classid = 'pg_class'::regclass
|
|
109
|
+
and d.deptype = 'e'
|
|
110
|
+
)
|
|
111
|
+
select
|
|
112
|
+
c.relnamespace::regnamespace::text as schema,
|
|
113
|
+
quote_ident(c.relname) as name,
|
|
114
|
+
format_type(s.seqtypid, null) as data_type,
|
|
115
|
+
s.seqstart::int as start_value,
|
|
116
|
+
s.seqmin as minimum_value,
|
|
117
|
+
s.seqmax as maximum_value,
|
|
118
|
+
s.seqincrement::int as increment,
|
|
119
|
+
s.seqcycle as cycle_option,
|
|
120
|
+
s.seqcache::int as cache_size,
|
|
121
|
+
c.relpersistence as persistence,
|
|
122
|
+
quote_ident(t_ns.nspname) as owned_by_schema,
|
|
123
|
+
case when t.relname is not null then quote_ident(t.relname) else null end as owned_by_table,
|
|
124
|
+
case when att.attname is not null then quote_ident(att.attname) else null end as owned_by_column,
|
|
125
|
+
obj_description(c.oid, 'pg_class') as comment,
|
|
126
|
+
coalesce(
|
|
127
|
+
(
|
|
128
|
+
select json_agg(
|
|
129
|
+
json_build_object(
|
|
130
|
+
'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
|
|
131
|
+
'privilege', x.privilege_type,
|
|
132
|
+
'grantable', x.is_grantable
|
|
133
|
+
)
|
|
134
|
+
order by x.grantee, x.privilege_type
|
|
135
|
+
)
|
|
136
|
+
from lateral aclexplode(c.relacl) as x(grantor, grantee, privilege_type, is_grantable)
|
|
137
|
+
), '[]'
|
|
138
|
+
) as privileges,
|
|
139
|
+
c.relowner::regrole::text as owner
|
|
140
|
+
from
|
|
141
|
+
pg_catalog.pg_class c
|
|
142
|
+
inner join pg_catalog.pg_sequence s on s.seqrelid = c.oid
|
|
143
|
+
left join pg_depend d on d.classid = 'pg_class'::regclass and d.objid = c.oid and d.refclassid = 'pg_class'::regclass and d.deptype = 'a'
|
|
144
|
+
left join pg_class t on t.oid = d.refobjid
|
|
145
|
+
left join pg_namespace t_ns on t.relnamespace = t_ns.oid
|
|
146
|
+
left join pg_attribute att on att.attrelid = t.oid and att.attnum = d.refobjsubid and d.refobjsubid > 0
|
|
147
|
+
left outer join extension_sequence_oids e_seq on c.oid = e_seq.objid
|
|
148
|
+
left outer join extension_table_oids e_table on t.oid = e_table.objid
|
|
149
|
+
where not c.relnamespace::regnamespace::text like any(array['pg\\_%', 'information\\_schema'])
|
|
150
|
+
and e_seq.objid is null
|
|
151
|
+
and (t.oid is null or e_table.objid is null)
|
|
152
|
+
and c.relkind = 'S'
|
|
153
|
+
-- exclude sequences that are tied to an IDENTITY column
|
|
154
|
+
and not exists (
|
|
155
|
+
select 1
|
|
156
|
+
from pg_depend di
|
|
157
|
+
where di.classid = 'pg_class'::regclass
|
|
158
|
+
and di.objid = c.oid
|
|
159
|
+
and di.refclassid = 'pg_class'::regclass
|
|
160
|
+
and di.deptype = 'i'
|
|
161
|
+
)
|
|
162
|
+
order by
|
|
163
|
+
1, 2;
|
|
164
|
+
`;
|
|
165
|
+
// Validate and parse each row using the Zod schema
|
|
166
|
+
const validatedRows = sequenceRows.map((row) => sequencePropsSchema.parse(row));
|
|
167
|
+
return validatedRows.map((row) => new Sequence(row));
|
|
168
|
+
});
|
|
169
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Subscription } from "../subscription.model.ts";
|
|
2
|
+
import { type SubscriptionSettableOption } from "../utils.ts";
|
|
3
|
+
import { AlterSubscriptionChange } from "./subscription.base.ts";
|
|
4
|
+
export declare class AlterSubscriptionSetConnection extends AlterSubscriptionChange {
|
|
5
|
+
readonly subscription: Subscription;
|
|
6
|
+
readonly scope: "object";
|
|
7
|
+
constructor(props: {
|
|
8
|
+
subscription: Subscription;
|
|
9
|
+
});
|
|
10
|
+
serialize(): string;
|
|
11
|
+
}
|
|
12
|
+
export declare class AlterSubscriptionSetPublication extends AlterSubscriptionChange {
|
|
13
|
+
readonly subscription: Subscription;
|
|
14
|
+
readonly scope: "object";
|
|
15
|
+
constructor(props: {
|
|
16
|
+
subscription: Subscription;
|
|
17
|
+
});
|
|
18
|
+
serialize(): string;
|
|
19
|
+
}
|
|
20
|
+
export declare class AlterSubscriptionEnable extends AlterSubscriptionChange {
|
|
21
|
+
readonly subscription: Subscription;
|
|
22
|
+
readonly scope: "object";
|
|
23
|
+
constructor(props: {
|
|
24
|
+
subscription: Subscription;
|
|
25
|
+
});
|
|
26
|
+
serialize(): string;
|
|
27
|
+
}
|
|
28
|
+
export declare class AlterSubscriptionDisable extends AlterSubscriptionChange {
|
|
29
|
+
readonly subscription: Subscription;
|
|
30
|
+
readonly scope: "object";
|
|
31
|
+
constructor(props: {
|
|
32
|
+
subscription: Subscription;
|
|
33
|
+
});
|
|
34
|
+
serialize(): string;
|
|
35
|
+
}
|
|
36
|
+
export declare class AlterSubscriptionSetOptions extends AlterSubscriptionChange {
|
|
37
|
+
readonly subscription: Subscription;
|
|
38
|
+
readonly scope: "object";
|
|
39
|
+
private readonly options;
|
|
40
|
+
constructor(props: {
|
|
41
|
+
subscription: Subscription;
|
|
42
|
+
options: SubscriptionSettableOption[];
|
|
43
|
+
});
|
|
44
|
+
serialize(): string;
|
|
45
|
+
}
|
|
46
|
+
export declare class AlterSubscriptionSetOwner extends AlterSubscriptionChange {
|
|
47
|
+
readonly subscription: Subscription;
|
|
48
|
+
readonly scope: "object";
|
|
49
|
+
readonly owner: string;
|
|
50
|
+
constructor(props: {
|
|
51
|
+
subscription: Subscription;
|
|
52
|
+
owner: string;
|
|
53
|
+
});
|
|
54
|
+
get requires(): `role:${string}`[];
|
|
55
|
+
serialize(): string;
|
|
56
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../base.change.js";
|
|
2
|
+
import { stableId } from "../../utils.js";
|
|
3
|
+
import { formatSubscriptionOption, } from "../utils.js";
|
|
4
|
+
import { AlterSubscriptionChange } from "./subscription.base.js";
|
|
5
|
+
export class AlterSubscriptionSetConnection extends AlterSubscriptionChange {
|
|
6
|
+
subscription;
|
|
7
|
+
scope = "object";
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super();
|
|
10
|
+
this.subscription = props.subscription;
|
|
11
|
+
}
|
|
12
|
+
serialize() {
|
|
13
|
+
return `ALTER SUBSCRIPTION ${this.subscription.name} CONNECTION ${quoteLiteral(this.subscription.conninfo)}`;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class AlterSubscriptionSetPublication extends AlterSubscriptionChange {
|
|
17
|
+
subscription;
|
|
18
|
+
scope = "object";
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super();
|
|
21
|
+
this.subscription = props.subscription;
|
|
22
|
+
}
|
|
23
|
+
serialize() {
|
|
24
|
+
const base = `ALTER SUBSCRIPTION ${this.subscription.name} SET PUBLICATION ${this.subscription.publications.join(", ")}`;
|
|
25
|
+
if (!this.subscription.enabled) {
|
|
26
|
+
return `${base} WITH (refresh = false)`;
|
|
27
|
+
}
|
|
28
|
+
return base;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class AlterSubscriptionEnable extends AlterSubscriptionChange {
|
|
32
|
+
subscription;
|
|
33
|
+
scope = "object";
|
|
34
|
+
constructor(props) {
|
|
35
|
+
super();
|
|
36
|
+
this.subscription = props.subscription;
|
|
37
|
+
}
|
|
38
|
+
serialize() {
|
|
39
|
+
return `ALTER SUBSCRIPTION ${this.subscription.name} ENABLE`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class AlterSubscriptionDisable extends AlterSubscriptionChange {
|
|
43
|
+
subscription;
|
|
44
|
+
scope = "object";
|
|
45
|
+
constructor(props) {
|
|
46
|
+
super();
|
|
47
|
+
this.subscription = props.subscription;
|
|
48
|
+
}
|
|
49
|
+
serialize() {
|
|
50
|
+
return `ALTER SUBSCRIPTION ${this.subscription.name} DISABLE`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class AlterSubscriptionSetOptions extends AlterSubscriptionChange {
|
|
54
|
+
subscription;
|
|
55
|
+
scope = "object";
|
|
56
|
+
options;
|
|
57
|
+
constructor(props) {
|
|
58
|
+
super();
|
|
59
|
+
this.subscription = props.subscription;
|
|
60
|
+
this.options = props.options;
|
|
61
|
+
}
|
|
62
|
+
serialize() {
|
|
63
|
+
const assignments = this.options.map((option) => formatSubscriptionOption(this.subscription, option));
|
|
64
|
+
return `ALTER SUBSCRIPTION ${this.subscription.name} SET (${assignments.join(", ")})`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export class AlterSubscriptionSetOwner extends AlterSubscriptionChange {
|
|
68
|
+
subscription;
|
|
69
|
+
scope = "object";
|
|
70
|
+
owner;
|
|
71
|
+
constructor(props) {
|
|
72
|
+
super();
|
|
73
|
+
this.subscription = props.subscription;
|
|
74
|
+
this.owner = props.owner;
|
|
75
|
+
}
|
|
76
|
+
get requires() {
|
|
77
|
+
return [stableId.role(this.owner)];
|
|
78
|
+
}
|
|
79
|
+
serialize() {
|
|
80
|
+
return `ALTER SUBSCRIPTION ${this.subscription.name} OWNER TO ${this.owner}`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { Subscription } from "../subscription.model.ts";
|
|
3
|
+
declare abstract class BaseSubscriptionChange extends BaseChange {
|
|
4
|
+
abstract readonly subscription: Subscription;
|
|
5
|
+
abstract readonly scope: "object" | "comment";
|
|
6
|
+
readonly objectType: "subscription";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateSubscriptionChange extends BaseSubscriptionChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterSubscriptionChange extends BaseSubscriptionChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropSubscriptionChange extends BaseSubscriptionChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.js";
|
|
2
|
+
class BaseSubscriptionChange extends BaseChange {
|
|
3
|
+
objectType = "subscription";
|
|
4
|
+
}
|
|
5
|
+
export class CreateSubscriptionChange extends BaseSubscriptionChange {
|
|
6
|
+
operation = "create";
|
|
7
|
+
}
|
|
8
|
+
export class AlterSubscriptionChange extends BaseSubscriptionChange {
|
|
9
|
+
operation = "alter";
|
|
10
|
+
}
|
|
11
|
+
export class DropSubscriptionChange extends BaseSubscriptionChange {
|
|
12
|
+
operation = "drop";
|
|
13
|
+
}
|