@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,117 @@
|
|
|
1
|
+
import { diffObjects } from "../base.diff.js";
|
|
2
|
+
import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
|
|
3
|
+
import { hasNonAlterableChanges } from "../utils.js";
|
|
4
|
+
import { AlterLanguageChangeOwner } from "./changes/language.alter.js";
|
|
5
|
+
import { CreateCommentOnLanguage, DropCommentOnLanguage, } from "./changes/language.comment.js";
|
|
6
|
+
import { CreateLanguage } from "./changes/language.create.js";
|
|
7
|
+
import { DropLanguage } from "./changes/language.drop.js";
|
|
8
|
+
import { GrantLanguagePrivileges, RevokeGrantOptionLanguagePrivileges, RevokeLanguagePrivileges, } from "./changes/language.privilege.js";
|
|
9
|
+
/**
|
|
10
|
+
* Diff two sets of languages from main and branch catalogs.
|
|
11
|
+
*
|
|
12
|
+
* @param ctx - Context containing version information.
|
|
13
|
+
* @param main - The languages in the main catalog.
|
|
14
|
+
* @param branch - The languages in the branch catalog.
|
|
15
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
16
|
+
*/
|
|
17
|
+
export function diffLanguages(ctx, main, branch) {
|
|
18
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
19
|
+
const changes = [];
|
|
20
|
+
for (const languageId of created) {
|
|
21
|
+
const lang = branch[languageId];
|
|
22
|
+
changes.push(new CreateLanguage({ language: lang }));
|
|
23
|
+
if (lang.comment !== null) {
|
|
24
|
+
changes.push(new CreateCommentOnLanguage({ language: lang }));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
for (const languageId of dropped) {
|
|
28
|
+
changes.push(new DropLanguage({ language: main[languageId] }));
|
|
29
|
+
}
|
|
30
|
+
for (const languageId of altered) {
|
|
31
|
+
const mainLanguage = main[languageId];
|
|
32
|
+
const branchLanguage = branch[languageId];
|
|
33
|
+
// Check if non-alterable properties have changed
|
|
34
|
+
// These require dropping and recreating the language
|
|
35
|
+
const NON_ALTERABLE_FIELDS = [
|
|
36
|
+
"is_trusted",
|
|
37
|
+
"is_procedural",
|
|
38
|
+
"call_handler",
|
|
39
|
+
"inline_handler",
|
|
40
|
+
"validator",
|
|
41
|
+
];
|
|
42
|
+
const nonAlterablePropsChanged = hasNonAlterableChanges(mainLanguage, branchLanguage, NON_ALTERABLE_FIELDS);
|
|
43
|
+
if (nonAlterablePropsChanged) {
|
|
44
|
+
// Replace the entire language (drop + create)
|
|
45
|
+
changes.push(new DropLanguage({ language: mainLanguage }), new CreateLanguage({ language: branchLanguage }));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Only alterable properties changed - check each one
|
|
49
|
+
// OWNER
|
|
50
|
+
if (mainLanguage.owner !== branchLanguage.owner) {
|
|
51
|
+
changes.push(new AlterLanguageChangeOwner({
|
|
52
|
+
language: mainLanguage,
|
|
53
|
+
owner: branchLanguage.owner,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
// COMMENT
|
|
57
|
+
if (mainLanguage.comment !== branchLanguage.comment) {
|
|
58
|
+
if (branchLanguage.comment === null) {
|
|
59
|
+
changes.push(new DropCommentOnLanguage({ language: mainLanguage }));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
changes.push(new CreateCommentOnLanguage({ language: branchLanguage }));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Note: Language renaming would also use ALTER LANGUAGE ... RENAME TO ...
|
|
66
|
+
// But since our Language model uses 'name' as the identity field,
|
|
67
|
+
// a name change would be handled as drop + create by diffObjects()
|
|
68
|
+
// PRIVILEGES
|
|
69
|
+
// Filter out PUBLIC's built-in default USAGE privilege from main catalog
|
|
70
|
+
// (PostgreSQL grants it automatically, so we shouldn't compare it)
|
|
71
|
+
const mainPrivilegesFiltered = filterPublicBuiltInDefaults("language", mainLanguage.privileges);
|
|
72
|
+
// Filter out PUBLIC's built-in default USAGE privilege from branch catalog
|
|
73
|
+
const branchPrivilegesFiltered = filterPublicBuiltInDefaults("language", branchLanguage.privileges);
|
|
74
|
+
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
75
|
+
// and shouldn't be compared. Use branch owner as the reference.
|
|
76
|
+
const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchLanguage.owner, ctx.mainRoles);
|
|
77
|
+
for (const [grantee, result] of privilegeResults) {
|
|
78
|
+
// Generate grant changes
|
|
79
|
+
if (result.grants.length > 0) {
|
|
80
|
+
const grantGroups = groupPrivilegesByGrantable(result.grants);
|
|
81
|
+
for (const [grantable, list] of grantGroups) {
|
|
82
|
+
void grantable;
|
|
83
|
+
changes.push(new GrantLanguagePrivileges({
|
|
84
|
+
language: branchLanguage,
|
|
85
|
+
grantee,
|
|
86
|
+
privileges: list,
|
|
87
|
+
version: ctx.version,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Generate revoke changes
|
|
92
|
+
if (result.revokes.length > 0) {
|
|
93
|
+
const revokeGroups = groupPrivilegesByGrantable(result.revokes);
|
|
94
|
+
for (const [grantable, list] of revokeGroups) {
|
|
95
|
+
void grantable;
|
|
96
|
+
changes.push(new RevokeLanguagePrivileges({
|
|
97
|
+
language: mainLanguage,
|
|
98
|
+
grantee,
|
|
99
|
+
privileges: list,
|
|
100
|
+
version: ctx.version,
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Generate revoke grant option changes
|
|
105
|
+
if (result.revokeGrantOption.length > 0) {
|
|
106
|
+
changes.push(new RevokeGrantOptionLanguagePrivileges({
|
|
107
|
+
language: mainLanguage,
|
|
108
|
+
grantee,
|
|
109
|
+
privilegeNames: result.revokeGrantOption,
|
|
110
|
+
version: ctx.version,
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return changes;
|
|
117
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../base.model.ts";
|
|
3
|
+
import { type PrivilegeProps } from "../base.privilege-diff.ts";
|
|
4
|
+
/**
|
|
5
|
+
* All properties exposed by CREATE LANGUAGE statement are included in diff output.
|
|
6
|
+
* https://www.postgresql.org/docs/current/sql-createlanguage.html
|
|
7
|
+
*
|
|
8
|
+
* ALTER LANGUAGE statement can only be used to rename the language or change the owner.
|
|
9
|
+
* https://www.postgresql.org/docs/current/sql-alterlanguage.html
|
|
10
|
+
*
|
|
11
|
+
* Other properties require dropping and creating a new language.
|
|
12
|
+
*/
|
|
13
|
+
declare const languagePropsSchema: z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
is_trusted: z.ZodBoolean;
|
|
16
|
+
is_procedural: z.ZodBoolean;
|
|
17
|
+
call_handler: z.ZodNullable<z.ZodString>;
|
|
18
|
+
inline_handler: z.ZodNullable<z.ZodString>;
|
|
19
|
+
validator: z.ZodNullable<z.ZodString>;
|
|
20
|
+
owner: z.ZodString;
|
|
21
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
22
|
+
privileges: z.ZodArray<z.ZodObject<{
|
|
23
|
+
grantee: z.ZodString;
|
|
24
|
+
privilege: z.ZodString;
|
|
25
|
+
grantable: z.ZodBoolean;
|
|
26
|
+
columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
27
|
+
}, z.z.core.$strip>>;
|
|
28
|
+
}, z.z.core.$strip>;
|
|
29
|
+
type LanguagePrivilegeProps = PrivilegeProps;
|
|
30
|
+
export type LanguageProps = z.infer<typeof languagePropsSchema>;
|
|
31
|
+
export declare class Language extends BasePgModel {
|
|
32
|
+
readonly name: LanguageProps["name"];
|
|
33
|
+
readonly is_trusted: LanguageProps["is_trusted"];
|
|
34
|
+
readonly is_procedural: LanguageProps["is_procedural"];
|
|
35
|
+
readonly call_handler: LanguageProps["call_handler"];
|
|
36
|
+
readonly inline_handler: LanguageProps["inline_handler"];
|
|
37
|
+
readonly validator: LanguageProps["validator"];
|
|
38
|
+
readonly owner: LanguageProps["owner"];
|
|
39
|
+
readonly comment: LanguageProps["comment"];
|
|
40
|
+
readonly privileges: LanguagePrivilegeProps[];
|
|
41
|
+
constructor(props: LanguageProps);
|
|
42
|
+
get stableId(): `language:${string}`;
|
|
43
|
+
get identityFields(): {
|
|
44
|
+
name: string;
|
|
45
|
+
};
|
|
46
|
+
get dataFields(): {
|
|
47
|
+
is_trusted: boolean;
|
|
48
|
+
is_procedural: boolean;
|
|
49
|
+
call_handler: string | null;
|
|
50
|
+
inline_handler: string | null;
|
|
51
|
+
validator: string | null;
|
|
52
|
+
owner: string;
|
|
53
|
+
comment: string | null;
|
|
54
|
+
privileges: {
|
|
55
|
+
grantee: string;
|
|
56
|
+
privilege: string;
|
|
57
|
+
grantable: boolean;
|
|
58
|
+
columns?: string[] | null | undefined;
|
|
59
|
+
}[];
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,128 @@
|
|
|
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 LANGUAGE statement are included in diff output.
|
|
6
|
+
* https://www.postgresql.org/docs/current/sql-createlanguage.html
|
|
7
|
+
*
|
|
8
|
+
* ALTER LANGUAGE statement can only be used to rename the language or change the owner.
|
|
9
|
+
* https://www.postgresql.org/docs/current/sql-alterlanguage.html
|
|
10
|
+
*
|
|
11
|
+
* Other properties require dropping and creating a new language.
|
|
12
|
+
*/
|
|
13
|
+
const languagePropsSchema = z.object({
|
|
14
|
+
name: z.string(),
|
|
15
|
+
is_trusted: z.boolean(),
|
|
16
|
+
is_procedural: z.boolean(),
|
|
17
|
+
call_handler: z.string().nullable(),
|
|
18
|
+
inline_handler: z.string().nullable(),
|
|
19
|
+
validator: z.string().nullable(),
|
|
20
|
+
owner: z.string(),
|
|
21
|
+
comment: z.string().nullable(),
|
|
22
|
+
privileges: z.array(privilegePropsSchema),
|
|
23
|
+
});
|
|
24
|
+
export class Language extends BasePgModel {
|
|
25
|
+
name;
|
|
26
|
+
is_trusted;
|
|
27
|
+
is_procedural;
|
|
28
|
+
call_handler;
|
|
29
|
+
inline_handler;
|
|
30
|
+
validator;
|
|
31
|
+
owner;
|
|
32
|
+
comment;
|
|
33
|
+
privileges;
|
|
34
|
+
constructor(props) {
|
|
35
|
+
super();
|
|
36
|
+
// Identity fields
|
|
37
|
+
this.name = props.name;
|
|
38
|
+
// Data fields
|
|
39
|
+
this.is_trusted = props.is_trusted;
|
|
40
|
+
this.is_procedural = props.is_procedural;
|
|
41
|
+
this.call_handler = props.call_handler;
|
|
42
|
+
this.inline_handler = props.inline_handler;
|
|
43
|
+
this.validator = props.validator;
|
|
44
|
+
this.owner = props.owner;
|
|
45
|
+
this.comment = props.comment;
|
|
46
|
+
this.privileges = props.privileges;
|
|
47
|
+
}
|
|
48
|
+
get stableId() {
|
|
49
|
+
return `language:${this.name}`;
|
|
50
|
+
}
|
|
51
|
+
get identityFields() {
|
|
52
|
+
return {
|
|
53
|
+
name: this.name,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
get dataFields() {
|
|
57
|
+
const sortedPrivileges = [...this.privileges].sort((a, b) => {
|
|
58
|
+
return (a.grantee.localeCompare(b.grantee) ||
|
|
59
|
+
a.privilege.localeCompare(b.privilege) ||
|
|
60
|
+
Number(a.grantable) - Number(b.grantable));
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
is_trusted: this.is_trusted,
|
|
64
|
+
is_procedural: this.is_procedural,
|
|
65
|
+
call_handler: this.call_handler,
|
|
66
|
+
inline_handler: this.inline_handler,
|
|
67
|
+
validator: this.validator,
|
|
68
|
+
owner: this.owner,
|
|
69
|
+
comment: this.comment,
|
|
70
|
+
privileges: sortedPrivileges,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function _extractLanguages(sql) {
|
|
75
|
+
const languageRows = await sql.begin(async (sql) => {
|
|
76
|
+
await sql `set search_path = ''`;
|
|
77
|
+
return sql `
|
|
78
|
+
with extension_oids as (
|
|
79
|
+
select
|
|
80
|
+
objid
|
|
81
|
+
from
|
|
82
|
+
pg_depend d
|
|
83
|
+
where
|
|
84
|
+
d.refclassid = 'pg_extension'::regclass
|
|
85
|
+
and d.classid = 'pg_language'::regclass
|
|
86
|
+
)
|
|
87
|
+
select
|
|
88
|
+
quote_ident(lan.lanname) as name,
|
|
89
|
+
lan.lanpltrusted as is_trusted,
|
|
90
|
+
lan.lanispl as is_procedural,
|
|
91
|
+
lan.lanplcallfoid::regprocedure::text as call_handler,
|
|
92
|
+
lan.laninline::regprocedure::text as inline_handler,
|
|
93
|
+
lan.lanvalidator::regprocedure::text as validator,
|
|
94
|
+
lan.lanowner::regrole::text as owner,
|
|
95
|
+
obj_description(lan.oid, 'pg_language') as comment,
|
|
96
|
+
coalesce(
|
|
97
|
+
(
|
|
98
|
+
select json_agg(
|
|
99
|
+
json_build_object(
|
|
100
|
+
'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
|
|
101
|
+
'privilege', x.privilege_type,
|
|
102
|
+
'grantable', x.is_grantable
|
|
103
|
+
)
|
|
104
|
+
order by x.grantee, x.privilege_type
|
|
105
|
+
)
|
|
106
|
+
from lateral aclexplode(lan.lanacl) as x(grantor, grantee, privilege_type, is_grantable)
|
|
107
|
+
), '[]'
|
|
108
|
+
) as privileges
|
|
109
|
+
from
|
|
110
|
+
pg_catalog.pg_language lan
|
|
111
|
+
left outer join extension_oids e on lan.oid = e.objid
|
|
112
|
+
-- <EXCLUDE_INTERNAL and default>
|
|
113
|
+
where lan.lanname not in ('internal', 'c')
|
|
114
|
+
order by
|
|
115
|
+
lan.lanname;
|
|
116
|
+
`;
|
|
117
|
+
});
|
|
118
|
+
// Process rows to handle "-" as null values
|
|
119
|
+
const processedRows = languageRows.map((row) => ({
|
|
120
|
+
...row,
|
|
121
|
+
call_handler: row.call_handler === "-" ? null : row.call_handler,
|
|
122
|
+
inline_handler: row.inline_handler === "-" ? null : row.inline_handler,
|
|
123
|
+
validator: row.validator === "-" ? null : row.validator,
|
|
124
|
+
}));
|
|
125
|
+
// Validate and parse each row using the Zod schema
|
|
126
|
+
const validatedRows = processedRows.map((row) => languagePropsSchema.parse(row));
|
|
127
|
+
return validatedRows.map((row) => new Language(row));
|
|
128
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { MaterializedView } from "../materialized-view.model.ts";
|
|
2
|
+
import { AlterMaterializedViewChange } from "./materialized-view.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Alter a materialized view.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-altermaterializedview.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* ALTER MATERIALIZED VIEW [ IF EXISTS ] name
|
|
11
|
+
* action [, ... ]
|
|
12
|
+
* where action is one of:
|
|
13
|
+
* ALTER [ COLUMN ] column_name SET STATISTICS integer
|
|
14
|
+
* ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
|
|
15
|
+
* ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
|
|
16
|
+
* ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
|
|
17
|
+
* CLUSTER ON index_name
|
|
18
|
+
* SET WITHOUT CLUSTER
|
|
19
|
+
* SET ( storage_parameter [= value] [, ... ] )
|
|
20
|
+
* RESET ( storage_parameter [, ... ] )
|
|
21
|
+
* OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
22
|
+
* RENAME TO new_name
|
|
23
|
+
* SET SCHEMA new_schema
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* Notes for diff-based generation:
|
|
27
|
+
* - We currently only emit OWNER TO when owner differs.
|
|
28
|
+
* - Name/schema changes are treated as identity changes; handled as drop/create by the diff engine.
|
|
29
|
+
* - Column attribute changes, CLUSTER are not modeled and thus not emitted.
|
|
30
|
+
* - Changes to definition, options, and other non-alterable properties trigger a replace (drop + create).
|
|
31
|
+
*/
|
|
32
|
+
export type AlterMaterializedView = AlterMaterializedViewChangeOwner | AlterMaterializedViewSetStorageParams;
|
|
33
|
+
/**
|
|
34
|
+
* ALTER MATERIALIZED VIEW ... OWNER TO ...
|
|
35
|
+
*/
|
|
36
|
+
export declare class AlterMaterializedViewChangeOwner extends AlterMaterializedViewChange {
|
|
37
|
+
readonly materializedView: MaterializedView;
|
|
38
|
+
readonly owner: string;
|
|
39
|
+
readonly scope: "object";
|
|
40
|
+
constructor(props: {
|
|
41
|
+
materializedView: MaterializedView;
|
|
42
|
+
owner: string;
|
|
43
|
+
});
|
|
44
|
+
get requires(): `materializedView:${string}`[];
|
|
45
|
+
serialize(): string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* ALTER MATERIALIZED VIEW ... SET/RESET ( storage_parameter ... )
|
|
49
|
+
* Accepts main and branch, computes differences, and emits RESET then SET statements.
|
|
50
|
+
*/
|
|
51
|
+
export declare class AlterMaterializedViewSetStorageParams extends AlterMaterializedViewChange {
|
|
52
|
+
readonly materializedView: MaterializedView;
|
|
53
|
+
readonly paramsToSet: string[];
|
|
54
|
+
readonly keysToReset: string[];
|
|
55
|
+
readonly scope: "object";
|
|
56
|
+
constructor(props: {
|
|
57
|
+
materializedView: MaterializedView;
|
|
58
|
+
paramsToSet: string[];
|
|
59
|
+
keysToReset: string[];
|
|
60
|
+
});
|
|
61
|
+
get requires(): `materializedView:${string}`[];
|
|
62
|
+
serialize(): string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Replace a materialized view by dropping and recreating it.
|
|
66
|
+
* This is used when properties that cannot be altered via ALTER MATERIALIZED VIEW change.
|
|
67
|
+
*/
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { AlterMaterializedViewChange } from "./materialized-view.base.js";
|
|
2
|
+
/**
|
|
3
|
+
* ALTER MATERIALIZED VIEW ... OWNER TO ...
|
|
4
|
+
*/
|
|
5
|
+
export class AlterMaterializedViewChangeOwner extends AlterMaterializedViewChange {
|
|
6
|
+
materializedView;
|
|
7
|
+
owner;
|
|
8
|
+
scope = "object";
|
|
9
|
+
constructor(props) {
|
|
10
|
+
super();
|
|
11
|
+
this.materializedView = props.materializedView;
|
|
12
|
+
this.owner = props.owner;
|
|
13
|
+
}
|
|
14
|
+
get requires() {
|
|
15
|
+
return [this.materializedView.stableId];
|
|
16
|
+
}
|
|
17
|
+
serialize() {
|
|
18
|
+
return [
|
|
19
|
+
"ALTER MATERIALIZED VIEW",
|
|
20
|
+
`${this.materializedView.schema}.${this.materializedView.name}`,
|
|
21
|
+
"OWNER TO",
|
|
22
|
+
this.owner,
|
|
23
|
+
].join(" ");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* ALTER MATERIALIZED VIEW ... SET/RESET ( storage_parameter ... )
|
|
28
|
+
* Accepts main and branch, computes differences, and emits RESET then SET statements.
|
|
29
|
+
*/
|
|
30
|
+
export class AlterMaterializedViewSetStorageParams extends AlterMaterializedViewChange {
|
|
31
|
+
materializedView;
|
|
32
|
+
paramsToSet;
|
|
33
|
+
keysToReset;
|
|
34
|
+
scope = "object";
|
|
35
|
+
constructor(props) {
|
|
36
|
+
super();
|
|
37
|
+
this.materializedView = props.materializedView;
|
|
38
|
+
this.paramsToSet = props.paramsToSet;
|
|
39
|
+
this.keysToReset = props.keysToReset;
|
|
40
|
+
}
|
|
41
|
+
get requires() {
|
|
42
|
+
return [this.materializedView.stableId];
|
|
43
|
+
}
|
|
44
|
+
serialize() {
|
|
45
|
+
const head = [
|
|
46
|
+
"ALTER MATERIALIZED VIEW",
|
|
47
|
+
`${this.materializedView.schema}.${this.materializedView.name}`,
|
|
48
|
+
].join(" ");
|
|
49
|
+
const statements = [];
|
|
50
|
+
if (this.keysToReset.length > 0) {
|
|
51
|
+
statements.push(`${head} RESET (${this.keysToReset.join(", ")})`);
|
|
52
|
+
}
|
|
53
|
+
if (this.paramsToSet.length > 0) {
|
|
54
|
+
statements.push(`${head} SET (${this.paramsToSet.join(", ")})`);
|
|
55
|
+
}
|
|
56
|
+
return statements.join(";\n");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Replace a materialized view by dropping and recreating it.
|
|
61
|
+
* This is used when properties that cannot be altered via ALTER MATERIALIZED VIEW change.
|
|
62
|
+
*/
|
|
63
|
+
// NOTE: ReplaceMaterializedView removed. Non-alterable changes are emitted as Drop + Create in materialized-view.diff.ts.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { MaterializedView } from "../materialized-view.model.ts";
|
|
3
|
+
declare abstract class BaseMaterializedViewChange extends BaseChange {
|
|
4
|
+
abstract readonly materializedView: MaterializedView;
|
|
5
|
+
abstract readonly scope: "object" | "comment" | "privilege";
|
|
6
|
+
readonly objectType: "materialized_view";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateMaterializedViewChange extends BaseMaterializedViewChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterMaterializedViewChange extends BaseMaterializedViewChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropMaterializedViewChange extends BaseMaterializedViewChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.js";
|
|
2
|
+
class BaseMaterializedViewChange extends BaseChange {
|
|
3
|
+
objectType = "materialized_view";
|
|
4
|
+
}
|
|
5
|
+
export class CreateMaterializedViewChange extends BaseMaterializedViewChange {
|
|
6
|
+
operation = "create";
|
|
7
|
+
}
|
|
8
|
+
export class AlterMaterializedViewChange extends BaseMaterializedViewChange {
|
|
9
|
+
operation = "alter";
|
|
10
|
+
}
|
|
11
|
+
export class DropMaterializedViewChange extends BaseMaterializedViewChange {
|
|
12
|
+
operation = "drop";
|
|
13
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ColumnProps } from "../../base.model.ts";
|
|
2
|
+
import type { MaterializedView } from "../materialized-view.model.ts";
|
|
3
|
+
import { CreateMaterializedViewChange, DropMaterializedViewChange } from "./materialized-view.base.ts";
|
|
4
|
+
export type CommentMaterializedView = CreateCommentOnMaterializedView | CreateCommentOnMaterializedViewColumn | DropCommentOnMaterializedView | DropCommentOnMaterializedViewColumn;
|
|
5
|
+
/**
|
|
6
|
+
* Create/drop comments on materialized view columns.
|
|
7
|
+
*
|
|
8
|
+
* @see https://www.postgresql.org/docs/17/sql-comment.html
|
|
9
|
+
*/
|
|
10
|
+
export declare class CreateCommentOnMaterializedView extends CreateMaterializedViewChange {
|
|
11
|
+
readonly materializedView: MaterializedView;
|
|
12
|
+
readonly scope: "comment";
|
|
13
|
+
constructor(props: {
|
|
14
|
+
materializedView: MaterializedView;
|
|
15
|
+
});
|
|
16
|
+
get creates(): `comment:${string}`[];
|
|
17
|
+
get requires(): `materializedView:${string}`[];
|
|
18
|
+
serialize(): string;
|
|
19
|
+
}
|
|
20
|
+
export declare class DropCommentOnMaterializedView extends DropMaterializedViewChange {
|
|
21
|
+
readonly materializedView: MaterializedView;
|
|
22
|
+
readonly scope: "comment";
|
|
23
|
+
constructor(props: {
|
|
24
|
+
materializedView: MaterializedView;
|
|
25
|
+
});
|
|
26
|
+
get drops(): `comment:${string}`[];
|
|
27
|
+
get requires(): (`comment:${string}` | `materializedView:${string}`)[];
|
|
28
|
+
serialize(): string;
|
|
29
|
+
}
|
|
30
|
+
export declare class CreateCommentOnMaterializedViewColumn extends CreateMaterializedViewChange {
|
|
31
|
+
readonly materializedView: MaterializedView;
|
|
32
|
+
readonly column: ColumnProps;
|
|
33
|
+
readonly scope: "comment";
|
|
34
|
+
constructor(props: {
|
|
35
|
+
materializedView: MaterializedView;
|
|
36
|
+
column: ColumnProps;
|
|
37
|
+
});
|
|
38
|
+
get creates(): `comment:${string}`[];
|
|
39
|
+
get requires(): `column:${string}.${string}.${string}`[];
|
|
40
|
+
serialize(): string;
|
|
41
|
+
}
|
|
42
|
+
export declare class DropCommentOnMaterializedViewColumn extends DropMaterializedViewChange {
|
|
43
|
+
readonly materializedView: MaterializedView;
|
|
44
|
+
readonly column: ColumnProps;
|
|
45
|
+
readonly scope: "comment";
|
|
46
|
+
constructor(props: {
|
|
47
|
+
materializedView: MaterializedView;
|
|
48
|
+
column: ColumnProps;
|
|
49
|
+
});
|
|
50
|
+
get drops(): `comment:${string}`[];
|
|
51
|
+
get requires(): (`column:${string}.${string}.${string}` | `comment:${string}`)[];
|
|
52
|
+
serialize(): string;
|
|
53
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../base.change.js";
|
|
2
|
+
import { stableId } from "../../utils.js";
|
|
3
|
+
import { CreateMaterializedViewChange, DropMaterializedViewChange, } from "./materialized-view.base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create/drop comments on materialized view columns.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-comment.html
|
|
8
|
+
*/
|
|
9
|
+
export class CreateCommentOnMaterializedView extends CreateMaterializedViewChange {
|
|
10
|
+
materializedView;
|
|
11
|
+
scope = "comment";
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super();
|
|
14
|
+
this.materializedView = props.materializedView;
|
|
15
|
+
}
|
|
16
|
+
get creates() {
|
|
17
|
+
return [stableId.comment(this.materializedView.stableId)];
|
|
18
|
+
}
|
|
19
|
+
get requires() {
|
|
20
|
+
return [this.materializedView.stableId];
|
|
21
|
+
}
|
|
22
|
+
serialize() {
|
|
23
|
+
return [
|
|
24
|
+
"COMMENT ON MATERIALIZED VIEW",
|
|
25
|
+
`${this.materializedView.schema}.${this.materializedView.name}`,
|
|
26
|
+
"IS",
|
|
27
|
+
// biome-ignore lint/style/noNonNullAssertion: mv comment is not nullable in this case
|
|
28
|
+
quoteLiteral(this.materializedView.comment),
|
|
29
|
+
].join(" ");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export class DropCommentOnMaterializedView extends DropMaterializedViewChange {
|
|
33
|
+
materializedView;
|
|
34
|
+
scope = "comment";
|
|
35
|
+
constructor(props) {
|
|
36
|
+
super();
|
|
37
|
+
this.materializedView = props.materializedView;
|
|
38
|
+
}
|
|
39
|
+
get drops() {
|
|
40
|
+
return [stableId.comment(this.materializedView.stableId)];
|
|
41
|
+
}
|
|
42
|
+
get requires() {
|
|
43
|
+
return [
|
|
44
|
+
stableId.comment(this.materializedView.stableId),
|
|
45
|
+
this.materializedView.stableId,
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
serialize() {
|
|
49
|
+
return [
|
|
50
|
+
"COMMENT ON MATERIALIZED VIEW",
|
|
51
|
+
`${this.materializedView.schema}.${this.materializedView.name}`,
|
|
52
|
+
"IS NULL",
|
|
53
|
+
].join(" ");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class CreateCommentOnMaterializedViewColumn extends CreateMaterializedViewChange {
|
|
57
|
+
materializedView;
|
|
58
|
+
column;
|
|
59
|
+
scope = "comment";
|
|
60
|
+
constructor(props) {
|
|
61
|
+
super();
|
|
62
|
+
this.materializedView = props.materializedView;
|
|
63
|
+
this.column = props.column;
|
|
64
|
+
}
|
|
65
|
+
get creates() {
|
|
66
|
+
return [
|
|
67
|
+
stableId.comment(stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name)),
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
get requires() {
|
|
71
|
+
return [
|
|
72
|
+
stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name),
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
serialize() {
|
|
76
|
+
return [
|
|
77
|
+
"COMMENT ON COLUMN",
|
|
78
|
+
`${this.materializedView.schema}.${this.materializedView.name}.${this.column.name}`,
|
|
79
|
+
"IS",
|
|
80
|
+
// biome-ignore lint/style/noNonNullAssertion: column comment is not nullable in this case
|
|
81
|
+
quoteLiteral(this.column.comment),
|
|
82
|
+
].join(" ");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export class DropCommentOnMaterializedViewColumn extends DropMaterializedViewChange {
|
|
86
|
+
materializedView;
|
|
87
|
+
column;
|
|
88
|
+
scope = "comment";
|
|
89
|
+
constructor(props) {
|
|
90
|
+
super();
|
|
91
|
+
this.materializedView = props.materializedView;
|
|
92
|
+
this.column = props.column;
|
|
93
|
+
}
|
|
94
|
+
get drops() {
|
|
95
|
+
return [
|
|
96
|
+
stableId.comment(stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name)),
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
get requires() {
|
|
100
|
+
return [
|
|
101
|
+
stableId.comment(stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name)),
|
|
102
|
+
stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name),
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
serialize() {
|
|
106
|
+
return [
|
|
107
|
+
"COMMENT ON COLUMN",
|
|
108
|
+
`${this.materializedView.schema}.${this.materializedView.name}.${this.column.name}`,
|
|
109
|
+
"IS NULL",
|
|
110
|
+
].join(" ");
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { MaterializedView } from "../materialized-view.model.ts";
|
|
2
|
+
import { CreateMaterializedViewChange } from "./materialized-view.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Create a materialized view.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-creatematerializedview.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
|
|
11
|
+
* [ (column_name [, ...] ) ]
|
|
12
|
+
* [ WITH ( storage_parameter [= value] [, ... ] ) ]
|
|
13
|
+
* [ TABLESPACE tablespace_name ]
|
|
14
|
+
* AS query
|
|
15
|
+
* [ WITH [ NO ] DATA ]
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Notes for diff-based generation:
|
|
19
|
+
* - IF NOT EXISTS is omitted: diffs are deterministic and explicit.
|
|
20
|
+
* - (column_name, ...) list is derived from the SELECT query; we don't emit it.
|
|
21
|
+
* - TABLESPACE is not currently modeled/extracted and is not emitted.
|
|
22
|
+
* - WITH (options) is emitted only when non-empty.
|
|
23
|
+
* - WITH NO DATA is always emitted when is_populated is false to ensure correct state.
|
|
24
|
+
* - WITH DATA is emitted when is_populated is true.
|
|
25
|
+
*/
|
|
26
|
+
export declare class CreateMaterializedView extends CreateMaterializedViewChange {
|
|
27
|
+
readonly materializedView: MaterializedView;
|
|
28
|
+
readonly scope: "object";
|
|
29
|
+
constructor(props: {
|
|
30
|
+
materializedView: MaterializedView;
|
|
31
|
+
});
|
|
32
|
+
get creates(): (`column:${string}.${string}.${string}` | `materializedView:${string}`)[];
|
|
33
|
+
get requires(): string[];
|
|
34
|
+
serialize(): string;
|
|
35
|
+
}
|