@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,23 @@
|
|
|
1
|
+
import type { RlsPolicy } from "../rls-policy.model.ts";
|
|
2
|
+
import { CreateRlsPolicyChange, DropRlsPolicyChange } from "./rls-policy.base.ts";
|
|
3
|
+
export type CommentRlsPolicy = CreateCommentOnRlsPolicy | DropCommentOnRlsPolicy;
|
|
4
|
+
export declare class CreateCommentOnRlsPolicy extends CreateRlsPolicyChange {
|
|
5
|
+
readonly policy: RlsPolicy;
|
|
6
|
+
readonly scope: "comment";
|
|
7
|
+
constructor(props: {
|
|
8
|
+
policy: RlsPolicy;
|
|
9
|
+
});
|
|
10
|
+
get creates(): `comment:${string}`[];
|
|
11
|
+
get requires(): `rlsPolicy:${string}`[];
|
|
12
|
+
serialize(): string;
|
|
13
|
+
}
|
|
14
|
+
export declare class DropCommentOnRlsPolicy extends DropRlsPolicyChange {
|
|
15
|
+
readonly policy: RlsPolicy;
|
|
16
|
+
readonly scope: "comment";
|
|
17
|
+
constructor(props: {
|
|
18
|
+
policy: RlsPolicy;
|
|
19
|
+
});
|
|
20
|
+
get drops(): `comment:${string}`[];
|
|
21
|
+
get requires(): (`comment:${string}` | `rlsPolicy:${string}`)[];
|
|
22
|
+
serialize(): string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { quoteLiteral } from "../../base.change.js";
|
|
2
|
+
import { stableId } from "../../utils.js";
|
|
3
|
+
import { CreateRlsPolicyChange, DropRlsPolicyChange, } from "./rls-policy.base.js";
|
|
4
|
+
export class CreateCommentOnRlsPolicy extends CreateRlsPolicyChange {
|
|
5
|
+
policy;
|
|
6
|
+
scope = "comment";
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super();
|
|
9
|
+
this.policy = props.policy;
|
|
10
|
+
}
|
|
11
|
+
get creates() {
|
|
12
|
+
return [stableId.comment(this.policy.stableId)];
|
|
13
|
+
}
|
|
14
|
+
get requires() {
|
|
15
|
+
return [this.policy.stableId];
|
|
16
|
+
}
|
|
17
|
+
serialize() {
|
|
18
|
+
return [
|
|
19
|
+
"COMMENT ON POLICY",
|
|
20
|
+
this.policy.name,
|
|
21
|
+
"ON",
|
|
22
|
+
`${this.policy.schema}.${this.policy.table_name}`,
|
|
23
|
+
"IS",
|
|
24
|
+
// biome-ignore lint/style/noNonNullAssertion: rls policy comment is not nullable in this case
|
|
25
|
+
quoteLiteral(this.policy.comment),
|
|
26
|
+
].join(" ");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class DropCommentOnRlsPolicy extends DropRlsPolicyChange {
|
|
30
|
+
policy;
|
|
31
|
+
scope = "comment";
|
|
32
|
+
constructor(props) {
|
|
33
|
+
super();
|
|
34
|
+
this.policy = props.policy;
|
|
35
|
+
}
|
|
36
|
+
get drops() {
|
|
37
|
+
return [stableId.comment(this.policy.stableId)];
|
|
38
|
+
}
|
|
39
|
+
get requires() {
|
|
40
|
+
return [stableId.comment(this.policy.stableId), this.policy.stableId];
|
|
41
|
+
}
|
|
42
|
+
serialize() {
|
|
43
|
+
return [
|
|
44
|
+
"COMMENT ON POLICY",
|
|
45
|
+
this.policy.name,
|
|
46
|
+
"ON",
|
|
47
|
+
`${this.policy.schema}.${this.policy.table_name}`,
|
|
48
|
+
"IS NULL",
|
|
49
|
+
].join(" ");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { RlsPolicy } from "../rls-policy.model.ts";
|
|
2
|
+
import { CreateRlsPolicyChange } from "./rls-policy.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Create an RLS policy.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-createpolicy.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* CREATE POLICY name ON table_name
|
|
11
|
+
* [ AS { PERMISSIVE | RESTRICTIVE } ]
|
|
12
|
+
* [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
|
|
13
|
+
* [ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
|
|
14
|
+
* [ USING ( using_expression ) ]
|
|
15
|
+
* [ WITH CHECK ( with_check_expression ) ]
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class CreateRlsPolicy extends CreateRlsPolicyChange {
|
|
19
|
+
readonly policy: RlsPolicy;
|
|
20
|
+
readonly scope: "object";
|
|
21
|
+
constructor(props: {
|
|
22
|
+
policy: RlsPolicy;
|
|
23
|
+
});
|
|
24
|
+
get creates(): `rlsPolicy:${string}`[];
|
|
25
|
+
get requires(): string[];
|
|
26
|
+
serialize(): string;
|
|
27
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { stableId } from "../../utils.js";
|
|
2
|
+
import { CreateRlsPolicyChange } from "./rls-policy.base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create an RLS policy.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-createpolicy.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* CREATE POLICY name ON table_name
|
|
11
|
+
* [ AS { PERMISSIVE | RESTRICTIVE } ]
|
|
12
|
+
* [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
|
|
13
|
+
* [ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
|
|
14
|
+
* [ USING ( using_expression ) ]
|
|
15
|
+
* [ WITH CHECK ( with_check_expression ) ]
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class CreateRlsPolicy extends CreateRlsPolicyChange {
|
|
19
|
+
policy;
|
|
20
|
+
scope = "object";
|
|
21
|
+
constructor(props) {
|
|
22
|
+
super();
|
|
23
|
+
this.policy = props.policy;
|
|
24
|
+
}
|
|
25
|
+
get creates() {
|
|
26
|
+
return [this.policy.stableId];
|
|
27
|
+
}
|
|
28
|
+
get requires() {
|
|
29
|
+
const dependencies = new Set();
|
|
30
|
+
// Schema dependency
|
|
31
|
+
dependencies.add(stableId.schema(this.policy.schema));
|
|
32
|
+
// Table dependency
|
|
33
|
+
dependencies.add(stableId.table(this.policy.schema, this.policy.table_name));
|
|
34
|
+
// Owner dependency
|
|
35
|
+
dependencies.add(stableId.role(this.policy.owner));
|
|
36
|
+
return Array.from(dependencies);
|
|
37
|
+
}
|
|
38
|
+
serialize() {
|
|
39
|
+
const parts = ["CREATE POLICY"];
|
|
40
|
+
// Add policy name
|
|
41
|
+
parts.push(this.policy.name);
|
|
42
|
+
// Add ON table
|
|
43
|
+
parts.push("ON", `${this.policy.schema}.${this.policy.table_name}`);
|
|
44
|
+
// Add AS RESTRICTIVE only if false (default is PERMISSIVE)
|
|
45
|
+
if (!this.policy.permissive) {
|
|
46
|
+
parts.push("AS RESTRICTIVE");
|
|
47
|
+
}
|
|
48
|
+
// Add FOR command
|
|
49
|
+
const commandMap = {
|
|
50
|
+
r: "FOR SELECT",
|
|
51
|
+
a: "FOR INSERT",
|
|
52
|
+
w: "FOR UPDATE",
|
|
53
|
+
d: "FOR DELETE",
|
|
54
|
+
"*": "FOR ALL",
|
|
55
|
+
};
|
|
56
|
+
// Default is FOR ALL; only print when not default
|
|
57
|
+
if (this.policy.command && this.policy.command !== "*") {
|
|
58
|
+
parts.push(commandMap[this.policy.command]);
|
|
59
|
+
}
|
|
60
|
+
// Add TO roles
|
|
61
|
+
// Default is TO PUBLIC; avoid printing explicit PUBLIC in CREATE
|
|
62
|
+
if (this.policy.roles && this.policy.roles.length > 0) {
|
|
63
|
+
const onlyPublic = this.policy.roles.length === 1 &&
|
|
64
|
+
this.policy.roles[0].toLowerCase() === "public";
|
|
65
|
+
if (!onlyPublic) {
|
|
66
|
+
parts.push("TO", this.policy.roles.join(", "));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Add USING expression
|
|
70
|
+
if (this.policy.using_expression) {
|
|
71
|
+
parts.push("USING", `(${this.policy.using_expression})`);
|
|
72
|
+
}
|
|
73
|
+
// Add WITH CHECK expression
|
|
74
|
+
if (this.policy.with_check_expression) {
|
|
75
|
+
parts.push("WITH CHECK", `(${this.policy.with_check_expression})`);
|
|
76
|
+
}
|
|
77
|
+
return parts.join(" ");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RlsPolicy } from "../rls-policy.model.ts";
|
|
2
|
+
import { DropRlsPolicyChange } from "./rls-policy.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Drop an RLS policy.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-droppolicy.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* DROP POLICY [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare class DropRlsPolicy extends DropRlsPolicyChange {
|
|
14
|
+
readonly policy: RlsPolicy;
|
|
15
|
+
readonly scope: "object";
|
|
16
|
+
constructor(props: {
|
|
17
|
+
policy: RlsPolicy;
|
|
18
|
+
});
|
|
19
|
+
get drops(): `rlsPolicy:${string}`[];
|
|
20
|
+
get requires(): `rlsPolicy:${string}`[];
|
|
21
|
+
serialize(): string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DropRlsPolicyChange } from "./rls-policy.base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Drop an RLS policy.
|
|
4
|
+
*
|
|
5
|
+
* @see https://www.postgresql.org/docs/17/sql-droppolicy.html
|
|
6
|
+
*
|
|
7
|
+
* Synopsis
|
|
8
|
+
* ```sql
|
|
9
|
+
* DROP POLICY [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export class DropRlsPolicy extends DropRlsPolicyChange {
|
|
13
|
+
policy;
|
|
14
|
+
scope = "object";
|
|
15
|
+
constructor(props) {
|
|
16
|
+
super();
|
|
17
|
+
this.policy = props.policy;
|
|
18
|
+
}
|
|
19
|
+
get drops() {
|
|
20
|
+
return [this.policy.stableId];
|
|
21
|
+
}
|
|
22
|
+
get requires() {
|
|
23
|
+
return [this.policy.stableId];
|
|
24
|
+
}
|
|
25
|
+
serialize() {
|
|
26
|
+
return [
|
|
27
|
+
"DROP POLICY",
|
|
28
|
+
this.policy.name,
|
|
29
|
+
"ON",
|
|
30
|
+
`${this.policy.schema}.${this.policy.table_name}`,
|
|
31
|
+
].join(" ");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AlterRlsPolicy } from "./rls-policy.alter.ts";
|
|
2
|
+
import type { CommentRlsPolicy } from "./rls-policy.comment.ts";
|
|
3
|
+
import type { CreateRlsPolicy } from "./rls-policy.create.ts";
|
|
4
|
+
import type { DropRlsPolicy } from "./rls-policy.drop.ts";
|
|
5
|
+
export type RlsPolicyChange = AlterRlsPolicy | CommentRlsPolicy | CreateRlsPolicy | DropRlsPolicy;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RlsPolicyChange } from "./changes/rls-policy.types.ts";
|
|
2
|
+
import type { RlsPolicy } from "./rls-policy.model.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Diff two sets of RLS policies from main and branch catalogs.
|
|
5
|
+
*
|
|
6
|
+
* @param main - The RLS policies in the main catalog.
|
|
7
|
+
* @param branch - The RLS policies in the branch catalog.
|
|
8
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
9
|
+
*/
|
|
10
|
+
export declare function diffRlsPolicies(main: Record<string, RlsPolicy>, branch: Record<string, RlsPolicy>): RlsPolicyChange[];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { diffObjects } from "../base.diff.js";
|
|
2
|
+
import { deepEqual, hasNonAlterableChanges } from "../utils.js";
|
|
3
|
+
import { AlterRlsPolicySetRoles, AlterRlsPolicySetUsingExpression, AlterRlsPolicySetWithCheckExpression, } from "./changes/rls-policy.alter.js";
|
|
4
|
+
import { CreateCommentOnRlsPolicy, DropCommentOnRlsPolicy, } from "./changes/rls-policy.comment.js";
|
|
5
|
+
import { CreateRlsPolicy } from "./changes/rls-policy.create.js";
|
|
6
|
+
import { DropRlsPolicy } from "./changes/rls-policy.drop.js";
|
|
7
|
+
/**
|
|
8
|
+
* Diff two sets of RLS policies from main and branch catalogs.
|
|
9
|
+
*
|
|
10
|
+
* @param main - The RLS policies in the main catalog.
|
|
11
|
+
* @param branch - The RLS policies in the branch catalog.
|
|
12
|
+
* @returns A list of changes to apply to main to make it match branch.
|
|
13
|
+
*/
|
|
14
|
+
export function diffRlsPolicies(main, branch) {
|
|
15
|
+
const { created, dropped, altered } = diffObjects(main, branch);
|
|
16
|
+
const changes = [];
|
|
17
|
+
for (const rlsPolicyId of created) {
|
|
18
|
+
const policy = branch[rlsPolicyId];
|
|
19
|
+
changes.push(new CreateRlsPolicy({ policy: policy }));
|
|
20
|
+
if (policy.comment !== null) {
|
|
21
|
+
changes.push(new CreateCommentOnRlsPolicy({ policy }));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
for (const rlsPolicyId of dropped) {
|
|
25
|
+
changes.push(new DropRlsPolicy({ policy: main[rlsPolicyId] }));
|
|
26
|
+
}
|
|
27
|
+
for (const rlsPolicyId of altered) {
|
|
28
|
+
const mainRlsPolicy = main[rlsPolicyId];
|
|
29
|
+
const branchRlsPolicy = branch[rlsPolicyId];
|
|
30
|
+
// Check if non-alterable properties have changed
|
|
31
|
+
// These require dropping and recreating the RLS policy
|
|
32
|
+
// These attributes require drop+create (Postgres has no ALTER for them)
|
|
33
|
+
const NON_ALTERABLE_FIELDS = [
|
|
34
|
+
"command",
|
|
35
|
+
"permissive",
|
|
36
|
+
];
|
|
37
|
+
const nonAlterablePropsChanged = hasNonAlterableChanges(mainRlsPolicy, branchRlsPolicy, NON_ALTERABLE_FIELDS, {});
|
|
38
|
+
if (nonAlterablePropsChanged) {
|
|
39
|
+
// Replace the entire RLS policy (drop + create)
|
|
40
|
+
changes.push(new DropRlsPolicy({ policy: mainRlsPolicy }), new CreateRlsPolicy({ policy: branchRlsPolicy }));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Only alterable properties changed - check each one
|
|
44
|
+
// ROLES (TO ...)
|
|
45
|
+
const rolesEqual = deepEqual(mainRlsPolicy.roles, branchRlsPolicy.roles);
|
|
46
|
+
if (!rolesEqual) {
|
|
47
|
+
changes.push(new AlterRlsPolicySetRoles({
|
|
48
|
+
policy: mainRlsPolicy,
|
|
49
|
+
roles: branchRlsPolicy.roles,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
// USING expression
|
|
53
|
+
if (mainRlsPolicy.using_expression !== branchRlsPolicy.using_expression) {
|
|
54
|
+
changes.push(new AlterRlsPolicySetUsingExpression({
|
|
55
|
+
policy: mainRlsPolicy,
|
|
56
|
+
usingExpression: branchRlsPolicy.using_expression,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
// WITH CHECK expression
|
|
60
|
+
if (mainRlsPolicy.with_check_expression !==
|
|
61
|
+
branchRlsPolicy.with_check_expression) {
|
|
62
|
+
changes.push(new AlterRlsPolicySetWithCheckExpression({
|
|
63
|
+
policy: mainRlsPolicy,
|
|
64
|
+
withCheckExpression: branchRlsPolicy.with_check_expression,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
// COMMENT
|
|
68
|
+
if (mainRlsPolicy.comment !== branchRlsPolicy.comment) {
|
|
69
|
+
if (branchRlsPolicy.comment === null) {
|
|
70
|
+
changes.push(new DropCommentOnRlsPolicy({ policy: mainRlsPolicy }));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
changes.push(new CreateCommentOnRlsPolicy({ policy: branchRlsPolicy }));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Note: RLS policy renaming would require drop+create due to identity fields
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return changes;
|
|
80
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Sql } from "postgres";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { BasePgModel } from "../base.model.ts";
|
|
4
|
+
declare const rlsPolicyPropsSchema: z.ZodObject<{
|
|
5
|
+
schema: z.ZodString;
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
table_name: z.ZodString;
|
|
8
|
+
command: z.ZodEnum<{
|
|
9
|
+
a: "a";
|
|
10
|
+
r: "r";
|
|
11
|
+
w: "w";
|
|
12
|
+
d: "d";
|
|
13
|
+
"*": "*";
|
|
14
|
+
}>;
|
|
15
|
+
permissive: z.ZodBoolean;
|
|
16
|
+
roles: z.ZodArray<z.ZodString>;
|
|
17
|
+
using_expression: z.ZodNullable<z.ZodString>;
|
|
18
|
+
with_check_expression: z.ZodNullable<z.ZodString>;
|
|
19
|
+
owner: z.ZodString;
|
|
20
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
21
|
+
}, z.z.core.$strip>;
|
|
22
|
+
export type RlsPolicyProps = z.infer<typeof rlsPolicyPropsSchema>;
|
|
23
|
+
export declare class RlsPolicy extends BasePgModel {
|
|
24
|
+
readonly schema: RlsPolicyProps["schema"];
|
|
25
|
+
readonly name: RlsPolicyProps["name"];
|
|
26
|
+
readonly table_name: RlsPolicyProps["table_name"];
|
|
27
|
+
readonly command: RlsPolicyProps["command"];
|
|
28
|
+
readonly permissive: RlsPolicyProps["permissive"];
|
|
29
|
+
readonly roles: RlsPolicyProps["roles"];
|
|
30
|
+
readonly using_expression: RlsPolicyProps["using_expression"];
|
|
31
|
+
readonly with_check_expression: RlsPolicyProps["with_check_expression"];
|
|
32
|
+
readonly owner: RlsPolicyProps["owner"];
|
|
33
|
+
readonly comment: RlsPolicyProps["comment"];
|
|
34
|
+
constructor(props: RlsPolicyProps);
|
|
35
|
+
get stableId(): `rlsPolicy:${string}`;
|
|
36
|
+
get identityFields(): {
|
|
37
|
+
schema: string;
|
|
38
|
+
table_name: string;
|
|
39
|
+
name: string;
|
|
40
|
+
};
|
|
41
|
+
get dataFields(): {
|
|
42
|
+
command: "a" | "r" | "w" | "d" | "*";
|
|
43
|
+
permissive: boolean;
|
|
44
|
+
roles: string[];
|
|
45
|
+
using_expression: string | null;
|
|
46
|
+
with_check_expression: string | null;
|
|
47
|
+
owner: string;
|
|
48
|
+
comment: string | null;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export declare function extractRlsPolicies(sql: Sql): Promise<RlsPolicy[]>;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { BasePgModel } from "../base.model.js";
|
|
3
|
+
const RlsPolicyCommandSchema = z.enum([
|
|
4
|
+
"r", // SELECT command
|
|
5
|
+
"a", // INSERT command (add)
|
|
6
|
+
"w", // UPDATE command (write)
|
|
7
|
+
"d", // DELETE command
|
|
8
|
+
"*", // ALL commands
|
|
9
|
+
]);
|
|
10
|
+
const rlsPolicyPropsSchema = z.object({
|
|
11
|
+
schema: z.string(),
|
|
12
|
+
name: z.string(),
|
|
13
|
+
table_name: z.string(),
|
|
14
|
+
command: RlsPolicyCommandSchema,
|
|
15
|
+
permissive: z.boolean(),
|
|
16
|
+
roles: z.array(z.string()),
|
|
17
|
+
using_expression: z.string().nullable(),
|
|
18
|
+
with_check_expression: z.string().nullable(),
|
|
19
|
+
owner: z.string(),
|
|
20
|
+
comment: z.string().nullable(),
|
|
21
|
+
});
|
|
22
|
+
export class RlsPolicy extends BasePgModel {
|
|
23
|
+
schema;
|
|
24
|
+
name;
|
|
25
|
+
table_name;
|
|
26
|
+
command;
|
|
27
|
+
permissive;
|
|
28
|
+
roles;
|
|
29
|
+
using_expression;
|
|
30
|
+
with_check_expression;
|
|
31
|
+
owner;
|
|
32
|
+
comment;
|
|
33
|
+
constructor(props) {
|
|
34
|
+
super();
|
|
35
|
+
// Identity fields
|
|
36
|
+
this.schema = props.schema;
|
|
37
|
+
this.name = props.name;
|
|
38
|
+
this.table_name = props.table_name;
|
|
39
|
+
// Data fields
|
|
40
|
+
this.command = props.command;
|
|
41
|
+
this.permissive = props.permissive;
|
|
42
|
+
this.roles = props.roles;
|
|
43
|
+
this.using_expression = props.using_expression;
|
|
44
|
+
this.with_check_expression = props.with_check_expression;
|
|
45
|
+
this.owner = props.owner;
|
|
46
|
+
this.comment = props.comment;
|
|
47
|
+
}
|
|
48
|
+
get stableId() {
|
|
49
|
+
return `rlsPolicy:${this.schema}.${this.table_name}.${this.name}`;
|
|
50
|
+
}
|
|
51
|
+
get identityFields() {
|
|
52
|
+
return {
|
|
53
|
+
schema: this.schema,
|
|
54
|
+
table_name: this.table_name,
|
|
55
|
+
name: this.name,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
get dataFields() {
|
|
59
|
+
return {
|
|
60
|
+
command: this.command,
|
|
61
|
+
permissive: this.permissive,
|
|
62
|
+
roles: this.roles,
|
|
63
|
+
using_expression: this.using_expression,
|
|
64
|
+
with_check_expression: this.with_check_expression,
|
|
65
|
+
owner: this.owner,
|
|
66
|
+
comment: this.comment,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function extractRlsPolicies(sql) {
|
|
71
|
+
return sql.begin(async (sql) => {
|
|
72
|
+
await sql `set search_path = ''`;
|
|
73
|
+
const policyRows = await sql `
|
|
74
|
+
with extension_policy_oids as (
|
|
75
|
+
select
|
|
76
|
+
objid
|
|
77
|
+
from
|
|
78
|
+
pg_depend d
|
|
79
|
+
where
|
|
80
|
+
d.refclassid = 'pg_extension'::regclass
|
|
81
|
+
and d.classid = 'pg_policy'::regclass
|
|
82
|
+
),
|
|
83
|
+
extension_table_oids as (
|
|
84
|
+
select
|
|
85
|
+
objid
|
|
86
|
+
from
|
|
87
|
+
pg_depend d
|
|
88
|
+
where
|
|
89
|
+
d.refclassid = 'pg_extension'::regclass
|
|
90
|
+
and d.classid = 'pg_class'::regclass
|
|
91
|
+
and d.deptype = 'e'
|
|
92
|
+
)
|
|
93
|
+
select
|
|
94
|
+
tc.relnamespace::regnamespace::text as schema,
|
|
95
|
+
quote_ident(p.polname) as name,
|
|
96
|
+
quote_ident(tc.relname) as table_name,
|
|
97
|
+
p.polcmd as command,
|
|
98
|
+
p.polpermissive as permissive,
|
|
99
|
+
case
|
|
100
|
+
when p.polroles = '{0}' then array['public']::text[]
|
|
101
|
+
else array(
|
|
102
|
+
select quote_ident(rolname)
|
|
103
|
+
from pg_catalog.pg_roles
|
|
104
|
+
where oid = any(p.polroles)
|
|
105
|
+
order by rolname
|
|
106
|
+
)
|
|
107
|
+
end as roles,
|
|
108
|
+
pg_get_expr(p.polqual, p.polrelid) as using_expression,
|
|
109
|
+
pg_get_expr(p.polwithcheck, p.polrelid) as with_check_expression,
|
|
110
|
+
tc.relowner::regrole::text as owner,
|
|
111
|
+
obj_description(p.oid, 'pg_policy') as comment
|
|
112
|
+
from
|
|
113
|
+
pg_catalog.pg_policy p
|
|
114
|
+
inner join pg_catalog.pg_class tc on tc.oid = p.polrelid
|
|
115
|
+
left outer join extension_policy_oids e_policy on p.oid = e_policy.objid
|
|
116
|
+
left outer join extension_table_oids e_table on tc.oid = e_table.objid
|
|
117
|
+
where not tc.relnamespace::regnamespace::text like any(array['pg\\_%', 'information\\_schema'])
|
|
118
|
+
and e_policy.objid is null
|
|
119
|
+
and e_table.objid is null
|
|
120
|
+
order by
|
|
121
|
+
1, 2;
|
|
122
|
+
`;
|
|
123
|
+
// Validate and parse each row using the Zod schema
|
|
124
|
+
const validatedRows = policyRows.map((row) => rlsPolicyPropsSchema.parse(row));
|
|
125
|
+
return validatedRows.map((row) => new RlsPolicy(row));
|
|
126
|
+
});
|
|
127
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { Role } from "../role.model.ts";
|
|
2
|
+
import { AlterRoleChange } from "./role.base.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Alter a role.
|
|
5
|
+
*
|
|
6
|
+
* @see https://www.postgresql.org/docs/17/sql-alterrole.html
|
|
7
|
+
*
|
|
8
|
+
* Synopsis
|
|
9
|
+
* ```sql
|
|
10
|
+
* ALTER ROLE role_name [ WITH ] option [ ... ]
|
|
11
|
+
* where option can be:
|
|
12
|
+
* SUPERUSER | NOSUPERUSER
|
|
13
|
+
* | CREATEDB | NOCREATEDB
|
|
14
|
+
* | CREATEROLE | NOCREATEROLE
|
|
15
|
+
* | INHERIT | NOINHERIT
|
|
16
|
+
* | LOGIN | NOLOGIN
|
|
17
|
+
* | REPLICATION | NOREPLICATION
|
|
18
|
+
* | BYPASSRLS | NOBYPASSRLS
|
|
19
|
+
* | CONNECTION LIMIT connlimit
|
|
20
|
+
* | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
|
|
21
|
+
* | VALID UNTIL 'timestamp'
|
|
22
|
+
* | IN ROLE role_name [, ...]
|
|
23
|
+
* | IN GROUP role_name [, ...]
|
|
24
|
+
* | ROLE role_name [, ...]
|
|
25
|
+
* | ADMIN role_name [, ...]
|
|
26
|
+
* | USER role_name [, ...]
|
|
27
|
+
* | SYSID uid
|
|
28
|
+
*
|
|
29
|
+
* ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
|
|
30
|
+
* ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
|
|
31
|
+
* ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
|
|
32
|
+
* ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export type AlterRole = AlterRoleSetConfig | AlterRoleSetOptions;
|
|
36
|
+
/**
|
|
37
|
+
* ALTER ROLE ... WITH option [...]
|
|
38
|
+
* Emits only options that differ between main and branch.
|
|
39
|
+
*/
|
|
40
|
+
export declare class AlterRoleSetOptions extends AlterRoleChange {
|
|
41
|
+
readonly role: Role;
|
|
42
|
+
readonly options: string[];
|
|
43
|
+
readonly scope: "object";
|
|
44
|
+
constructor(props: {
|
|
45
|
+
role: Role;
|
|
46
|
+
options: string[];
|
|
47
|
+
});
|
|
48
|
+
get requires(): `role:${string}`[];
|
|
49
|
+
serialize(): string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* ALTER ROLE ... SET/RESET configuration_parameter (single statement)
|
|
53
|
+
* Represents one action: SET key TO value, RESET key, or RESET ALL.
|
|
54
|
+
*/
|
|
55
|
+
export declare class AlterRoleSetConfig extends AlterRoleChange {
|
|
56
|
+
readonly role: Role;
|
|
57
|
+
readonly action: "set" | "reset" | "reset_all";
|
|
58
|
+
readonly key?: string;
|
|
59
|
+
readonly value?: string;
|
|
60
|
+
readonly scope: "object";
|
|
61
|
+
constructor(props: {
|
|
62
|
+
role: Role;
|
|
63
|
+
action: "set";
|
|
64
|
+
key: string;
|
|
65
|
+
value: string;
|
|
66
|
+
});
|
|
67
|
+
constructor(props: {
|
|
68
|
+
role: Role;
|
|
69
|
+
action: "reset";
|
|
70
|
+
key: string;
|
|
71
|
+
});
|
|
72
|
+
constructor(props: {
|
|
73
|
+
role: Role;
|
|
74
|
+
action: "reset_all";
|
|
75
|
+
});
|
|
76
|
+
get requires(): `role:${string}`[];
|
|
77
|
+
serialize(): string;
|
|
78
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { formatConfigValue } from "../../procedure/utils.js";
|
|
2
|
+
import { AlterRoleChange } from "./role.base.js";
|
|
3
|
+
/**
|
|
4
|
+
* ALTER ROLE ... WITH option [...]
|
|
5
|
+
* Emits only options that differ between main and branch.
|
|
6
|
+
*/
|
|
7
|
+
export class AlterRoleSetOptions extends AlterRoleChange {
|
|
8
|
+
role;
|
|
9
|
+
options;
|
|
10
|
+
scope = "object";
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super();
|
|
13
|
+
this.role = props.role;
|
|
14
|
+
this.options = props.options;
|
|
15
|
+
}
|
|
16
|
+
get requires() {
|
|
17
|
+
return [this.role.stableId];
|
|
18
|
+
}
|
|
19
|
+
serialize() {
|
|
20
|
+
const parts = ["ALTER ROLE", this.role.name];
|
|
21
|
+
return [...parts, "WITH", this.options.join(" ")].join(" ");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* ALTER ROLE ... SET/RESET configuration_parameter (single statement)
|
|
26
|
+
* Represents one action: SET key TO value, RESET key, or RESET ALL.
|
|
27
|
+
*/
|
|
28
|
+
export class AlterRoleSetConfig extends AlterRoleChange {
|
|
29
|
+
role;
|
|
30
|
+
action;
|
|
31
|
+
key;
|
|
32
|
+
value;
|
|
33
|
+
scope = "object";
|
|
34
|
+
constructor(props) {
|
|
35
|
+
super();
|
|
36
|
+
this.role = props.role;
|
|
37
|
+
this.action = props.action;
|
|
38
|
+
this.key = props.key;
|
|
39
|
+
this.value = props.value;
|
|
40
|
+
}
|
|
41
|
+
get requires() {
|
|
42
|
+
return [this.role.stableId];
|
|
43
|
+
}
|
|
44
|
+
serialize() {
|
|
45
|
+
const head = ["ALTER ROLE", this.role.name].join(" ");
|
|
46
|
+
if (this.action === "reset_all") {
|
|
47
|
+
return `${head} RESET ALL`;
|
|
48
|
+
}
|
|
49
|
+
if (this.action === "reset") {
|
|
50
|
+
return `${head} RESET ${this.key}`;
|
|
51
|
+
}
|
|
52
|
+
const formatted = formatConfigValue(this.key, this.value);
|
|
53
|
+
return `${head} SET ${this.key} TO ${formatted}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseChange } from "../../base.change.ts";
|
|
2
|
+
import type { Role } from "../role.model.ts";
|
|
3
|
+
declare abstract class BaseRoleChange extends BaseChange {
|
|
4
|
+
abstract readonly role: Role;
|
|
5
|
+
abstract readonly scope: "object" | "comment" | "membership" | "default_privilege";
|
|
6
|
+
readonly objectType: "role";
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class CreateRoleChange extends BaseRoleChange {
|
|
9
|
+
readonly operation: "create";
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class AlterRoleChange extends BaseRoleChange {
|
|
12
|
+
readonly operation: "alter";
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class DropRoleChange extends BaseRoleChange {
|
|
15
|
+
readonly operation: "drop";
|
|
16
|
+
}
|
|
17
|
+
export {};
|