@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,77 @@
|
|
|
1
|
+
import { diffObjects } from "../../base.diff.js";
|
|
2
|
+
import { AlterUserMappingSetOptions } from "./changes/user-mapping.alter.js";
|
|
3
|
+
import { CreateUserMapping } from "./changes/user-mapping.create.js";
|
|
4
|
+
import { DropUserMapping } from "./changes/user-mapping.drop.js";
|
|
5
|
+
/**
|
|
6
|
+
* Diff two sets of user mappings from main and branch catalogs.
|
|
7
|
+
*
|
|
8
|
+
* @param main - The user mappings in the main catalog.
|
|
9
|
+
* @param branch - The user mappings in the branch catalog.
|
|
10
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
11
|
+
*/
|
|
12
|
+
export function diffUserMappings(main, branch) {
|
|
13
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
14
|
+
const changes = [];
|
|
15
|
+
for (const mappingId of created) {
|
|
16
|
+
const createdMapping = branch[mappingId];
|
|
17
|
+
changes.push(new CreateUserMapping({ userMapping: createdMapping }));
|
|
18
|
+
}
|
|
19
|
+
for (const mappingId of dropped) {
|
|
20
|
+
changes.push(new DropUserMapping({ userMapping: main[mappingId] }));
|
|
21
|
+
}
|
|
22
|
+
for (const mappingId of altered) {
|
|
23
|
+
const mainMapping = main[mappingId];
|
|
24
|
+
const branchMapping = branch[mappingId];
|
|
25
|
+
// OPTIONS
|
|
26
|
+
const optionsChanged = diffOptions(mainMapping.options, branchMapping.options);
|
|
27
|
+
if (optionsChanged.length > 0) {
|
|
28
|
+
changes.push(new AlterUserMappingSetOptions({
|
|
29
|
+
userMapping: mainMapping,
|
|
30
|
+
options: optionsChanged,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return changes;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Diff options arrays to determine ADD/SET/DROP operations.
|
|
38
|
+
* Options are stored as [key1, value1, key2, value2, ...]
|
|
39
|
+
*/
|
|
40
|
+
function diffOptions(mainOptions, branchOptions) {
|
|
41
|
+
const mainMap = new Map();
|
|
42
|
+
const branchMap = new Map();
|
|
43
|
+
// Parse main options
|
|
44
|
+
if (mainOptions) {
|
|
45
|
+
for (let i = 0; i < mainOptions.length; i += 2) {
|
|
46
|
+
if (i + 1 < mainOptions.length) {
|
|
47
|
+
mainMap.set(mainOptions[i], mainOptions[i + 1]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Parse branch options
|
|
52
|
+
if (branchOptions) {
|
|
53
|
+
for (let i = 0; i < branchOptions.length; i += 2) {
|
|
54
|
+
if (i + 1 < branchOptions.length) {
|
|
55
|
+
branchMap.set(branchOptions[i], branchOptions[i + 1]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const changes = [];
|
|
60
|
+
// Find options to ADD or SET
|
|
61
|
+
for (const [key, value] of branchMap) {
|
|
62
|
+
const mainValue = mainMap.get(key);
|
|
63
|
+
if (mainValue === undefined) {
|
|
64
|
+
changes.push({ action: "ADD", option: key, value });
|
|
65
|
+
}
|
|
66
|
+
else if (mainValue !== value) {
|
|
67
|
+
changes.push({ action: "SET", option: key, value });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Find options to DROP
|
|
71
|
+
for (const [key] of mainMap) {
|
|
72
|
+
if (!branchMap.has(key)) {
|
|
73
|
+
changes.push({ action: "DROP", option: key });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return changes;
|
|
77
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Sql } from "postgres";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { BasePgModel } from "../../base.model.ts";
|
|
4
|
+
/**
|
|
5
|
+
* All properties exposed by CREATE USER MAPPING statement are included in diff output.
|
|
6
|
+
* https://www.postgresql.org/docs/17/sql-createusermapping.html
|
|
7
|
+
*
|
|
8
|
+
* ALTER USER MAPPING statement can be generated for changes to the following properties:
|
|
9
|
+
* - options
|
|
10
|
+
* https://www.postgresql.org/docs/17/sql-alterusermapping.html
|
|
11
|
+
*
|
|
12
|
+
* User mappings are not schema-qualified (no schema property).
|
|
13
|
+
* User can be a role name, CURRENT_USER, PUBLIC, etc.
|
|
14
|
+
*/
|
|
15
|
+
declare const userMappingPropsSchema: z.ZodObject<{
|
|
16
|
+
user: z.ZodString;
|
|
17
|
+
server: z.ZodString;
|
|
18
|
+
options: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
19
|
+
}, z.z.core.$strip>;
|
|
20
|
+
export type UserMappingProps = z.infer<typeof userMappingPropsSchema>;
|
|
21
|
+
export declare class UserMapping extends BasePgModel {
|
|
22
|
+
readonly user: UserMappingProps["user"];
|
|
23
|
+
readonly server: UserMappingProps["server"];
|
|
24
|
+
readonly options: UserMappingProps["options"];
|
|
25
|
+
constructor(props: UserMappingProps);
|
|
26
|
+
get stableId(): `userMapping:${string}:${string}`;
|
|
27
|
+
get identityFields(): {
|
|
28
|
+
user: string;
|
|
29
|
+
server: string;
|
|
30
|
+
};
|
|
31
|
+
get dataFields(): {
|
|
32
|
+
options: string[] | null;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export declare function extractUserMappings(sql: Sql): Promise<UserMapping[]>;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../../base.model.js";
|
|
3
|
+
/**
|
|
4
|
+
* All properties exposed by CREATE USER MAPPING statement are included in diff output.
|
|
5
|
+
* https://www.postgresql.org/docs/17/sql-createusermapping.html
|
|
6
|
+
*
|
|
7
|
+
* ALTER USER MAPPING statement can be generated for changes to the following properties:
|
|
8
|
+
* - options
|
|
9
|
+
* https://www.postgresql.org/docs/17/sql-alterusermapping.html
|
|
10
|
+
*
|
|
11
|
+
* User mappings are not schema-qualified (no schema property).
|
|
12
|
+
* User can be a role name, CURRENT_USER, PUBLIC, etc.
|
|
13
|
+
*/
|
|
14
|
+
const userMappingPropsSchema = z.object({
|
|
15
|
+
user: z.string(),
|
|
16
|
+
server: z.string(),
|
|
17
|
+
options: z.array(z.string()).nullable(),
|
|
18
|
+
});
|
|
19
|
+
export class UserMapping extends BasePgModel {
|
|
20
|
+
user;
|
|
21
|
+
server;
|
|
22
|
+
options;
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super();
|
|
25
|
+
// Identity fields
|
|
26
|
+
this.user = props.user;
|
|
27
|
+
this.server = props.server;
|
|
28
|
+
// Data fields
|
|
29
|
+
this.options = props.options;
|
|
30
|
+
}
|
|
31
|
+
get stableId() {
|
|
32
|
+
return `userMapping:${this.server}:${this.user}`;
|
|
33
|
+
}
|
|
34
|
+
get identityFields() {
|
|
35
|
+
return {
|
|
36
|
+
user: this.user,
|
|
37
|
+
server: this.server,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
get dataFields() {
|
|
41
|
+
return {
|
|
42
|
+
options: this.options,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function extractUserMappings(sql) {
|
|
47
|
+
return sql.begin(async (sql) => {
|
|
48
|
+
await sql `set search_path = ''`;
|
|
49
|
+
const mappingRows = await sql `
|
|
50
|
+
select
|
|
51
|
+
case
|
|
52
|
+
when um.umuser = 0 then 'PUBLIC'
|
|
53
|
+
else um.umuser::regrole::text
|
|
54
|
+
end as user,
|
|
55
|
+
quote_ident(srv.srvname) as server,
|
|
56
|
+
coalesce(um.umoptions, array[]::text[]) as options
|
|
57
|
+
from
|
|
58
|
+
pg_catalog.pg_user_mapping um
|
|
59
|
+
inner join pg_catalog.pg_foreign_server srv on srv.oid = um.umserver
|
|
60
|
+
inner join pg_catalog.pg_foreign_data_wrapper fdw on fdw.oid = srv.srvfdw
|
|
61
|
+
where
|
|
62
|
+
not fdw.fdwname like any(array['pg\\_%'])
|
|
63
|
+
order by
|
|
64
|
+
srv.srvname, um.umuser;
|
|
65
|
+
`;
|
|
66
|
+
// Validate and parse each row using the Zod schema
|
|
67
|
+
const validatedRows = mappingRows.map((row) => {
|
|
68
|
+
const parsed = userMappingPropsSchema.parse(row);
|
|
69
|
+
// Parse options from PostgreSQL format ['key=value'] to ['key', 'value']
|
|
70
|
+
if (parsed.options && parsed.options.length > 0) {
|
|
71
|
+
const parsedOptions = [];
|
|
72
|
+
for (const opt of parsed.options) {
|
|
73
|
+
const eqIndex = opt.indexOf("=");
|
|
74
|
+
if (eqIndex > 0) {
|
|
75
|
+
parsedOptions.push(opt.substring(0, eqIndex));
|
|
76
|
+
parsedOptions.push(opt.substring(eqIndex + 1));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
parsed.options = parsedOptions.length > 0 ? parsedOptions : null;
|
|
80
|
+
}
|
|
81
|
+
return parsed;
|
|
82
|
+
});
|
|
83
|
+
return validatedRows.map((row) => new UserMapping(row));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { Index } from "../index.model.ts";
|
|
3
|
+
import { AlterIndexChange } from "./index.base.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Alter an index.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-alterindex.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name SET TABLESPACE tablespace_name
|
|
12
|
+
* ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name SET ( storage_parameter = value [, ... ] )
|
|
13
|
+
* ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
|
|
14
|
+
* ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name SET STATISTICS integer
|
|
15
|
+
* ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name ALTER [ COLUMN ] column_number SET STATISTICS integer
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export type AlterIndex = AlterIndexSetStatistics | AlterIndexSetStorageParams | AlterIndexSetTablespace;
|
|
19
|
+
/**
|
|
20
|
+
* ALTER INDEX ... SET ( storage_parameter = value [, ... ] )
|
|
21
|
+
*/
|
|
22
|
+
export declare class AlterIndexSetStorageParams extends AlterIndexChange {
|
|
23
|
+
readonly index: Index;
|
|
24
|
+
readonly paramsToSet: string[];
|
|
25
|
+
readonly keysToReset: string[];
|
|
26
|
+
readonly scope: "object";
|
|
27
|
+
constructor(props: {
|
|
28
|
+
index: Index;
|
|
29
|
+
paramsToSet: string[];
|
|
30
|
+
keysToReset: string[];
|
|
31
|
+
});
|
|
32
|
+
get requires(): `index:${string}`[];
|
|
33
|
+
serialize(): string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* ALTER INDEX ... SET STATISTICS ...
|
|
37
|
+
*/
|
|
38
|
+
export declare class AlterIndexSetStatistics extends BaseChange {
|
|
39
|
+
readonly index: Index;
|
|
40
|
+
readonly columnTargets: Array<{
|
|
41
|
+
columnNumber: number;
|
|
42
|
+
statistics: number;
|
|
43
|
+
}>;
|
|
44
|
+
readonly operation: "alter";
|
|
45
|
+
readonly scope: "object";
|
|
46
|
+
readonly objectType: "index";
|
|
47
|
+
constructor(props: {
|
|
48
|
+
index: Index;
|
|
49
|
+
columnTargets: Array<{
|
|
50
|
+
columnNumber: number;
|
|
51
|
+
statistics: number;
|
|
52
|
+
}>;
|
|
53
|
+
});
|
|
54
|
+
get requires(): `index:${string}`[];
|
|
55
|
+
serialize(): string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* ALTER INDEX ... SET TABLESPACE ...
|
|
59
|
+
*/
|
|
60
|
+
export declare class AlterIndexSetTablespace extends BaseChange {
|
|
61
|
+
readonly index: Index;
|
|
62
|
+
readonly tablespace: string;
|
|
63
|
+
readonly operation: "alter";
|
|
64
|
+
readonly scope: "object";
|
|
65
|
+
readonly objectType: "index";
|
|
66
|
+
constructor(props: {
|
|
67
|
+
index: Index;
|
|
68
|
+
tablespace: string;
|
|
69
|
+
});
|
|
70
|
+
get requires(): `index:${string}`[];
|
|
71
|
+
serialize(): string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Replace an index by dropping and recreating it.
|
|
75
|
+
* This is used when properties that cannot be altered via ALTER INDEX change.
|
|
76
|
+
*/
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.js";
|
|
2
|
+
import { AlterIndexChange } from "./index.base.js";
|
|
3
|
+
/**
|
|
4
|
+
* ALTER INDEX ... SET ( storage_parameter = value [, ... ] )
|
|
5
|
+
*/
|
|
6
|
+
export class AlterIndexSetStorageParams extends AlterIndexChange {
|
|
7
|
+
index;
|
|
8
|
+
paramsToSet;
|
|
9
|
+
keysToReset;
|
|
10
|
+
scope = "object";
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super();
|
|
13
|
+
this.index = props.index;
|
|
14
|
+
this.paramsToSet = props.paramsToSet;
|
|
15
|
+
this.keysToReset = props.keysToReset;
|
|
16
|
+
}
|
|
17
|
+
get requires() {
|
|
18
|
+
return [this.index.stableId];
|
|
19
|
+
}
|
|
20
|
+
serialize() {
|
|
21
|
+
const head = [
|
|
22
|
+
"ALTER INDEX",
|
|
23
|
+
`${this.index.schema}.${this.index.name}`,
|
|
24
|
+
].join(" ");
|
|
25
|
+
const statements = [];
|
|
26
|
+
if (this.keysToReset.length > 0) {
|
|
27
|
+
statements.push(`${head} RESET (${this.keysToReset.join(", ")})`);
|
|
28
|
+
}
|
|
29
|
+
if (this.paramsToSet.length > 0) {
|
|
30
|
+
statements.push(`${head} SET (${this.paramsToSet.join(", ")})`);
|
|
31
|
+
}
|
|
32
|
+
return statements.join(";\n");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* ALTER INDEX ... SET STATISTICS ...
|
|
37
|
+
*/
|
|
38
|
+
export class AlterIndexSetStatistics extends BaseChange {
|
|
39
|
+
index;
|
|
40
|
+
columnTargets;
|
|
41
|
+
operation = "alter";
|
|
42
|
+
scope = "object";
|
|
43
|
+
objectType = "index";
|
|
44
|
+
constructor(props) {
|
|
45
|
+
super();
|
|
46
|
+
this.index = props.index;
|
|
47
|
+
this.columnTargets = props.columnTargets;
|
|
48
|
+
}
|
|
49
|
+
get requires() {
|
|
50
|
+
return [this.index.stableId];
|
|
51
|
+
}
|
|
52
|
+
serialize() {
|
|
53
|
+
const statements = [];
|
|
54
|
+
const head = [
|
|
55
|
+
"ALTER INDEX",
|
|
56
|
+
`${this.index.schema}.${this.index.name}`,
|
|
57
|
+
].join(" ");
|
|
58
|
+
for (const { columnNumber, statistics } of this.columnTargets) {
|
|
59
|
+
statements.push(`${head} ALTER COLUMN ${columnNumber} SET STATISTICS ${statistics.toString()}`);
|
|
60
|
+
}
|
|
61
|
+
return statements.join(";\n");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* ALTER INDEX ... SET TABLESPACE ...
|
|
66
|
+
*/
|
|
67
|
+
export class AlterIndexSetTablespace extends BaseChange {
|
|
68
|
+
index;
|
|
69
|
+
tablespace;
|
|
70
|
+
operation = "alter";
|
|
71
|
+
scope = "object";
|
|
72
|
+
objectType = "index";
|
|
73
|
+
constructor(props) {
|
|
74
|
+
super();
|
|
75
|
+
this.index = props.index;
|
|
76
|
+
this.tablespace = props.tablespace;
|
|
77
|
+
}
|
|
78
|
+
get requires() {
|
|
79
|
+
return [this.index.stableId];
|
|
80
|
+
}
|
|
81
|
+
serialize() {
|
|
82
|
+
return [
|
|
83
|
+
"ALTER INDEX",
|
|
84
|
+
`${this.index.schema}.${this.index.name}`,
|
|
85
|
+
"SET TABLESPACE",
|
|
86
|
+
this.tablespace,
|
|
87
|
+
].join(" ");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Replace an index by dropping and recreating it.
|
|
92
|
+
* This is used when properties that cannot be altered via ALTER INDEX change.
|
|
93
|
+
*/
|
|
94
|
+
// NOTE: ReplaceIndex removed. Non-alterable changes are emitted as DropIndex + CreateIndex in index.diff.ts.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { Index } from "../index.model.ts";
|
|
3
|
+
declare abstract class BaseIndexChange extends BaseChange {
|
|
4
|
+
abstract readonly index: Index;
|
|
5
|
+
abstract readonly scope: "object" | "comment";
|
|
6
|
+
readonly objectType: "index";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateIndexChange extends BaseIndexChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterIndexChange extends BaseIndexChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropIndexChange extends BaseIndexChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.js";
|
|
2
|
+
class BaseIndexChange extends BaseChange {
|
|
3
|
+
objectType = "index";
|
|
4
|
+
}
|
|
5
|
+
export class CreateIndexChange extends BaseIndexChange {
|
|
6
|
+
operation = "create";
|
|
7
|
+
}
|
|
8
|
+
export class AlterIndexChange extends BaseIndexChange {
|
|
9
|
+
operation = "alter";
|
|
10
|
+
}
|
|
11
|
+
export class DropIndexChange extends BaseIndexChange {
|
|
12
|
+
operation = "drop";
|
|
13
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Index } from "../index.model.ts";
|
|
2
|
+
import { CreateIndexChange, DropIndexChange } from "./index.base.ts";
|
|
3
|
+
export type CommentIndex = CreateCommentOnIndex | DropCommentOnIndex;
|
|
4
|
+
/**
|
|
5
|
+
* Create/drop comments on indexes.
|
|
6
|
+
*/
|
|
7
|
+
export declare class CreateCommentOnIndex extends CreateIndexChange {
|
|
8
|
+
readonly index: Index;
|
|
9
|
+
readonly scope: "comment";
|
|
10
|
+
constructor(props: {
|
|
11
|
+
index: Index;
|
|
12
|
+
});
|
|
13
|
+
get creates(): `comment:${string}`[];
|
|
14
|
+
get requires(): `index:${string}`[];
|
|
15
|
+
serialize(): string;
|
|
16
|
+
}
|
|
17
|
+
export declare class DropCommentOnIndex extends DropIndexChange {
|
|
18
|
+
readonly index: Index;
|
|
19
|
+
readonly scope: "comment";
|
|
20
|
+
constructor(props: {
|
|
21
|
+
index: Index;
|
|
22
|
+
});
|
|
23
|
+
get drops(): `comment:${string}`[];
|
|
24
|
+
get requires(): (`comment:${string}` | `index:${string}`)[];
|
|
25
|
+
serialize(): string;
|
|
26
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../base.change.js";
|
|
2
|
+
import { stableId } from "../../utils.js";
|
|
3
|
+
import { CreateIndexChange, DropIndexChange } from "./index.base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create/drop comments on indexes.
|
|
6
|
+
*/
|
|
7
|
+
export class CreateCommentOnIndex extends CreateIndexChange {
|
|
8
|
+
index;
|
|
9
|
+
scope = "comment";
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super();
|
|
12
|
+
this.index = props.index;
|
|
13
|
+
}
|
|
14
|
+
get creates() {
|
|
15
|
+
return [stableId.comment(this.index.stableId)];
|
|
16
|
+
}
|
|
17
|
+
get requires() {
|
|
18
|
+
return [this.index.stableId];
|
|
19
|
+
}
|
|
20
|
+
serialize() {
|
|
21
|
+
return [
|
|
22
|
+
"COMMENT ON INDEX",
|
|
23
|
+
`${this.index.schema}.${this.index.name}`,
|
|
24
|
+
"IS",
|
|
25
|
+
// biome-ignore lint/style/noNonNullAssertion: index comment is not nullable here
|
|
26
|
+
quoteLiteral(this.index.comment),
|
|
27
|
+
].join(" ");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class DropCommentOnIndex extends DropIndexChange {
|
|
31
|
+
index;
|
|
32
|
+
scope = "comment";
|
|
33
|
+
constructor(props) {
|
|
34
|
+
super();
|
|
35
|
+
this.index = props.index;
|
|
36
|
+
}
|
|
37
|
+
get drops() {
|
|
38
|
+
return [stableId.comment(this.index.stableId)];
|
|
39
|
+
}
|
|
40
|
+
get requires() {
|
|
41
|
+
return [stableId.comment(this.index.stableId), this.index.stableId];
|
|
42
|
+
}
|
|
43
|
+
serialize() {
|
|
44
|
+
return [
|
|
45
|
+
"COMMENT ON INDEX",
|
|
46
|
+
`${this.index.schema}.${this.index.name}`,
|
|
47
|
+
"IS NULL",
|
|
48
|
+
].join(" ");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { TableLikeObject } from "../../base.model.ts";
|
|
2
|
+
import type { Index } from "../index.model.ts";
|
|
3
|
+
import { CreateIndexChange } from "./index.base.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Create an index.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-createindex.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
|
|
12
|
+
* ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
|
|
13
|
+
* [ INCLUDE ( column_name [, ...] ) ]
|
|
14
|
+
* [ WITH ( storage_parameter [= value] [, ... ] ) ]
|
|
15
|
+
* [ TABLESPACE tablespace_name ]
|
|
16
|
+
* [ WHERE predicate ]
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare class CreateIndex extends CreateIndexChange {
|
|
20
|
+
readonly index: Index;
|
|
21
|
+
readonly indexableObject?: TableLikeObject;
|
|
22
|
+
readonly scope: "object";
|
|
23
|
+
constructor(props: {
|
|
24
|
+
index: Index;
|
|
25
|
+
indexableObject?: TableLikeObject;
|
|
26
|
+
});
|
|
27
|
+
get creates(): `index:${string}`[];
|
|
28
|
+
get requires(): string[];
|
|
29
|
+
serialize(): string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { stableId } from "../../utils.js";
|
|
2
|
+
import { CreateIndexChange } from "./index.base.js";
|
|
3
|
+
import { checkIsSerializable } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create an index.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.postgresql.org/docs/17/sql-createindex.html
|
|
8
|
+
*
|
|
9
|
+
* Synopsis
|
|
10
|
+
* ```sql
|
|
11
|
+
* CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
|
|
12
|
+
* ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
|
|
13
|
+
* [ INCLUDE ( column_name [, ...] ) ]
|
|
14
|
+
* [ WITH ( storage_parameter [= value] [, ... ] ) ]
|
|
15
|
+
* [ TABLESPACE tablespace_name ]
|
|
16
|
+
* [ WHERE predicate ]
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export class CreateIndex extends CreateIndexChange {
|
|
20
|
+
index;
|
|
21
|
+
indexableObject;
|
|
22
|
+
scope = "object";
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super();
|
|
25
|
+
checkIsSerializable(props.index, props.indexableObject);
|
|
26
|
+
this.index = props.index;
|
|
27
|
+
this.indexableObject = props.indexableObject;
|
|
28
|
+
}
|
|
29
|
+
get creates() {
|
|
30
|
+
return [this.index.stableId];
|
|
31
|
+
}
|
|
32
|
+
get requires() {
|
|
33
|
+
const dependencies = new Set();
|
|
34
|
+
// Schema dependency
|
|
35
|
+
dependencies.add(stableId.schema(this.index.schema));
|
|
36
|
+
// Table dependency
|
|
37
|
+
dependencies.add(stableId.table(this.index.schema, this.index.table_name));
|
|
38
|
+
// Owner dependency
|
|
39
|
+
dependencies.add(stableId.role(this.index.owner));
|
|
40
|
+
return Array.from(dependencies);
|
|
41
|
+
}
|
|
42
|
+
serialize() {
|
|
43
|
+
let definition = this.index.definition;
|
|
44
|
+
// btree being the default, we can omit it
|
|
45
|
+
definition = definition.replace(" USING btree", "");
|
|
46
|
+
// Remove "ON ONLY" for partitioned indexes to allow automatic propagation to partitions.
|
|
47
|
+
// Preserve "ON ONLY" for non-partitioned indexes on partitioned tables (explicit user intent).
|
|
48
|
+
if (this.index.is_partitioned_index) {
|
|
49
|
+
definition = definition.replace(/\s+ON\s+ONLY\s+/i, " ON ");
|
|
50
|
+
}
|
|
51
|
+
return definition;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Index } from "../index.model.ts";
|
|
2
|
+
import { DropIndexChange } from "./index.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Drop an index.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-dropindex.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare class DropIndex extends DropIndexChange {
|
|
14
|
+
readonly index: Index;
|
|
15
|
+
readonly scope: "object";
|
|
16
|
+
constructor(props: {
|
|
17
|
+
index: Index;
|
|
18
|
+
});
|
|
19
|
+
get drops(): `index:${string}`[];
|
|
20
|
+
get requires(): `index:${string}`[];
|
|
21
|
+
serialize(): string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DropIndexChange } from "./index.base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Drop an index.
|
|
4
|
+
*
|
|
5
|
+
* @see https://www.postgresql.org/docs/17/sql-dropindex.html
|
|
6
|
+
*
|
|
7
|
+
* Synopsis
|
|
8
|
+
* ```sql
|
|
9
|
+
* DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export class DropIndex extends DropIndexChange {
|
|
13
|
+
index;
|
|
14
|
+
scope = "object";
|
|
15
|
+
constructor(props) {
|
|
16
|
+
super();
|
|
17
|
+
this.index = props.index;
|
|
18
|
+
}
|
|
19
|
+
get drops() {
|
|
20
|
+
return [this.index.stableId];
|
|
21
|
+
}
|
|
22
|
+
get requires() {
|
|
23
|
+
return [this.index.stableId];
|
|
24
|
+
}
|
|
25
|
+
serialize() {
|
|
26
|
+
return ["DROP INDEX", `${this.index.schema}.${this.index.name}`].join(" ");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AlterIndex } from "./index.alter.ts";
|
|
2
|
+
import type { CommentIndex } from "./index.comment.ts";
|
|
3
|
+
import type { CreateIndex } from "./index.create.ts";
|
|
4
|
+
import type { DropIndex } from "./index.drop.ts";
|
|
5
|
+
export type IndexChange = AlterIndex | CommentIndex | CreateIndex | DropIndex;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function checkIsSerializable(index, indexableObject) {
|
|
2
|
+
if (index.index_expressions === null &&
|
|
3
|
+
(indexableObject === undefined || indexableObject.columns.length === 0)) {
|
|
4
|
+
throw new Error("Index requires an indexableObject with columns when key_columns are used");
|
|
5
|
+
}
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TableLikeObject } from "../base.model.ts";
|
|
2
|
+
import type { IndexChange } from "./changes/index.types.ts";
|
|
3
|
+
import type { Index } from "./index.model.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Diff two sets of indexes from main and branch catalogs.
|
|
6
|
+
*
|
|
7
|
+
* @param main - The indexes in the main catalog.
|
|
8
|
+
* @param branch - The indexes in the branch catalog.
|
|
9
|
+
* @param branchIndexableObjects - Table-like objects (tables, materialized views) in branch.
|
|
10
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
11
|
+
*/
|
|
12
|
+
export declare function diffIndexes(main: Record<string, Index>, branch: Record<string, Index>, branchIndexableObjects: Record<string, TableLikeObject>): IndexChange[];
|