@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,131 @@
|
|
|
1
|
+
import { formatObjectPrivilegeList, getObjectKindPrefix, } from "../../base.privilege.js";
|
|
2
|
+
import { stableId } from "../../utils.js";
|
|
3
|
+
import { AlterSchemaChange } from "./schema.base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Grant privileges on a schema.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-grant.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
|
|
12
|
+
* ON SCHEMA schema_name [, ...]
|
|
13
|
+
* TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
14
|
+
* [ GRANTED BY role_specification ]
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class GrantSchemaPrivileges extends AlterSchemaChange {
|
|
18
|
+
schema;
|
|
19
|
+
grantee;
|
|
20
|
+
privileges;
|
|
21
|
+
version;
|
|
22
|
+
scope = "privilege";
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super();
|
|
25
|
+
this.schema = props.schema;
|
|
26
|
+
this.grantee = props.grantee;
|
|
27
|
+
this.privileges = props.privileges;
|
|
28
|
+
this.version = props.version;
|
|
29
|
+
}
|
|
30
|
+
get creates() {
|
|
31
|
+
return [stableId.acl(this.schema.stableId, this.grantee)];
|
|
32
|
+
}
|
|
33
|
+
get requires() {
|
|
34
|
+
return [this.schema.stableId, stableId.role(this.grantee)];
|
|
35
|
+
}
|
|
36
|
+
serialize() {
|
|
37
|
+
const hasGrantable = this.privileges.some((p) => p.grantable);
|
|
38
|
+
const hasBase = this.privileges.some((p) => !p.grantable);
|
|
39
|
+
if (hasGrantable && hasBase) {
|
|
40
|
+
throw new Error("GrantSchemaPrivileges expects privileges with uniform grantable flag");
|
|
41
|
+
}
|
|
42
|
+
const withGrant = hasGrantable ? " WITH GRANT OPTION" : "";
|
|
43
|
+
const kindPrefix = getObjectKindPrefix("SCHEMA");
|
|
44
|
+
const list = this.privileges.map((p) => p.privilege);
|
|
45
|
+
const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
|
|
46
|
+
const schemaName = this.schema.name;
|
|
47
|
+
return `GRANT ${privSql} ${kindPrefix} ${schemaName} TO ${this.grantee}${withGrant}`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Revoke privileges on a schema.
|
|
52
|
+
*
|
|
53
|
+
* @see https://www.postgresql.org/docs/17/sql-revoke.html
|
|
54
|
+
*
|
|
55
|
+
* Synopsis
|
|
56
|
+
* ```sql
|
|
57
|
+
* REVOKE [ GRANT OPTION FOR ]
|
|
58
|
+
* { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
|
|
59
|
+
* ON SCHEMA schema_name [, ...]
|
|
60
|
+
* FROM role_specification [, ...]
|
|
61
|
+
* [ GRANTED BY role_specification ]
|
|
62
|
+
* [ CASCADE | RESTRICT ]
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export class RevokeSchemaPrivileges extends AlterSchemaChange {
|
|
66
|
+
schema;
|
|
67
|
+
grantee;
|
|
68
|
+
privileges;
|
|
69
|
+
version;
|
|
70
|
+
scope = "privilege";
|
|
71
|
+
constructor(props) {
|
|
72
|
+
super();
|
|
73
|
+
this.schema = props.schema;
|
|
74
|
+
this.grantee = props.grantee;
|
|
75
|
+
this.privileges = props.privileges;
|
|
76
|
+
this.version = props.version;
|
|
77
|
+
}
|
|
78
|
+
get drops() {
|
|
79
|
+
// Return ACL ID for dependency tracking, even though this is an ALTER operation
|
|
80
|
+
// Phase assignment now uses operation type, so this won't affect phase placement
|
|
81
|
+
return [stableId.acl(this.schema.stableId, this.grantee)];
|
|
82
|
+
}
|
|
83
|
+
get requires() {
|
|
84
|
+
return [
|
|
85
|
+
stableId.acl(this.schema.stableId, this.grantee),
|
|
86
|
+
this.schema.stableId,
|
|
87
|
+
stableId.role(this.grantee),
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
serialize() {
|
|
91
|
+
const kindPrefix = getObjectKindPrefix("SCHEMA");
|
|
92
|
+
const list = this.privileges.map((p) => p.privilege);
|
|
93
|
+
const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
|
|
94
|
+
const schemaName = this.schema.name;
|
|
95
|
+
return `REVOKE ${privSql} ${kindPrefix} ${schemaName} FROM ${this.grantee}`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Revoke grant option for privileges on a schema.
|
|
100
|
+
*
|
|
101
|
+
* This removes the ability to grant the privilege to others, but keeps the privilege itself.
|
|
102
|
+
*
|
|
103
|
+
* @see https://www.postgresql.org/docs/17/sql-revoke.html
|
|
104
|
+
*/
|
|
105
|
+
export class RevokeGrantOptionSchemaPrivileges extends AlterSchemaChange {
|
|
106
|
+
schema;
|
|
107
|
+
grantee;
|
|
108
|
+
privilegeNames;
|
|
109
|
+
version;
|
|
110
|
+
scope = "privilege";
|
|
111
|
+
constructor(props) {
|
|
112
|
+
super();
|
|
113
|
+
this.schema = props.schema;
|
|
114
|
+
this.grantee = props.grantee;
|
|
115
|
+
this.privilegeNames = [...new Set(props.privilegeNames)].sort();
|
|
116
|
+
this.version = props.version;
|
|
117
|
+
}
|
|
118
|
+
get requires() {
|
|
119
|
+
return [
|
|
120
|
+
stableId.acl(this.schema.stableId, this.grantee),
|
|
121
|
+
this.schema.stableId,
|
|
122
|
+
stableId.role(this.grantee),
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
serialize() {
|
|
126
|
+
const kindPrefix = getObjectKindPrefix("SCHEMA");
|
|
127
|
+
const privSql = formatObjectPrivilegeList("SCHEMA", this.privilegeNames, this.version);
|
|
128
|
+
const schemaName = this.schema.name;
|
|
129
|
+
return `REVOKE GRANT OPTION FOR ${privSql} ${kindPrefix} ${schemaName} FROM ${this.grantee}`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AlterSchema } from "./schema.alter.ts";
|
|
2
|
+
import type { CommentSchema } from "./schema.comment.ts";
|
|
3
|
+
import type { CreateSchema } from "./schema.create.ts";
|
|
4
|
+
import type { DropSchema } from "./schema.drop.ts";
|
|
5
|
+
import type { SchemaPrivilege } from "./schema.privilege.ts";
|
|
6
|
+
export type SchemaChange = AlterSchema | CommentSchema | CreateSchema | DropSchema | SchemaPrivilege;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DefaultPrivilegeState } from "../base.default-privileges.ts";
|
|
2
|
+
import type { Role } from "../role/role.model.ts";
|
|
3
|
+
import type { SchemaChange } from "./changes/schema.types.ts";
|
|
4
|
+
import type { Schema } from "./schema.model.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Diff two sets of schemas from main and branch catalogs.
|
|
7
|
+
*
|
|
8
|
+
* @param ctx - Context containing version, currentUser, and defaultPrivilegeState
|
|
9
|
+
* @param main - The schemas in the main catalog.
|
|
10
|
+
* @param branch - The schemas in the branch catalog.
|
|
11
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
12
|
+
*/
|
|
13
|
+
export declare function diffSchemas(ctx: {
|
|
14
|
+
version: number;
|
|
15
|
+
currentUser: string;
|
|
16
|
+
defaultPrivilegeState: DefaultPrivilegeState;
|
|
17
|
+
mainRoles: Record<string, Role>;
|
|
18
|
+
}, main: Record<string, Schema>, branch: Record<string, Schema>): SchemaChange[];
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { diffObjects } from "../base.diff.js";
|
|
2
|
+
import { diffPrivileges, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
|
|
3
|
+
import { AlterSchemaChangeOwner } from "./changes/schema.alter.js";
|
|
4
|
+
import { CreateCommentOnSchema, DropCommentOnSchema, } from "./changes/schema.comment.js";
|
|
5
|
+
import { CreateSchema } from "./changes/schema.create.js";
|
|
6
|
+
import { DropSchema } from "./changes/schema.drop.js";
|
|
7
|
+
import { GrantSchemaPrivileges, RevokeGrantOptionSchemaPrivileges, RevokeSchemaPrivileges, } from "./changes/schema.privilege.js";
|
|
8
|
+
/**
|
|
9
|
+
* Diff two sets of schemas from main and branch catalogs.
|
|
10
|
+
*
|
|
11
|
+
* @param ctx - Context containing version, currentUser, and defaultPrivilegeState
|
|
12
|
+
* @param main - The schemas in the main catalog.
|
|
13
|
+
* @param branch - The schemas in the branch catalog.
|
|
14
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
15
|
+
*/
|
|
16
|
+
export function diffSchemas(ctx, main, branch) {
|
|
17
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
18
|
+
const changes = [];
|
|
19
|
+
for (const schemaId of created) {
|
|
20
|
+
const sc = branch[schemaId];
|
|
21
|
+
changes.push(new CreateSchema({ schema: sc }));
|
|
22
|
+
if (sc.comment !== null) {
|
|
23
|
+
changes.push(new CreateCommentOnSchema({ schema: sc }));
|
|
24
|
+
}
|
|
25
|
+
// PRIVILEGES: For created objects, compare against default privileges state
|
|
26
|
+
// The migration script will run ALTER DEFAULT PRIVILEGES before CREATE (via constraint spec),
|
|
27
|
+
// so objects are created with the default privileges state in effect.
|
|
28
|
+
// We compare default privileges against desired privileges to generate REVOKE/GRANT statements
|
|
29
|
+
// needed to reach the final desired state.
|
|
30
|
+
// Note: Schemas don't have a schema property, so we pass empty string
|
|
31
|
+
const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "schema", "");
|
|
32
|
+
const desiredPrivileges = sc.privileges;
|
|
33
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
34
|
+
// and shouldn't be compared. Use the schema owner as the reference.
|
|
35
|
+
const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, sc.owner, ctx.mainRoles);
|
|
36
|
+
// Generate grant changes
|
|
37
|
+
for (const [grantee, result] of privilegeResults) {
|
|
38
|
+
if (result.grants.length > 0) {
|
|
39
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
40
|
+
for (const [grantable, list] of grantGroups) {
|
|
41
|
+
void grantable;
|
|
42
|
+
changes.push(new GrantSchemaPrivileges({
|
|
43
|
+
schema: sc,
|
|
44
|
+
grantee,
|
|
45
|
+
privileges: list,
|
|
46
|
+
version: ctx.version,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Generate revoke changes
|
|
51
|
+
if (result.revokes.length > 0) {
|
|
52
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
53
|
+
for (const [grantable, list] of revokeGroups) {
|
|
54
|
+
void grantable;
|
|
55
|
+
changes.push(new RevokeSchemaPrivileges({
|
|
56
|
+
schema: sc,
|
|
57
|
+
grantee,
|
|
58
|
+
privileges: list,
|
|
59
|
+
version: ctx.version,
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Generate revoke grant option changes
|
|
64
|
+
if (result.revokeGrantOption.length > 0) {
|
|
65
|
+
changes.push(new RevokeGrantOptionSchemaPrivileges({
|
|
66
|
+
schema: sc,
|
|
67
|
+
grantee,
|
|
68
|
+
privilegeNames: result.revokeGrantOption,
|
|
69
|
+
version: ctx.version,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
for (const schemaId of dropped) {
|
|
75
|
+
changes.push(new DropSchema({ schema: main[schemaId] }));
|
|
76
|
+
}
|
|
77
|
+
for (const schemaId of altered) {
|
|
78
|
+
const mainSchema = main[schemaId];
|
|
79
|
+
const branchSchema = branch[schemaId];
|
|
80
|
+
// OWNER
|
|
81
|
+
if (mainSchema.owner !== branchSchema.owner) {
|
|
82
|
+
changes.push(new AlterSchemaChangeOwner({
|
|
83
|
+
schema: mainSchema,
|
|
84
|
+
owner: branchSchema.owner,
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
// COMMENT
|
|
88
|
+
if (mainSchema.comment !== branchSchema.comment) {
|
|
89
|
+
if (branchSchema.comment === null) {
|
|
90
|
+
changes.push(new DropCommentOnSchema({ schema: mainSchema }));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
changes.push(new CreateCommentOnSchema({ schema: branchSchema }));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// PRIVILEGES
|
|
97
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
98
|
+
// and shouldn't be compared. Use branch owner as the reference.
|
|
99
|
+
const privilegeResults = diffPrivileges(mainSchema.privileges, branchSchema.privileges, branchSchema.owner, ctx.mainRoles);
|
|
100
|
+
for (const [grantee, result] of privilegeResults) {
|
|
101
|
+
// Generate grant changes
|
|
102
|
+
if (result.grants.length > 0) {
|
|
103
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
104
|
+
for (const [grantable, list] of grantGroups) {
|
|
105
|
+
void grantable;
|
|
106
|
+
changes.push(new GrantSchemaPrivileges({
|
|
107
|
+
schema: branchSchema,
|
|
108
|
+
grantee,
|
|
109
|
+
privileges: list,
|
|
110
|
+
version: ctx.version,
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Generate revoke changes
|
|
115
|
+
if (result.revokes.length > 0) {
|
|
116
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
117
|
+
for (const [grantable, list] of revokeGroups) {
|
|
118
|
+
void grantable;
|
|
119
|
+
changes.push(new RevokeSchemaPrivileges({
|
|
120
|
+
schema: mainSchema,
|
|
121
|
+
grantee,
|
|
122
|
+
privileges: list,
|
|
123
|
+
version: ctx.version,
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Generate revoke grant option changes
|
|
128
|
+
if (result.revokeGrantOption.length > 0) {
|
|
129
|
+
changes.push(new RevokeGrantOptionSchemaPrivileges({
|
|
130
|
+
schema: mainSchema,
|
|
131
|
+
grantee,
|
|
132
|
+
privilegeNames: result.revokeGrantOption,
|
|
133
|
+
version: ctx.version,
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Note: Schema renaming would also use ALTER SCHEMA ... RENAME TO ...
|
|
138
|
+
// But since our Schema model uses 'schema' as the identity field,
|
|
139
|
+
// a name change would be handled as drop + create by diffObjects()
|
|
140
|
+
}
|
|
141
|
+
return changes;
|
|
142
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* All properties exposed by CREATE SCHEMA statement are included in diff output.
|
|
7
|
+
* https://www.postgresql.org/docs/current/sql-createschema.html
|
|
8
|
+
*
|
|
9
|
+
* ALTER SCHEMA statement can be generated for all properties.
|
|
10
|
+
* https://www.postgresql.org/docs/current/sql-alterschema.html
|
|
11
|
+
*/
|
|
12
|
+
declare const schemaPropsSchema: z.ZodObject<{
|
|
13
|
+
name: z.ZodString;
|
|
14
|
+
owner: z.ZodString;
|
|
15
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
16
|
+
privileges: z.ZodArray<z.ZodObject<{
|
|
17
|
+
grantee: z.ZodString;
|
|
18
|
+
privilege: z.ZodString;
|
|
19
|
+
grantable: z.ZodBoolean;
|
|
20
|
+
columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
21
|
+
}, z.z.core.$strip>>;
|
|
22
|
+
}, z.z.core.$strip>;
|
|
23
|
+
type SchemaPrivilegeProps = PrivilegeProps;
|
|
24
|
+
export type SchemaProps = z.infer<typeof schemaPropsSchema>;
|
|
25
|
+
export declare class Schema extends BasePgModel {
|
|
26
|
+
readonly name: SchemaProps["name"];
|
|
27
|
+
readonly owner: SchemaProps["owner"];
|
|
28
|
+
readonly comment: SchemaProps["comment"];
|
|
29
|
+
readonly privileges: SchemaPrivilegeProps[];
|
|
30
|
+
constructor(props: SchemaProps);
|
|
31
|
+
get stableId(): `schema:${string}`;
|
|
32
|
+
get identityFields(): {
|
|
33
|
+
name: string;
|
|
34
|
+
};
|
|
35
|
+
get dataFields(): {
|
|
36
|
+
owner: string;
|
|
37
|
+
comment: string | null;
|
|
38
|
+
privileges: {
|
|
39
|
+
grantee: string;
|
|
40
|
+
privilege: string;
|
|
41
|
+
grantable: boolean;
|
|
42
|
+
columns?: string[] | null | undefined;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export declare function extractSchemas(sql: Sql): Promise<Schema[]>;
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../base.model.js";
|
|
3
|
+
import { privilegePropsSchema, } from "../base.privilege-diff.js";
|
|
4
|
+
/**
|
|
5
|
+
* All properties exposed by CREATE SCHEMA statement are included in diff output.
|
|
6
|
+
* https://www.postgresql.org/docs/current/sql-createschema.html
|
|
7
|
+
*
|
|
8
|
+
* ALTER SCHEMA statement can be generated for all properties.
|
|
9
|
+
* https://www.postgresql.org/docs/current/sql-alterschema.html
|
|
10
|
+
*/
|
|
11
|
+
const schemaPropsSchema = z.object({
|
|
12
|
+
name: z.string(),
|
|
13
|
+
owner: z.string(),
|
|
14
|
+
comment: z.string().nullable(),
|
|
15
|
+
privileges: z.array(privilegePropsSchema),
|
|
16
|
+
});
|
|
17
|
+
export class Schema extends BasePgModel {
|
|
18
|
+
name;
|
|
19
|
+
owner;
|
|
20
|
+
comment;
|
|
21
|
+
privileges;
|
|
22
|
+
constructor(props) {
|
|
23
|
+
super();
|
|
24
|
+
// Identity fields
|
|
25
|
+
this.name = props.name;
|
|
26
|
+
// Data fields
|
|
27
|
+
this.owner = props.owner;
|
|
28
|
+
this.comment = props.comment;
|
|
29
|
+
this.privileges = props.privileges;
|
|
30
|
+
}
|
|
31
|
+
get stableId() {
|
|
32
|
+
return `schema:${this.name}`;
|
|
33
|
+
}
|
|
34
|
+
get identityFields() {
|
|
35
|
+
return {
|
|
36
|
+
name: this.name,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
get dataFields() {
|
|
40
|
+
return {
|
|
41
|
+
owner: this.owner,
|
|
42
|
+
comment: this.comment,
|
|
43
|
+
privileges: this.privileges,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function extractSchemas(sql) {
|
|
48
|
+
return sql.begin(async (sql) => {
|
|
49
|
+
await sql `set search_path = ''`;
|
|
50
|
+
const schemaRows = await sql `
|
|
51
|
+
with extension_oids as (
|
|
52
|
+
select
|
|
53
|
+
objid
|
|
54
|
+
from
|
|
55
|
+
pg_depend d
|
|
56
|
+
where
|
|
57
|
+
d.refclassid = 'pg_extension'::regclass
|
|
58
|
+
and d.classid = 'pg_namespace'::regclass
|
|
59
|
+
)
|
|
60
|
+
select
|
|
61
|
+
quote_ident(nspname) as name,
|
|
62
|
+
nspowner::regrole::text as owner,
|
|
63
|
+
obj_description(oid, 'pg_namespace') as comment,
|
|
64
|
+
coalesce(
|
|
65
|
+
(
|
|
66
|
+
select json_agg(
|
|
67
|
+
json_build_object(
|
|
68
|
+
'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
|
|
69
|
+
'privilege', x.privilege_type,
|
|
70
|
+
'grantable', x.is_grantable
|
|
71
|
+
)
|
|
72
|
+
order by x.grantee, x.privilege_type
|
|
73
|
+
)
|
|
74
|
+
from lateral aclexplode(nspacl) as x(grantor, grantee, privilege_type, is_grantable)
|
|
75
|
+
), '[]'
|
|
76
|
+
) as privileges
|
|
77
|
+
from
|
|
78
|
+
pg_catalog.pg_namespace
|
|
79
|
+
left outer join extension_oids e on e.objid = oid
|
|
80
|
+
-- <EXCLUDE_INTERNAL>
|
|
81
|
+
where not nspname like any(array['pg\\_%', 'information\\_schema'])
|
|
82
|
+
and e.objid is null
|
|
83
|
+
-- </EXCLUDE_INTERNAL>
|
|
84
|
+
order by
|
|
85
|
+
1;
|
|
86
|
+
`;
|
|
87
|
+
// Validate and parse each row using the Zod schema
|
|
88
|
+
const validatedRows = schemaRows.map((row) => schemaPropsSchema.parse(row));
|
|
89
|
+
return validatedRows.map((row) => new Schema(row));
|
|
90
|
+
});
|
|
91
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Sequence } from "../sequence.model.ts";
|
|
2
|
+
import { AlterSequenceChange } from "./sequence.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Alter a sequence.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-altersequence.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]
|
|
11
|
+
* [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
|
|
12
|
+
* [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ]
|
|
13
|
+
* [ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table_name.column_name | NONE } ]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export type AlterSequence = AlterSequenceSetOptions | AlterSequenceSetOwnedBy;
|
|
17
|
+
/**
|
|
18
|
+
* ALTER SEQUENCE ... OWNED BY ... | OWNED BY NONE
|
|
19
|
+
*/
|
|
20
|
+
export declare class AlterSequenceSetOwnedBy extends AlterSequenceChange {
|
|
21
|
+
readonly sequence: Sequence;
|
|
22
|
+
readonly ownedBy: {
|
|
23
|
+
schema: string;
|
|
24
|
+
table: string;
|
|
25
|
+
column: string;
|
|
26
|
+
} | null;
|
|
27
|
+
readonly scope: "object";
|
|
28
|
+
constructor(props: {
|
|
29
|
+
sequence: Sequence;
|
|
30
|
+
ownedBy: {
|
|
31
|
+
schema: string;
|
|
32
|
+
table: string;
|
|
33
|
+
column: string;
|
|
34
|
+
} | null;
|
|
35
|
+
});
|
|
36
|
+
get creates(): never[];
|
|
37
|
+
get requires(): (`column:${string}.${string}.${string}` | `sequence:${string}`)[];
|
|
38
|
+
serialize(): string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* ALTER SEQUENCE ... set options ...
|
|
42
|
+
* Emits only changed options, in a stable order.
|
|
43
|
+
*/
|
|
44
|
+
export declare class AlterSequenceSetOptions extends AlterSequenceChange {
|
|
45
|
+
readonly sequence: Sequence;
|
|
46
|
+
readonly options: string[];
|
|
47
|
+
readonly scope: "object";
|
|
48
|
+
constructor(props: {
|
|
49
|
+
sequence: Sequence;
|
|
50
|
+
options: string[];
|
|
51
|
+
});
|
|
52
|
+
get creates(): never[];
|
|
53
|
+
get requires(): `sequence:${string}`[];
|
|
54
|
+
serialize(): string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Replace a sequence by dropping and recreating it.
|
|
58
|
+
* This is used when properties that cannot be altered via ALTER SEQUENCE change.
|
|
59
|
+
*/
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { stableId } from "../../utils.js";
|
|
2
|
+
import { AlterSequenceChange } from "./sequence.base.js";
|
|
3
|
+
/**
|
|
4
|
+
* ALTER SEQUENCE ... OWNED BY ... | OWNED BY NONE
|
|
5
|
+
*/
|
|
6
|
+
export class AlterSequenceSetOwnedBy extends AlterSequenceChange {
|
|
7
|
+
sequence;
|
|
8
|
+
ownedBy;
|
|
9
|
+
scope = "object";
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super();
|
|
12
|
+
this.sequence = props.sequence;
|
|
13
|
+
this.ownedBy = props.ownedBy;
|
|
14
|
+
}
|
|
15
|
+
get creates() {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
get requires() {
|
|
19
|
+
return [
|
|
20
|
+
this.sequence.stableId,
|
|
21
|
+
...(this.ownedBy
|
|
22
|
+
? [
|
|
23
|
+
stableId.column(this.ownedBy.schema, this.ownedBy.table, this.ownedBy.column),
|
|
24
|
+
]
|
|
25
|
+
: []),
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
serialize() {
|
|
29
|
+
const head = [
|
|
30
|
+
"ALTER SEQUENCE",
|
|
31
|
+
`${this.sequence.schema}.${this.sequence.name}`,
|
|
32
|
+
];
|
|
33
|
+
if (this.ownedBy) {
|
|
34
|
+
return [
|
|
35
|
+
...head,
|
|
36
|
+
"OWNED BY",
|
|
37
|
+
`${this.ownedBy.schema}.${this.ownedBy.table}.${this.ownedBy.column}`,
|
|
38
|
+
].join(" ");
|
|
39
|
+
}
|
|
40
|
+
return [...head, "OWNED BY NONE"].join(" ");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* ALTER SEQUENCE ... set options ...
|
|
45
|
+
* Emits only changed options, in a stable order.
|
|
46
|
+
*/
|
|
47
|
+
export class AlterSequenceSetOptions extends AlterSequenceChange {
|
|
48
|
+
sequence;
|
|
49
|
+
options;
|
|
50
|
+
scope = "object";
|
|
51
|
+
constructor(props) {
|
|
52
|
+
super();
|
|
53
|
+
this.sequence = props.sequence;
|
|
54
|
+
this.options = props.options;
|
|
55
|
+
}
|
|
56
|
+
get creates() {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
get requires() {
|
|
60
|
+
return [this.sequence.stableId];
|
|
61
|
+
}
|
|
62
|
+
// Note: default max computation moved to diff when building options
|
|
63
|
+
serialize() {
|
|
64
|
+
const parts = [
|
|
65
|
+
"ALTER SEQUENCE",
|
|
66
|
+
`${this.sequence.schema}.${this.sequence.name}`,
|
|
67
|
+
];
|
|
68
|
+
return [...parts, ...this.options].join(" ");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Replace a sequence by dropping and recreating it.
|
|
73
|
+
* This is used when properties that cannot be altered via ALTER SEQUENCE change.
|
|
74
|
+
*/
|
|
75
|
+
// NOTE: ReplaceSequence removed. Non-alterable changes are emitted as Drop + Create in sequence.diff.ts.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { Sequence } from "../sequence.model.ts";
|
|
3
|
+
declare abstract class BaseSequenceChange extends BaseChange {
|
|
4
|
+
abstract readonly sequence: Sequence;
|
|
5
|
+
abstract readonly scope: "object" | "comment" | "privilege";
|
|
6
|
+
readonly objectType: "sequence";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateSequenceChange extends BaseSequenceChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterSequenceChange extends BaseSequenceChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropSequenceChange extends BaseSequenceChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.js";
|
|
2
|
+
class BaseSequenceChange extends BaseChange {
|
|
3
|
+
objectType = "sequence";
|
|
4
|
+
}
|
|
5
|
+
export class CreateSequenceChange extends BaseSequenceChange {
|
|
6
|
+
operation = "create";
|
|
7
|
+
}
|
|
8
|
+
export class AlterSequenceChange extends BaseSequenceChange {
|
|
9
|
+
operation = "alter";
|
|
10
|
+
}
|
|
11
|
+
export class DropSequenceChange extends BaseSequenceChange {
|
|
12
|
+
operation = "drop";
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Sequence } from "../sequence.model.ts";
|
|
2
|
+
import { CreateSequenceChange, DropSequenceChange } from "./sequence.base.ts";
|
|
3
|
+
export type CommentSequence = CreateCommentOnSequence | DropCommentOnSequence;
|
|
4
|
+
export declare class CreateCommentOnSequence extends CreateSequenceChange {
|
|
5
|
+
readonly sequence: Sequence;
|
|
6
|
+
readonly scope: "comment";
|
|
7
|
+
constructor(props: {
|
|
8
|
+
sequence: Sequence;
|
|
9
|
+
});
|
|
10
|
+
get creates(): `comment:${string}`[];
|
|
11
|
+
get requires(): `sequence:${string}`[];
|
|
12
|
+
serialize(): string;
|
|
13
|
+
}
|
|
14
|
+
export declare class DropCommentOnSequence extends DropSequenceChange {
|
|
15
|
+
readonly sequence: Sequence;
|
|
16
|
+
readonly scope: "comment";
|
|
17
|
+
constructor(props: {
|
|
18
|
+
sequence: Sequence;
|
|
19
|
+
});
|
|
20
|
+
get drops(): `comment:${string}`[];
|
|
21
|
+
get requires(): (`comment:${string}` | `sequence:${string}`)[];
|
|
22
|
+
serialize(): string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../base.change.js";
|
|
2
|
+
import { stableId } from "../../utils.js";
|
|
3
|
+
import { CreateSequenceChange, DropSequenceChange } from "./sequence.base.js";
|
|
4
|
+
export class CreateCommentOnSequence extends CreateSequenceChange {
|
|
5
|
+
sequence;
|
|
6
|
+
scope = "comment";
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super();
|
|
9
|
+
this.sequence = props.sequence;
|
|
10
|
+
}
|
|
11
|
+
get creates() {
|
|
12
|
+
return [stableId.comment(this.sequence.stableId)];
|
|
13
|
+
}
|
|
14
|
+
get requires() {
|
|
15
|
+
return [this.sequence.stableId];
|
|
16
|
+
}
|
|
17
|
+
serialize() {
|
|
18
|
+
return [
|
|
19
|
+
"COMMENT ON SEQUENCE",
|
|
20
|
+
`${this.sequence.schema}.${this.sequence.name}`,
|
|
21
|
+
"IS",
|
|
22
|
+
// biome-ignore lint/style/noNonNullAssertion: sequence comment is not nullable in this case
|
|
23
|
+
quoteLiteral(this.sequence.comment),
|
|
24
|
+
].join(" ");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class DropCommentOnSequence extends DropSequenceChange {
|
|
28
|
+
sequence;
|
|
29
|
+
scope = "comment";
|
|
30
|
+
constructor(props) {
|
|
31
|
+
super();
|
|
32
|
+
this.sequence = props.sequence;
|
|
33
|
+
}
|
|
34
|
+
get drops() {
|
|
35
|
+
return [stableId.comment(this.sequence.stableId)];
|
|
36
|
+
}
|
|
37
|
+
get requires() {
|
|
38
|
+
return [stableId.comment(this.sequence.stableId), this.sequence.stableId];
|
|
39
|
+
}
|
|
40
|
+
serialize() {
|
|
41
|
+
return [
|
|
42
|
+
"COMMENT ON SEQUENCE",
|
|
43
|
+
`${this.sequence.schema}.${this.sequence.name}`,
|
|
44
|
+
"IS NULL",
|
|
45
|
+
].join(" ");
|
|
46
|
+
}
|
|
47
|
+
}
|