@supabase/pg-delta 0.0.0 → 1.0.0-alpha.1

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.
Files changed (569) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/cli/app.d.ts +1 -0
  4. package/dist/cli/app.js +26 -0
  5. package/dist/cli/bin/cli.d.ts +2 -0
  6. package/dist/cli/bin/cli.js +7 -0
  7. package/dist/cli/commands/apply.d.ts +5 -0
  8. package/dist/cli/commands/apply.js +85 -0
  9. package/dist/cli/commands/plan.d.ts +5 -0
  10. package/dist/cli/commands/plan.js +137 -0
  11. package/dist/cli/commands/sync.d.ts +5 -0
  12. package/dist/cli/commands/sync.js +141 -0
  13. package/dist/cli/formatters/index.d.ts +4 -0
  14. package/dist/cli/formatters/index.js +4 -0
  15. package/dist/cli/formatters/tree/tree-builder.d.ts +10 -0
  16. package/dist/cli/formatters/tree/tree-builder.js +333 -0
  17. package/dist/cli/formatters/tree/tree-renderer.d.ts +45 -0
  18. package/dist/cli/formatters/tree/tree-renderer.js +303 -0
  19. package/dist/cli/formatters/tree/tree.d.ts +8 -0
  20. package/dist/cli/formatters/tree/tree.js +161 -0
  21. package/dist/cli/utils/integrations.d.ts +14 -0
  22. package/dist/cli/utils/integrations.js +44 -0
  23. package/dist/cli/utils.d.ts +64 -0
  24. package/dist/cli/utils.js +160 -0
  25. package/dist/core/catalog.diff.d.ts +5 -0
  26. package/dist/core/catalog.diff.js +147 -0
  27. package/dist/core/catalog.model.d.ts +93 -0
  28. package/dist/core/catalog.model.js +254 -0
  29. package/dist/core/change.types.d.ts +22 -0
  30. package/dist/core/change.types.js +1 -0
  31. package/dist/core/context.d.ts +11 -0
  32. package/dist/core/context.js +12 -0
  33. package/dist/core/depend.d.ts +31 -0
  34. package/dist/core/depend.js +1833 -0
  35. package/dist/core/expand-replace-dependencies.d.ts +14 -0
  36. package/dist/core/expand-replace-dependencies.js +280 -0
  37. package/dist/core/fingerprint.d.ts +15 -0
  38. package/dist/core/fingerprint.js +174 -0
  39. package/dist/core/integrations/filter/dsl.d.ts +97 -0
  40. package/dist/core/integrations/filter/dsl.js +107 -0
  41. package/dist/core/integrations/filter/extractors.d.ts +12 -0
  42. package/dist/core/integrations/filter/extractors.js +136 -0
  43. package/dist/core/integrations/filter/filter.types.d.ts +2 -0
  44. package/dist/core/integrations/filter/filter.types.js +1 -0
  45. package/dist/core/integrations/integration-dsl.d.ts +22 -0
  46. package/dist/core/integrations/integration-dsl.js +6 -0
  47. package/dist/core/integrations/integration.types.d.ts +6 -0
  48. package/dist/core/integrations/integration.types.js +1 -0
  49. package/dist/core/integrations/serialize/dsl.d.ts +58 -0
  50. package/dist/core/integrations/serialize/dsl.js +42 -0
  51. package/dist/core/integrations/serialize/serialize.types.d.ts +2 -0
  52. package/dist/core/integrations/serialize/serialize.types.js +1 -0
  53. package/dist/core/integrations/supabase.d.ts +10 -0
  54. package/dist/core/integrations/supabase.js +114 -0
  55. package/dist/core/objects/aggregate/aggregate.diff.d.ts +10 -0
  56. package/dist/core/objects/aggregate/aggregate.diff.js +186 -0
  57. package/dist/core/objects/aggregate/aggregate.model.d.ts +174 -0
  58. package/dist/core/objects/aggregate/aggregate.model.js +297 -0
  59. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +19 -0
  60. package/dist/core/objects/aggregate/changes/aggregate.alter.js +25 -0
  61. package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +17 -0
  62. package/dist/core/objects/aggregate/changes/aggregate.base.js +13 -0
  63. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +23 -0
  64. package/dist/core/objects/aggregate/changes/aggregate.comment.js +44 -0
  65. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +19 -0
  66. package/dist/core/objects/aggregate/changes/aggregate.create.js +228 -0
  67. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +17 -0
  68. package/dist/core/objects/aggregate/changes/aggregate.drop.js +26 -0
  69. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +62 -0
  70. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +102 -0
  71. package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +6 -0
  72. package/dist/core/objects/aggregate/changes/aggregate.types.js +1 -0
  73. package/dist/core/objects/base.change.d.ts +46 -0
  74. package/dist/core/objects/base.change.js +38 -0
  75. package/dist/core/objects/base.default-privileges.d.ts +29 -0
  76. package/dist/core/objects/base.default-privileges.js +167 -0
  77. package/dist/core/objects/base.diff.d.ts +6 -0
  78. package/dist/core/objects/base.diff.js +12 -0
  79. package/dist/core/objects/base.model.d.ts +74 -0
  80. package/dist/core/objects/base.model.js +47 -0
  81. package/dist/core/objects/base.privilege-diff.d.ts +54 -0
  82. package/dist/core/objects/base.privilege-diff.js +216 -0
  83. package/dist/core/objects/base.privilege.d.ts +27 -0
  84. package/dist/core/objects/base.privilege.js +169 -0
  85. package/dist/core/objects/collation/changes/collation.alter.d.ts +45 -0
  86. package/dist/core/objects/collation/changes/collation.alter.js +52 -0
  87. package/dist/core/objects/collation/changes/collation.base.d.ts +17 -0
  88. package/dist/core/objects/collation/changes/collation.base.js +13 -0
  89. package/dist/core/objects/collation/changes/collation.comment.d.ts +26 -0
  90. package/dist/core/objects/collation/changes/collation.comment.js +50 -0
  91. package/dist/core/objects/collation/changes/collation.create.d.ts +32 -0
  92. package/dist/core/objects/collation/changes/collation.create.js +86 -0
  93. package/dist/core/objects/collation/changes/collation.drop.d.ts +22 -0
  94. package/dist/core/objects/collation/changes/collation.drop.js +31 -0
  95. package/dist/core/objects/collation/changes/collation.types.d.ts +5 -0
  96. package/dist/core/objects/collation/changes/collation.types.js +1 -0
  97. package/dist/core/objects/collation/collation.diff.d.ts +13 -0
  98. package/dist/core/objects/collation/collation.diff.js +85 -0
  99. package/dist/core/objects/collation/collation.model.d.ts +67 -0
  100. package/dist/core/objects/collation/collation.model.js +207 -0
  101. package/dist/core/objects/domain/changes/domain.alter.d.ts +143 -0
  102. package/dist/core/objects/domain/changes/domain.alter.js +191 -0
  103. package/dist/core/objects/domain/changes/domain.base.d.ts +17 -0
  104. package/dist/core/objects/domain/changes/domain.base.js +13 -0
  105. package/dist/core/objects/domain/changes/domain.comment.d.ts +25 -0
  106. package/dist/core/objects/domain/changes/domain.comment.js +47 -0
  107. package/dist/core/objects/domain/changes/domain.create.d.ts +30 -0
  108. package/dist/core/objects/domain/changes/domain.create.js +92 -0
  109. package/dist/core/objects/domain/changes/domain.drop.d.ts +22 -0
  110. package/dist/core/objects/domain/changes/domain.drop.js +28 -0
  111. package/dist/core/objects/domain/changes/domain.privilege.d.ts +97 -0
  112. package/dist/core/objects/domain/changes/domain.privilege.js +127 -0
  113. package/dist/core/objects/domain/changes/domain.types.d.ts +6 -0
  114. package/dist/core/objects/domain/changes/domain.types.js +1 -0
  115. package/dist/core/objects/domain/domain.diff.d.ts +18 -0
  116. package/dist/core/objects/domain/domain.diff.js +244 -0
  117. package/dist/core/objects/domain/domain.model.d.ts +103 -0
  118. package/dist/core/objects/domain/domain.model.js +172 -0
  119. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +44 -0
  120. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +51 -0
  121. package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +17 -0
  122. package/dist/core/objects/event-trigger/changes/event-trigger.base.js +13 -0
  123. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +23 -0
  124. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +46 -0
  125. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +25 -0
  126. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +55 -0
  127. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +22 -0
  128. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +28 -0
  129. package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +5 -0
  130. package/dist/core/objects/event-trigger/changes/event-trigger.types.js +1 -0
  131. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +13 -0
  132. package/dist/core/objects/event-trigger/event-trigger.diff.js +81 -0
  133. package/dist/core/objects/event-trigger/event-trigger.model.d.ts +45 -0
  134. package/dist/core/objects/event-trigger/event-trigger.model.js +89 -0
  135. package/dist/core/objects/extension/changes/extension.alter.d.ts +44 -0
  136. package/dist/core/objects/extension/changes/extension.alter.js +51 -0
  137. package/dist/core/objects/extension/changes/extension.base.d.ts +17 -0
  138. package/dist/core/objects/extension/changes/extension.base.js +13 -0
  139. package/dist/core/objects/extension/changes/extension.comment.d.ts +26 -0
  140. package/dist/core/objects/extension/changes/extension.comment.js +46 -0
  141. package/dist/core/objects/extension/changes/extension.create.d.ts +25 -0
  142. package/dist/core/objects/extension/changes/extension.create.js +49 -0
  143. package/dist/core/objects/extension/changes/extension.drop.d.ts +22 -0
  144. package/dist/core/objects/extension/changes/extension.drop.js +28 -0
  145. package/dist/core/objects/extension/changes/extension.types.d.ts +5 -0
  146. package/dist/core/objects/extension/changes/extension.types.js +1 -0
  147. package/dist/core/objects/extension/extension.diff.d.ts +10 -0
  148. package/dist/core/objects/extension/extension.diff.js +65 -0
  149. package/dist/core/objects/extension/extension.model.d.ts +52 -0
  150. package/dist/core/objects/extension/extension.model.js +268 -0
  151. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +51 -0
  152. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +61 -0
  153. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.d.ts +17 -0
  154. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.js +13 -0
  155. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +26 -0
  156. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +50 -0
  157. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +25 -0
  158. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +78 -0
  159. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +22 -0
  160. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +28 -0
  161. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +97 -0
  162. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +123 -0
  163. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +6 -0
  164. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.js +1 -0
  165. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +18 -0
  166. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +221 -0
  167. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +59 -0
  168. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +128 -0
  169. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +5 -0
  170. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.js +1 -0
  171. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +163 -0
  172. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +248 -0
  173. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +17 -0
  174. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.js +13 -0
  175. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +26 -0
  176. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +50 -0
  177. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +25 -0
  178. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +64 -0
  179. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +22 -0
  180. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +31 -0
  181. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +97 -0
  182. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +129 -0
  183. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +6 -0
  184. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.js +1 -0
  185. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +18 -0
  186. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +268 -0
  187. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +117 -0
  188. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +215 -0
  189. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +65 -0
  190. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +84 -0
  191. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.d.ts +17 -0
  192. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.js +13 -0
  193. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +26 -0
  194. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +43 -0
  195. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +24 -0
  196. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +62 -0
  197. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +22 -0
  198. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +28 -0
  199. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +97 -0
  200. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +123 -0
  201. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +6 -0
  202. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.js +1 -0
  203. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +18 -0
  204. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +209 -0
  205. package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +62 -0
  206. package/dist/core/objects/foreign-data-wrapper/server/server.model.js +118 -0
  207. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +37 -0
  208. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +38 -0
  209. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.d.ts +17 -0
  210. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.js +13 -0
  211. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +24 -0
  212. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +52 -0
  213. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +23 -0
  214. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +34 -0
  215. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +4 -0
  216. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.js +1 -0
  217. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.d.ts +10 -0
  218. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.js +77 -0
  219. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +36 -0
  220. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +85 -0
  221. package/dist/core/objects/index/changes/index.alter.d.ts +76 -0
  222. package/dist/core/objects/index/changes/index.alter.js +94 -0
  223. package/dist/core/objects/index/changes/index.base.d.ts +17 -0
  224. package/dist/core/objects/index/changes/index.base.js +13 -0
  225. package/dist/core/objects/index/changes/index.comment.d.ts +26 -0
  226. package/dist/core/objects/index/changes/index.comment.js +50 -0
  227. package/dist/core/objects/index/changes/index.create.d.ts +30 -0
  228. package/dist/core/objects/index/changes/index.create.js +53 -0
  229. package/dist/core/objects/index/changes/index.drop.d.ts +22 -0
  230. package/dist/core/objects/index/changes/index.drop.js +28 -0
  231. package/dist/core/objects/index/changes/index.types.d.ts +5 -0
  232. package/dist/core/objects/index/changes/index.types.js +1 -0
  233. package/dist/core/objects/index/changes/utils.d.ts +3 -0
  234. package/dist/core/objects/index/changes/utils.js +6 -0
  235. package/dist/core/objects/index/index.diff.d.ts +12 -0
  236. package/dist/core/objects/index/index.diff.js +182 -0
  237. package/dist/core/objects/index/index.model.d.ts +150 -0
  238. package/dist/core/objects/index/index.model.js +340 -0
  239. package/dist/core/objects/language/changes/language.alter.d.ts +32 -0
  240. package/dist/core/objects/language/changes/language.alter.js +30 -0
  241. package/dist/core/objects/language/changes/language.base.d.ts +17 -0
  242. package/dist/core/objects/language/changes/language.base.js +13 -0
  243. package/dist/core/objects/language/changes/language.comment.d.ts +26 -0
  244. package/dist/core/objects/language/changes/language.comment.js +45 -0
  245. package/dist/core/objects/language/changes/language.create.d.ts +25 -0
  246. package/dist/core/objects/language/changes/language.create.js +76 -0
  247. package/dist/core/objects/language/changes/language.drop.d.ts +22 -0
  248. package/dist/core/objects/language/changes/language.drop.js +31 -0
  249. package/dist/core/objects/language/changes/language.privilege.d.ts +97 -0
  250. package/dist/core/objects/language/changes/language.privilege.js +128 -0
  251. package/dist/core/objects/language/changes/language.types.d.ts +6 -0
  252. package/dist/core/objects/language/changes/language.types.js +1 -0
  253. package/dist/core/objects/language/language.diff.d.ts +15 -0
  254. package/dist/core/objects/language/language.diff.js +117 -0
  255. package/dist/core/objects/language/language.model.d.ts +62 -0
  256. package/dist/core/objects/language/language.model.js +128 -0
  257. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +67 -0
  258. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +63 -0
  259. package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +17 -0
  260. package/dist/core/objects/materialized-view/changes/materialized-view.base.js +13 -0
  261. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +53 -0
  262. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +112 -0
  263. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +35 -0
  264. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +71 -0
  265. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +26 -0
  266. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +42 -0
  267. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +105 -0
  268. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +151 -0
  269. package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +6 -0
  270. package/dist/core/objects/materialized-view/changes/materialized-view.types.js +1 -0
  271. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +18 -0
  272. package/dist/core/objects/materialized-view/materialized-view.diff.js +335 -0
  273. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +152 -0
  274. package/dist/core/objects/materialized-view/materialized-view.model.js +228 -0
  275. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +143 -0
  276. package/dist/core/objects/procedure/changes/procedure.alter.js +207 -0
  277. package/dist/core/objects/procedure/changes/procedure.base.d.ts +17 -0
  278. package/dist/core/objects/procedure/changes/procedure.base.js +13 -0
  279. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +26 -0
  280. package/dist/core/objects/procedure/changes/procedure.comment.js +52 -0
  281. package/dist/core/objects/procedure/changes/procedure.create.d.ts +42 -0
  282. package/dist/core/objects/procedure/changes/procedure.create.js +77 -0
  283. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +23 -0
  284. package/dist/core/objects/procedure/changes/procedure.drop.js +37 -0
  285. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +98 -0
  286. package/dist/core/objects/procedure/changes/procedure.privilege.js +144 -0
  287. package/dist/core/objects/procedure/changes/procedure.types.d.ts +6 -0
  288. package/dist/core/objects/procedure/changes/procedure.types.js +1 -0
  289. package/dist/core/objects/procedure/procedure.diff.d.ts +18 -0
  290. package/dist/core/objects/procedure/procedure.diff.js +282 -0
  291. package/dist/core/objects/procedure/procedure.model.d.ts +132 -0
  292. package/dist/core/objects/procedure/procedure.model.js +244 -0
  293. package/dist/core/objects/procedure/utils.d.ts +14 -0
  294. package/dist/core/objects/procedure/utils.js +55 -0
  295. package/dist/core/objects/publication/changes/publication.alter.d.ts +88 -0
  296. package/dist/core/objects/publication/changes/publication.alter.js +176 -0
  297. package/dist/core/objects/publication/changes/publication.base.d.ts +17 -0
  298. package/dist/core/objects/publication/changes/publication.base.js +13 -0
  299. package/dist/core/objects/publication/changes/publication.comment.d.ts +23 -0
  300. package/dist/core/objects/publication/changes/publication.comment.js +46 -0
  301. package/dist/core/objects/publication/changes/publication.create.d.ts +17 -0
  302. package/dist/core/objects/publication/changes/publication.create.js +61 -0
  303. package/dist/core/objects/publication/changes/publication.drop.d.ts +17 -0
  304. package/dist/core/objects/publication/changes/publication.drop.js +23 -0
  305. package/dist/core/objects/publication/changes/publication.types.d.ts +5 -0
  306. package/dist/core/objects/publication/changes/publication.types.js +1 -0
  307. package/dist/core/objects/publication/publication.diff.d.ts +5 -0
  308. package/dist/core/objects/publication/publication.diff.js +161 -0
  309. package/dist/core/objects/publication/publication.model.d.ts +96 -0
  310. package/dist/core/objects/publication/publication.model.js +186 -0
  311. package/dist/core/objects/publication/utils.d.ts +5 -0
  312. package/dist/core/objects/publication/utils.js +45 -0
  313. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +62 -0
  314. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +90 -0
  315. package/dist/core/objects/rls-policy/changes/rls-policy.base.d.ts +17 -0
  316. package/dist/core/objects/rls-policy/changes/rls-policy.base.js +13 -0
  317. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +23 -0
  318. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +51 -0
  319. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +27 -0
  320. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +79 -0
  321. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +22 -0
  322. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +33 -0
  323. package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +5 -0
  324. package/dist/core/objects/rls-policy/changes/rls-policy.types.js +1 -0
  325. package/dist/core/objects/rls-policy/rls-policy.diff.d.ts +10 -0
  326. package/dist/core/objects/rls-policy/rls-policy.diff.js +80 -0
  327. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +52 -0
  328. package/dist/core/objects/rls-policy/rls-policy.model.js +127 -0
  329. package/dist/core/objects/role/changes/role.alter.d.ts +78 -0
  330. package/dist/core/objects/role/changes/role.alter.js +55 -0
  331. package/dist/core/objects/role/changes/role.base.d.ts +17 -0
  332. package/dist/core/objects/role/changes/role.base.js +13 -0
  333. package/dist/core/objects/role/changes/role.comment.d.ts +23 -0
  334. package/dist/core/objects/role/changes/role.comment.js +42 -0
  335. package/dist/core/objects/role/changes/role.create.d.ts +38 -0
  336. package/dist/core/objects/role/changes/role.create.js +83 -0
  337. package/dist/core/objects/role/changes/role.drop.d.ts +22 -0
  338. package/dist/core/objects/role/changes/role.drop.js +28 -0
  339. package/dist/core/objects/role/changes/role.privilege.d.ts +148 -0
  340. package/dist/core/objects/role/changes/role.privilege.js +283 -0
  341. package/dist/core/objects/role/changes/role.types.d.ts +6 -0
  342. package/dist/core/objects/role/changes/role.types.js +1 -0
  343. package/dist/core/objects/role/role.diff.d.ts +13 -0
  344. package/dist/core/objects/role/role.diff.js +386 -0
  345. package/dist/core/objects/role/role.model.d.ts +89 -0
  346. package/dist/core/objects/role/role.model.js +312 -0
  347. package/dist/core/objects/rule/changes/rule.alter.d.ts +22 -0
  348. package/dist/core/objects/rule/changes/rule.alter.js +58 -0
  349. package/dist/core/objects/rule/changes/rule.base.d.ts +17 -0
  350. package/dist/core/objects/rule/changes/rule.base.js +13 -0
  351. package/dist/core/objects/rule/changes/rule.comment.d.ts +22 -0
  352. package/dist/core/objects/rule/changes/rule.comment.js +51 -0
  353. package/dist/core/objects/rule/changes/rule.create.d.ts +14 -0
  354. package/dist/core/objects/rule/changes/rule.create.js +28 -0
  355. package/dist/core/objects/rule/changes/rule.drop.d.ts +12 -0
  356. package/dist/core/objects/rule/changes/rule.drop.js +23 -0
  357. package/dist/core/objects/rule/changes/rule.types.d.ts +5 -0
  358. package/dist/core/objects/rule/changes/rule.types.js +1 -0
  359. package/dist/core/objects/rule/rule.diff.d.ts +3 -0
  360. package/dist/core/objects/rule/rule.diff.js +53 -0
  361. package/dist/core/objects/rule/rule.model.d.ts +72 -0
  362. package/dist/core/objects/rule/rule.model.js +156 -0
  363. package/dist/core/objects/schema/changes/schema.alter.d.ts +32 -0
  364. package/dist/core/objects/schema/changes/schema.alter.js +25 -0
  365. package/dist/core/objects/schema/changes/schema.base.d.ts +17 -0
  366. package/dist/core/objects/schema/changes/schema.base.js +13 -0
  367. package/dist/core/objects/schema/changes/schema.comment.d.ts +23 -0
  368. package/dist/core/objects/schema/changes/schema.comment.js +43 -0
  369. package/dist/core/objects/schema/changes/schema.create.d.ts +27 -0
  370. package/dist/core/objects/schema/changes/schema.create.js +38 -0
  371. package/dist/core/objects/schema/changes/schema.drop.d.ts +22 -0
  372. package/dist/core/objects/schema/changes/schema.drop.js +28 -0
  373. package/dist/core/objects/schema/changes/schema.privilege.d.ts +97 -0
  374. package/dist/core/objects/schema/changes/schema.privilege.js +131 -0
  375. package/dist/core/objects/schema/changes/schema.types.d.ts +6 -0
  376. package/dist/core/objects/schema/changes/schema.types.js +1 -0
  377. package/dist/core/objects/schema/schema.diff.d.ts +18 -0
  378. package/dist/core/objects/schema/schema.diff.js +142 -0
  379. package/dist/core/objects/schema/schema.model.d.ts +47 -0
  380. package/dist/core/objects/schema/schema.model.js +91 -0
  381. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +59 -0
  382. package/dist/core/objects/sequence/changes/sequence.alter.js +75 -0
  383. package/dist/core/objects/sequence/changes/sequence.base.d.ts +17 -0
  384. package/dist/core/objects/sequence/changes/sequence.base.js +13 -0
  385. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +23 -0
  386. package/dist/core/objects/sequence/changes/sequence.comment.js +47 -0
  387. package/dist/core/objects/sequence/changes/sequence.create.d.ts +25 -0
  388. package/dist/core/objects/sequence/changes/sequence.create.js +78 -0
  389. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +22 -0
  390. package/dist/core/objects/sequence/changes/sequence.drop.js +31 -0
  391. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +101 -0
  392. package/dist/core/objects/sequence/changes/sequence.privilege.js +135 -0
  393. package/dist/core/objects/sequence/changes/sequence.types.d.ts +6 -0
  394. package/dist/core/objects/sequence/changes/sequence.types.js +1 -0
  395. package/dist/core/objects/sequence/sequence.diff.d.ts +20 -0
  396. package/dist/core/objects/sequence/sequence.diff.js +258 -0
  397. package/dist/core/objects/sequence/sequence.model.d.ts +76 -0
  398. package/dist/core/objects/sequence/sequence.model.js +169 -0
  399. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +56 -0
  400. package/dist/core/objects/subscription/changes/subscription.alter.js +82 -0
  401. package/dist/core/objects/subscription/changes/subscription.base.d.ts +17 -0
  402. package/dist/core/objects/subscription/changes/subscription.base.js +13 -0
  403. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +23 -0
  404. package/dist/core/objects/subscription/changes/subscription.comment.js +46 -0
  405. package/dist/core/objects/subscription/changes/subscription.create.d.ts +12 -0
  406. package/dist/core/objects/subscription/changes/subscription.create.js +52 -0
  407. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +11 -0
  408. package/dist/core/objects/subscription/changes/subscription.drop.js +15 -0
  409. package/dist/core/objects/subscription/changes/subscription.types.d.ts +5 -0
  410. package/dist/core/objects/subscription/changes/subscription.types.js +1 -0
  411. package/dist/core/objects/subscription/subscription.diff.d.ts +5 -0
  412. package/dist/core/objects/subscription/subscription.diff.js +167 -0
  413. package/dist/core/objects/subscription/subscription.model.d.ts +80 -0
  414. package/dist/core/objects/subscription/subscription.model.js +166 -0
  415. package/dist/core/objects/subscription/utils.d.ts +37 -0
  416. package/dist/core/objects/subscription/utils.js +112 -0
  417. package/dist/core/objects/table/changes/table.alter.d.ts +357 -0
  418. package/dist/core/objects/table/changes/table.alter.js +607 -0
  419. package/dist/core/objects/table/changes/table.base.d.ts +17 -0
  420. package/dist/core/objects/table/changes/table.base.js +13 -0
  421. package/dist/core/objects/table/changes/table.comment.d.ts +106 -0
  422. package/dist/core/objects/table/changes/table.comment.js +175 -0
  423. package/dist/core/objects/table/changes/table.create.d.ts +33 -0
  424. package/dist/core/objects/table/changes/table.create.js +145 -0
  425. package/dist/core/objects/table/changes/table.drop.d.ts +22 -0
  426. package/dist/core/objects/table/changes/table.drop.js +35 -0
  427. package/dist/core/objects/table/changes/table.privilege.d.ts +107 -0
  428. package/dist/core/objects/table/changes/table.privilege.js +150 -0
  429. package/dist/core/objects/table/changes/table.types.d.ts +6 -0
  430. package/dist/core/objects/table/changes/table.types.js +1 -0
  431. package/dist/core/objects/table/table.diff.d.ts +18 -0
  432. package/dist/core/objects/table/table.diff.js +668 -0
  433. package/dist/core/objects/table/table.model.d.ts +341 -0
  434. package/dist/core/objects/table/table.model.js +426 -0
  435. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +29 -0
  436. package/dist/core/objects/trigger/changes/trigger.alter.js +27 -0
  437. package/dist/core/objects/trigger/changes/trigger.base.d.ts +17 -0
  438. package/dist/core/objects/trigger/changes/trigger.base.js +13 -0
  439. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +23 -0
  440. package/dist/core/objects/trigger/changes/trigger.comment.js +51 -0
  441. package/dist/core/objects/trigger/changes/trigger.create.d.ts +41 -0
  442. package/dist/core/objects/trigger/changes/trigger.create.js +61 -0
  443. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +22 -0
  444. package/dist/core/objects/trigger/changes/trigger.drop.js +33 -0
  445. package/dist/core/objects/trigger/changes/trigger.types.d.ts +5 -0
  446. package/dist/core/objects/trigger/changes/trigger.types.js +1 -0
  447. package/dist/core/objects/trigger/trigger.diff.d.ts +11 -0
  448. package/dist/core/objects/trigger/trigger.diff.js +84 -0
  449. package/dist/core/objects/trigger/trigger.model.d.ts +92 -0
  450. package/dist/core/objects/trigger/trigger.model.js +235 -0
  451. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +81 -0
  452. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +123 -0
  453. package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +17 -0
  454. package/dist/core/objects/type/composite-type/changes/composite-type.base.js +13 -0
  455. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +53 -0
  456. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +108 -0
  457. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +23 -0
  458. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +72 -0
  459. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +22 -0
  460. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +31 -0
  461. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +97 -0
  462. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +131 -0
  463. package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +6 -0
  464. package/dist/core/objects/type/composite-type/changes/composite-type.types.js +1 -0
  465. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +18 -0
  466. package/dist/core/objects/type/composite-type/composite-type.diff.js +250 -0
  467. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +148 -0
  468. package/dist/core/objects/type/composite-type/composite-type.model.js +223 -0
  469. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +52 -0
  470. package/dist/core/objects/type/enum/changes/enum.alter.js +60 -0
  471. package/dist/core/objects/type/enum/changes/enum.base.d.ts +17 -0
  472. package/dist/core/objects/type/enum/changes/enum.base.js +13 -0
  473. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +26 -0
  474. package/dist/core/objects/type/enum/changes/enum.comment.js +47 -0
  475. package/dist/core/objects/type/enum/changes/enum.create.d.ts +22 -0
  476. package/dist/core/objects/type/enum/changes/enum.create.js +43 -0
  477. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +22 -0
  478. package/dist/core/objects/type/enum/changes/enum.drop.js +28 -0
  479. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +97 -0
  480. package/dist/core/objects/type/enum/changes/enum.privilege.js +131 -0
  481. package/dist/core/objects/type/enum/changes/enum.types.d.ts +6 -0
  482. package/dist/core/objects/type/enum/changes/enum.types.js +1 -0
  483. package/dist/core/objects/type/enum/enum.diff.d.ts +18 -0
  484. package/dist/core/objects/type/enum/enum.diff.js +268 -0
  485. package/dist/core/objects/type/enum/enum.model.d.ts +66 -0
  486. package/dist/core/objects/type/enum/enum.model.js +154 -0
  487. package/dist/core/objects/type/range/changes/range.alter.d.ts +33 -0
  488. package/dist/core/objects/type/range/changes/range.alter.js +30 -0
  489. package/dist/core/objects/type/range/changes/range.base.d.ts +17 -0
  490. package/dist/core/objects/type/range/changes/range.base.js +13 -0
  491. package/dist/core/objects/type/range/changes/range.comment.d.ts +26 -0
  492. package/dist/core/objects/type/range/changes/range.comment.js +47 -0
  493. package/dist/core/objects/type/range/changes/range.create.d.ts +31 -0
  494. package/dist/core/objects/type/range/changes/range.create.js +113 -0
  495. package/dist/core/objects/type/range/changes/range.drop.d.ts +22 -0
  496. package/dist/core/objects/type/range/changes/range.drop.js +28 -0
  497. package/dist/core/objects/type/range/changes/range.privilege.d.ts +97 -0
  498. package/dist/core/objects/type/range/changes/range.privilege.js +131 -0
  499. package/dist/core/objects/type/range/changes/range.types.d.ts +6 -0
  500. package/dist/core/objects/type/range/changes/range.types.js +1 -0
  501. package/dist/core/objects/type/range/range.diff.d.ts +18 -0
  502. package/dist/core/objects/type/range/range.diff.js +172 -0
  503. package/dist/core/objects/type/range/range.model.d.ts +81 -0
  504. package/dist/core/objects/type/range/range.model.js +165 -0
  505. package/dist/core/objects/type/type.types.d.ts +4 -0
  506. package/dist/core/objects/type/type.types.js +1 -0
  507. package/dist/core/objects/utils.d.ts +57 -0
  508. package/dist/core/objects/utils.js +137 -0
  509. package/dist/core/objects/view/changes/view.alter.d.ts +62 -0
  510. package/dist/core/objects/view/changes/view.alter.js +75 -0
  511. package/dist/core/objects/view/changes/view.base.d.ts +17 -0
  512. package/dist/core/objects/view/changes/view.base.js +13 -0
  513. package/dist/core/objects/view/changes/view.comment.d.ts +23 -0
  514. package/dist/core/objects/view/changes/view.comment.js +46 -0
  515. package/dist/core/objects/view/changes/view.create.d.ts +27 -0
  516. package/dist/core/objects/view/changes/view.create.js +57 -0
  517. package/dist/core/objects/view/changes/view.drop.d.ts +17 -0
  518. package/dist/core/objects/view/changes/view.drop.js +30 -0
  519. package/dist/core/objects/view/changes/view.privilege.d.ts +107 -0
  520. package/dist/core/objects/view/changes/view.privilege.js +150 -0
  521. package/dist/core/objects/view/changes/view.types.d.ts +6 -0
  522. package/dist/core/objects/view/changes/view.types.js +1 -0
  523. package/dist/core/objects/view/view.diff.d.ts +18 -0
  524. package/dist/core/objects/view/view.diff.js +270 -0
  525. package/dist/core/objects/view/view.model.d.ts +152 -0
  526. package/dist/core/objects/view/view.model.js +250 -0
  527. package/dist/core/plan/apply.d.ts +33 -0
  528. package/dist/core/plan/apply.js +112 -0
  529. package/dist/core/plan/create.d.ts +22 -0
  530. package/dist/core/plan/create.js +228 -0
  531. package/dist/core/plan/hierarchy.d.ts +19 -0
  532. package/dist/core/plan/hierarchy.js +488 -0
  533. package/dist/core/plan/index.d.ts +18 -0
  534. package/dist/core/plan/index.js +20 -0
  535. package/dist/core/plan/io.d.ts +12 -0
  536. package/dist/core/plan/io.js +17 -0
  537. package/dist/core/plan/risk.d.ts +10 -0
  538. package/dist/core/plan/risk.js +38 -0
  539. package/dist/core/plan/serialize.d.ts +26 -0
  540. package/dist/core/plan/serialize.js +176 -0
  541. package/dist/core/plan/statements.d.ts +8 -0
  542. package/dist/core/plan/statements.js +13 -0
  543. package/dist/core/plan/types.d.ts +142 -0
  544. package/dist/core/plan/types.js +32 -0
  545. package/dist/core/postgres-config.d.ts +8 -0
  546. package/dist/core/postgres-config.js +46 -0
  547. package/dist/core/sort/custom-constraints.d.ts +9 -0
  548. package/dist/core/sort/custom-constraints.js +133 -0
  549. package/dist/core/sort/debug-visualization.d.ts +8 -0
  550. package/dist/core/sort/debug-visualization.js +145 -0
  551. package/dist/core/sort/dependency-filter.d.ts +19 -0
  552. package/dist/core/sort/dependency-filter.js +152 -0
  553. package/dist/core/sort/graph-builder.d.ts +37 -0
  554. package/dist/core/sort/graph-builder.js +172 -0
  555. package/dist/core/sort/graph-utils.d.ts +14 -0
  556. package/dist/core/sort/graph-utils.js +41 -0
  557. package/dist/core/sort/logical-sort.d.ts +26 -0
  558. package/dist/core/sort/logical-sort.js +532 -0
  559. package/dist/core/sort/sort-changes.d.ts +28 -0
  560. package/dist/core/sort/sort-changes.js +147 -0
  561. package/dist/core/sort/topological-sort.d.ts +20 -0
  562. package/dist/core/sort/topological-sort.js +138 -0
  563. package/dist/core/sort/types.d.ts +102 -0
  564. package/dist/core/sort/types.js +1 -0
  565. package/dist/core/sort/utils.d.ts +23 -0
  566. package/dist/core/sort/utils.js +51 -0
  567. package/dist/index.d.ts +9 -0
  568. package/dist/index.js +8 -0
  569. package/package.json +61 -12
@@ -0,0 +1,131 @@
1
+ import { formatObjectPrivilegeList, getObjectKindPrefix, } from "../../base.privilege.js";
2
+ import { stableId } from "../../utils.js";
3
+ import { AlterSchemaChange } from "./schema.base.js";
4
+ /**
5
+ * Grant privileges on a schema.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-grant.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
12
+ * ON SCHEMA schema_name [, ...]
13
+ * TO role_specification [, ...] [ WITH GRANT OPTION ]
14
+ * [ GRANTED BY role_specification ]
15
+ * ```
16
+ */
17
+ export class GrantSchemaPrivileges extends AlterSchemaChange {
18
+ schema;
19
+ grantee;
20
+ privileges;
21
+ version;
22
+ scope = "privilege";
23
+ constructor(props) {
24
+ super();
25
+ this.schema = props.schema;
26
+ this.grantee = props.grantee;
27
+ this.privileges = props.privileges;
28
+ this.version = props.version;
29
+ }
30
+ get creates() {
31
+ return [stableId.acl(this.schema.stableId, this.grantee)];
32
+ }
33
+ get requires() {
34
+ return [this.schema.stableId, stableId.role(this.grantee)];
35
+ }
36
+ serialize() {
37
+ const hasGrantable = this.privileges.some((p) => p.grantable);
38
+ const hasBase = this.privileges.some((p) => !p.grantable);
39
+ if (hasGrantable && hasBase) {
40
+ throw new Error("GrantSchemaPrivileges expects privileges with uniform grantable flag");
41
+ }
42
+ const withGrant = hasGrantable ? " WITH GRANT OPTION" : "";
43
+ const kindPrefix = getObjectKindPrefix("SCHEMA");
44
+ const list = this.privileges.map((p) => p.privilege);
45
+ const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
46
+ const schemaName = this.schema.name;
47
+ return `GRANT ${privSql} ${kindPrefix} ${schemaName} TO ${this.grantee}${withGrant}`;
48
+ }
49
+ }
50
+ /**
51
+ * Revoke privileges on a schema.
52
+ *
53
+ * @see https://www.postgresql.org/docs/17/sql-revoke.html
54
+ *
55
+ * Synopsis
56
+ * ```sql
57
+ * REVOKE [ GRANT OPTION FOR ]
58
+ * { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
59
+ * ON SCHEMA schema_name [, ...]
60
+ * FROM role_specification [, ...]
61
+ * [ GRANTED BY role_specification ]
62
+ * [ CASCADE | RESTRICT ]
63
+ * ```
64
+ */
65
+ export class RevokeSchemaPrivileges extends AlterSchemaChange {
66
+ schema;
67
+ grantee;
68
+ privileges;
69
+ version;
70
+ scope = "privilege";
71
+ constructor(props) {
72
+ super();
73
+ this.schema = props.schema;
74
+ this.grantee = props.grantee;
75
+ this.privileges = props.privileges;
76
+ this.version = props.version;
77
+ }
78
+ get drops() {
79
+ // Return ACL ID for dependency tracking, even though this is an ALTER operation
80
+ // Phase assignment now uses operation type, so this won't affect phase placement
81
+ return [stableId.acl(this.schema.stableId, this.grantee)];
82
+ }
83
+ get requires() {
84
+ return [
85
+ stableId.acl(this.schema.stableId, this.grantee),
86
+ this.schema.stableId,
87
+ stableId.role(this.grantee),
88
+ ];
89
+ }
90
+ serialize() {
91
+ const kindPrefix = getObjectKindPrefix("SCHEMA");
92
+ const list = this.privileges.map((p) => p.privilege);
93
+ const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
94
+ const schemaName = this.schema.name;
95
+ return `REVOKE ${privSql} ${kindPrefix} ${schemaName} FROM ${this.grantee}`;
96
+ }
97
+ }
98
+ /**
99
+ * Revoke grant option for privileges on a schema.
100
+ *
101
+ * This removes the ability to grant the privilege to others, but keeps the privilege itself.
102
+ *
103
+ * @see https://www.postgresql.org/docs/17/sql-revoke.html
104
+ */
105
+ export class RevokeGrantOptionSchemaPrivileges extends AlterSchemaChange {
106
+ schema;
107
+ grantee;
108
+ privilegeNames;
109
+ version;
110
+ scope = "privilege";
111
+ constructor(props) {
112
+ super();
113
+ this.schema = props.schema;
114
+ this.grantee = props.grantee;
115
+ this.privilegeNames = [...new Set(props.privilegeNames)].sort();
116
+ this.version = props.version;
117
+ }
118
+ get requires() {
119
+ return [
120
+ stableId.acl(this.schema.stableId, this.grantee),
121
+ this.schema.stableId,
122
+ stableId.role(this.grantee),
123
+ ];
124
+ }
125
+ serialize() {
126
+ const kindPrefix = getObjectKindPrefix("SCHEMA");
127
+ const privSql = formatObjectPrivilegeList("SCHEMA", this.privilegeNames, this.version);
128
+ const schemaName = this.schema.name;
129
+ return `REVOKE GRANT OPTION FOR ${privSql} ${kindPrefix} ${schemaName} FROM ${this.grantee}`;
130
+ }
131
+ }
@@ -0,0 +1,6 @@
1
+ import type { AlterSchema } from "./schema.alter.ts";
2
+ import type { CommentSchema } from "./schema.comment.ts";
3
+ import type { CreateSchema } from "./schema.create.ts";
4
+ import type { DropSchema } from "./schema.drop.ts";
5
+ import type { SchemaPrivilege } from "./schema.privilege.ts";
6
+ export type SchemaChange = AlterSchema | CommentSchema | CreateSchema | DropSchema | SchemaPrivilege;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { DefaultPrivilegeState } from "../base.default-privileges.ts";
2
+ import type { Role } from "../role/role.model.ts";
3
+ import type { SchemaChange } from "./changes/schema.types.ts";
4
+ import type { Schema } from "./schema.model.ts";
5
+ /**
6
+ * Diff two sets of schemas from main and branch catalogs.
7
+ *
8
+ * @param ctx - Context containing version, currentUser, and defaultPrivilegeState
9
+ * @param main - The schemas in the main catalog.
10
+ * @param branch - The schemas in the branch catalog.
11
+ * @returns A list of changes to apply to main to make it match branch.
12
+ */
13
+ export declare function diffSchemas(ctx: {
14
+ version: number;
15
+ currentUser: string;
16
+ defaultPrivilegeState: DefaultPrivilegeState;
17
+ mainRoles: Record<string, Role>;
18
+ }, main: Record<string, Schema>, branch: Record<string, Schema>): SchemaChange[];
@@ -0,0 +1,142 @@
1
+ import { diffObjects } from "../base.diff.js";
2
+ import { diffPrivileges, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
3
+ import { AlterSchemaChangeOwner } from "./changes/schema.alter.js";
4
+ import { CreateCommentOnSchema, DropCommentOnSchema, } from "./changes/schema.comment.js";
5
+ import { CreateSchema } from "./changes/schema.create.js";
6
+ import { DropSchema } from "./changes/schema.drop.js";
7
+ import { GrantSchemaPrivileges, RevokeGrantOptionSchemaPrivileges, RevokeSchemaPrivileges, } from "./changes/schema.privilege.js";
8
+ /**
9
+ * Diff two sets of schemas from main and branch catalogs.
10
+ *
11
+ * @param ctx - Context containing version, currentUser, and defaultPrivilegeState
12
+ * @param main - The schemas in the main catalog.
13
+ * @param branch - The schemas in the branch catalog.
14
+ * @returns A list of changes to apply to main to make it match branch.
15
+ */
16
+ export function diffSchemas(ctx, main, branch) {
17
+ const { created, dropped, altered } = diffObjects(main, branch);
18
+ const changes = [];
19
+ for (const schemaId of created) {
20
+ const sc = branch[schemaId];
21
+ changes.push(new CreateSchema({ schema: sc }));
22
+ if (sc.comment !== null) {
23
+ changes.push(new CreateCommentOnSchema({ schema: sc }));
24
+ }
25
+ // PRIVILEGES: For created objects, compare against default privileges state
26
+ // The migration script will run ALTER DEFAULT PRIVILEGES before CREATE (via constraint spec),
27
+ // so objects are created with the default privileges state in effect.
28
+ // We compare default privileges against desired privileges to generate REVOKE/GRANT statements
29
+ // needed to reach the final desired state.
30
+ // Note: Schemas don't have a schema property, so we pass empty string
31
+ const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "schema", "");
32
+ const desiredPrivileges = sc.privileges;
33
+ // Filter out owner privileges - owner always has ALL privileges implicitly
34
+ // and shouldn't be compared. Use the schema owner as the reference.
35
+ const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, sc.owner, ctx.mainRoles);
36
+ // Generate grant changes
37
+ for (const [grantee, result] of privilegeResults) {
38
+ if (result.grants.length > 0) {
39
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
40
+ for (const [grantable, list] of grantGroups) {
41
+ void grantable;
42
+ changes.push(new GrantSchemaPrivileges({
43
+ schema: sc,
44
+ grantee,
45
+ privileges: list,
46
+ version: ctx.version,
47
+ }));
48
+ }
49
+ }
50
+ // Generate revoke changes
51
+ if (result.revokes.length > 0) {
52
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
53
+ for (const [grantable, list] of revokeGroups) {
54
+ void grantable;
55
+ changes.push(new RevokeSchemaPrivileges({
56
+ schema: sc,
57
+ grantee,
58
+ privileges: list,
59
+ version: ctx.version,
60
+ }));
61
+ }
62
+ }
63
+ // Generate revoke grant option changes
64
+ if (result.revokeGrantOption.length > 0) {
65
+ changes.push(new RevokeGrantOptionSchemaPrivileges({
66
+ schema: sc,
67
+ grantee,
68
+ privilegeNames: result.revokeGrantOption,
69
+ version: ctx.version,
70
+ }));
71
+ }
72
+ }
73
+ }
74
+ for (const schemaId of dropped) {
75
+ changes.push(new DropSchema({ schema: main[schemaId] }));
76
+ }
77
+ for (const schemaId of altered) {
78
+ const mainSchema = main[schemaId];
79
+ const branchSchema = branch[schemaId];
80
+ // OWNER
81
+ if (mainSchema.owner !== branchSchema.owner) {
82
+ changes.push(new AlterSchemaChangeOwner({
83
+ schema: mainSchema,
84
+ owner: branchSchema.owner,
85
+ }));
86
+ }
87
+ // COMMENT
88
+ if (mainSchema.comment !== branchSchema.comment) {
89
+ if (branchSchema.comment === null) {
90
+ changes.push(new DropCommentOnSchema({ schema: mainSchema }));
91
+ }
92
+ else {
93
+ changes.push(new CreateCommentOnSchema({ schema: branchSchema }));
94
+ }
95
+ }
96
+ // PRIVILEGES
97
+ // Filter out owner privileges - owner always has ALL privileges implicitly
98
+ // and shouldn't be compared. Use branch owner as the reference.
99
+ const privilegeResults = diffPrivileges(mainSchema.privileges, branchSchema.privileges, branchSchema.owner, ctx.mainRoles);
100
+ for (const [grantee, result] of privilegeResults) {
101
+ // Generate grant changes
102
+ if (result.grants.length > 0) {
103
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
104
+ for (const [grantable, list] of grantGroups) {
105
+ void grantable;
106
+ changes.push(new GrantSchemaPrivileges({
107
+ schema: branchSchema,
108
+ grantee,
109
+ privileges: list,
110
+ version: ctx.version,
111
+ }));
112
+ }
113
+ }
114
+ // Generate revoke changes
115
+ if (result.revokes.length > 0) {
116
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
117
+ for (const [grantable, list] of revokeGroups) {
118
+ void grantable;
119
+ changes.push(new RevokeSchemaPrivileges({
120
+ schema: mainSchema,
121
+ grantee,
122
+ privileges: list,
123
+ version: ctx.version,
124
+ }));
125
+ }
126
+ }
127
+ // Generate revoke grant option changes
128
+ if (result.revokeGrantOption.length > 0) {
129
+ changes.push(new RevokeGrantOptionSchemaPrivileges({
130
+ schema: mainSchema,
131
+ grantee,
132
+ privilegeNames: result.revokeGrantOption,
133
+ version: ctx.version,
134
+ }));
135
+ }
136
+ }
137
+ // Note: Schema renaming would also use ALTER SCHEMA ... RENAME TO ...
138
+ // But since our Schema model uses 'schema' as the identity field,
139
+ // a name change would be handled as drop + create by diffObjects()
140
+ }
141
+ return changes;
142
+ }
@@ -0,0 +1,47 @@
1
+ import type { Sql } from "postgres";
2
+ import z from "zod";
3
+ import { BasePgModel } from "../base.model.ts";
4
+ import { type PrivilegeProps } from "../base.privilege-diff.ts";
5
+ /**
6
+ * All properties exposed by CREATE SCHEMA statement are included in diff output.
7
+ * https://www.postgresql.org/docs/current/sql-createschema.html
8
+ *
9
+ * ALTER SCHEMA statement can be generated for all properties.
10
+ * https://www.postgresql.org/docs/current/sql-alterschema.html
11
+ */
12
+ declare const schemaPropsSchema: z.ZodObject<{
13
+ name: z.ZodString;
14
+ owner: z.ZodString;
15
+ comment: z.ZodNullable<z.ZodString>;
16
+ privileges: z.ZodArray<z.ZodObject<{
17
+ grantee: z.ZodString;
18
+ privilege: z.ZodString;
19
+ grantable: z.ZodBoolean;
20
+ columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
21
+ }, z.z.core.$strip>>;
22
+ }, z.z.core.$strip>;
23
+ type SchemaPrivilegeProps = PrivilegeProps;
24
+ export type SchemaProps = z.infer<typeof schemaPropsSchema>;
25
+ export declare class Schema extends BasePgModel {
26
+ readonly name: SchemaProps["name"];
27
+ readonly owner: SchemaProps["owner"];
28
+ readonly comment: SchemaProps["comment"];
29
+ readonly privileges: SchemaPrivilegeProps[];
30
+ constructor(props: SchemaProps);
31
+ get stableId(): `schema:${string}`;
32
+ get identityFields(): {
33
+ name: string;
34
+ };
35
+ get dataFields(): {
36
+ owner: string;
37
+ comment: string | null;
38
+ privileges: {
39
+ grantee: string;
40
+ privilege: string;
41
+ grantable: boolean;
42
+ columns?: string[] | null | undefined;
43
+ }[];
44
+ };
45
+ }
46
+ export declare function extractSchemas(sql: Sql): Promise<Schema[]>;
47
+ export {};
@@ -0,0 +1,91 @@
1
+ import z from "zod";
2
+ import { BasePgModel } from "../base.model.js";
3
+ import { privilegePropsSchema, } from "../base.privilege-diff.js";
4
+ /**
5
+ * All properties exposed by CREATE SCHEMA statement are included in diff output.
6
+ * https://www.postgresql.org/docs/current/sql-createschema.html
7
+ *
8
+ * ALTER SCHEMA statement can be generated for all properties.
9
+ * https://www.postgresql.org/docs/current/sql-alterschema.html
10
+ */
11
+ const schemaPropsSchema = z.object({
12
+ name: z.string(),
13
+ owner: z.string(),
14
+ comment: z.string().nullable(),
15
+ privileges: z.array(privilegePropsSchema),
16
+ });
17
+ export class Schema extends BasePgModel {
18
+ name;
19
+ owner;
20
+ comment;
21
+ privileges;
22
+ constructor(props) {
23
+ super();
24
+ // Identity fields
25
+ this.name = props.name;
26
+ // Data fields
27
+ this.owner = props.owner;
28
+ this.comment = props.comment;
29
+ this.privileges = props.privileges;
30
+ }
31
+ get stableId() {
32
+ return `schema:${this.name}`;
33
+ }
34
+ get identityFields() {
35
+ return {
36
+ name: this.name,
37
+ };
38
+ }
39
+ get dataFields() {
40
+ return {
41
+ owner: this.owner,
42
+ comment: this.comment,
43
+ privileges: this.privileges,
44
+ };
45
+ }
46
+ }
47
+ export async function extractSchemas(sql) {
48
+ return sql.begin(async (sql) => {
49
+ await sql `set search_path = ''`;
50
+ const schemaRows = await sql `
51
+ with extension_oids as (
52
+ select
53
+ objid
54
+ from
55
+ pg_depend d
56
+ where
57
+ d.refclassid = 'pg_extension'::regclass
58
+ and d.classid = 'pg_namespace'::regclass
59
+ )
60
+ select
61
+ quote_ident(nspname) as name,
62
+ nspowner::regrole::text as owner,
63
+ obj_description(oid, 'pg_namespace') as comment,
64
+ coalesce(
65
+ (
66
+ select json_agg(
67
+ json_build_object(
68
+ 'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
69
+ 'privilege', x.privilege_type,
70
+ 'grantable', x.is_grantable
71
+ )
72
+ order by x.grantee, x.privilege_type
73
+ )
74
+ from lateral aclexplode(nspacl) as x(grantor, grantee, privilege_type, is_grantable)
75
+ ), '[]'
76
+ ) as privileges
77
+ from
78
+ pg_catalog.pg_namespace
79
+ left outer join extension_oids e on e.objid = oid
80
+ -- <EXCLUDE_INTERNAL>
81
+ where not nspname like any(array['pg\\_%', 'information\\_schema'])
82
+ and e.objid is null
83
+ -- </EXCLUDE_INTERNAL>
84
+ order by
85
+ 1;
86
+ `;
87
+ // Validate and parse each row using the Zod schema
88
+ const validatedRows = schemaRows.map((row) => schemaPropsSchema.parse(row));
89
+ return validatedRows.map((row) => new Schema(row));
90
+ });
91
+ }
@@ -0,0 +1,59 @@
1
+ import type { Sequence } from "../sequence.model.ts";
2
+ import { AlterSequenceChange } from "./sequence.base.ts";
3
+ /**
4
+ * Alter a sequence.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-altersequence.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]
11
+ * [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
12
+ * [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ]
13
+ * [ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table_name.column_name | NONE } ]
14
+ * ```
15
+ */
16
+ export type AlterSequence = AlterSequenceSetOptions | AlterSequenceSetOwnedBy;
17
+ /**
18
+ * ALTER SEQUENCE ... OWNED BY ... | OWNED BY NONE
19
+ */
20
+ export declare class AlterSequenceSetOwnedBy extends AlterSequenceChange {
21
+ readonly sequence: Sequence;
22
+ readonly ownedBy: {
23
+ schema: string;
24
+ table: string;
25
+ column: string;
26
+ } | null;
27
+ readonly scope: "object";
28
+ constructor(props: {
29
+ sequence: Sequence;
30
+ ownedBy: {
31
+ schema: string;
32
+ table: string;
33
+ column: string;
34
+ } | null;
35
+ });
36
+ get creates(): never[];
37
+ get requires(): (`column:${string}.${string}.${string}` | `sequence:${string}`)[];
38
+ serialize(): string;
39
+ }
40
+ /**
41
+ * ALTER SEQUENCE ... set options ...
42
+ * Emits only changed options, in a stable order.
43
+ */
44
+ export declare class AlterSequenceSetOptions extends AlterSequenceChange {
45
+ readonly sequence: Sequence;
46
+ readonly options: string[];
47
+ readonly scope: "object";
48
+ constructor(props: {
49
+ sequence: Sequence;
50
+ options: string[];
51
+ });
52
+ get creates(): never[];
53
+ get requires(): `sequence:${string}`[];
54
+ serialize(): string;
55
+ }
56
+ /**
57
+ * Replace a sequence by dropping and recreating it.
58
+ * This is used when properties that cannot be altered via ALTER SEQUENCE change.
59
+ */
@@ -0,0 +1,75 @@
1
+ import { stableId } from "../../utils.js";
2
+ import { AlterSequenceChange } from "./sequence.base.js";
3
+ /**
4
+ * ALTER SEQUENCE ... OWNED BY ... | OWNED BY NONE
5
+ */
6
+ export class AlterSequenceSetOwnedBy extends AlterSequenceChange {
7
+ sequence;
8
+ ownedBy;
9
+ scope = "object";
10
+ constructor(props) {
11
+ super();
12
+ this.sequence = props.sequence;
13
+ this.ownedBy = props.ownedBy;
14
+ }
15
+ get creates() {
16
+ return [];
17
+ }
18
+ get requires() {
19
+ return [
20
+ this.sequence.stableId,
21
+ ...(this.ownedBy
22
+ ? [
23
+ stableId.column(this.ownedBy.schema, this.ownedBy.table, this.ownedBy.column),
24
+ ]
25
+ : []),
26
+ ];
27
+ }
28
+ serialize() {
29
+ const head = [
30
+ "ALTER SEQUENCE",
31
+ `${this.sequence.schema}.${this.sequence.name}`,
32
+ ];
33
+ if (this.ownedBy) {
34
+ return [
35
+ ...head,
36
+ "OWNED BY",
37
+ `${this.ownedBy.schema}.${this.ownedBy.table}.${this.ownedBy.column}`,
38
+ ].join(" ");
39
+ }
40
+ return [...head, "OWNED BY NONE"].join(" ");
41
+ }
42
+ }
43
+ /**
44
+ * ALTER SEQUENCE ... set options ...
45
+ * Emits only changed options, in a stable order.
46
+ */
47
+ export class AlterSequenceSetOptions extends AlterSequenceChange {
48
+ sequence;
49
+ options;
50
+ scope = "object";
51
+ constructor(props) {
52
+ super();
53
+ this.sequence = props.sequence;
54
+ this.options = props.options;
55
+ }
56
+ get creates() {
57
+ return [];
58
+ }
59
+ get requires() {
60
+ return [this.sequence.stableId];
61
+ }
62
+ // Note: default max computation moved to diff when building options
63
+ serialize() {
64
+ const parts = [
65
+ "ALTER SEQUENCE",
66
+ `${this.sequence.schema}.${this.sequence.name}`,
67
+ ];
68
+ return [...parts, ...this.options].join(" ");
69
+ }
70
+ }
71
+ /**
72
+ * Replace a sequence by dropping and recreating it.
73
+ * This is used when properties that cannot be altered via ALTER SEQUENCE change.
74
+ */
75
+ // NOTE: ReplaceSequence removed. Non-alterable changes are emitted as Drop + Create in sequence.diff.ts.
@@ -0,0 +1,17 @@
1
+ import { BaseChange } from "../../base.change.ts";
2
+ import type { Sequence } from "../sequence.model.ts";
3
+ declare abstract class BaseSequenceChange extends BaseChange {
4
+ abstract readonly sequence: Sequence;
5
+ abstract readonly scope: "object" | "comment" | "privilege";
6
+ readonly objectType: "sequence";
7
+ }
8
+ export declare abstract class CreateSequenceChange extends BaseSequenceChange {
9
+ readonly operation: "create";
10
+ }
11
+ export declare abstract class AlterSequenceChange extends BaseSequenceChange {
12
+ readonly operation: "alter";
13
+ }
14
+ export declare abstract class DropSequenceChange extends BaseSequenceChange {
15
+ readonly operation: "drop";
16
+ }
17
+ export {};
@@ -0,0 +1,13 @@
1
+ import { BaseChange } from "../../base.change.js";
2
+ class BaseSequenceChange extends BaseChange {
3
+ objectType = "sequence";
4
+ }
5
+ export class CreateSequenceChange extends BaseSequenceChange {
6
+ operation = "create";
7
+ }
8
+ export class AlterSequenceChange extends BaseSequenceChange {
9
+ operation = "alter";
10
+ }
11
+ export class DropSequenceChange extends BaseSequenceChange {
12
+ operation = "drop";
13
+ }
@@ -0,0 +1,23 @@
1
+ import type { Sequence } from "../sequence.model.ts";
2
+ import { CreateSequenceChange, DropSequenceChange } from "./sequence.base.ts";
3
+ export type CommentSequence = CreateCommentOnSequence | DropCommentOnSequence;
4
+ export declare class CreateCommentOnSequence extends CreateSequenceChange {
5
+ readonly sequence: Sequence;
6
+ readonly scope: "comment";
7
+ constructor(props: {
8
+ sequence: Sequence;
9
+ });
10
+ get creates(): `comment:${string}`[];
11
+ get requires(): `sequence:${string}`[];
12
+ serialize(): string;
13
+ }
14
+ export declare class DropCommentOnSequence extends DropSequenceChange {
15
+ readonly sequence: Sequence;
16
+ readonly scope: "comment";
17
+ constructor(props: {
18
+ sequence: Sequence;
19
+ });
20
+ get drops(): `comment:${string}`[];
21
+ get requires(): (`comment:${string}` | `sequence:${string}`)[];
22
+ serialize(): string;
23
+ }
@@ -0,0 +1,47 @@
1
+ import { quoteLiteral } from "../../base.change.js";
2
+ import { stableId } from "../../utils.js";
3
+ import { CreateSequenceChange, DropSequenceChange } from "./sequence.base.js";
4
+ export class CreateCommentOnSequence extends CreateSequenceChange {
5
+ sequence;
6
+ scope = "comment";
7
+ constructor(props) {
8
+ super();
9
+ this.sequence = props.sequence;
10
+ }
11
+ get creates() {
12
+ return [stableId.comment(this.sequence.stableId)];
13
+ }
14
+ get requires() {
15
+ return [this.sequence.stableId];
16
+ }
17
+ serialize() {
18
+ return [
19
+ "COMMENT ON SEQUENCE",
20
+ `${this.sequence.schema}.${this.sequence.name}`,
21
+ "IS",
22
+ // biome-ignore lint/style/noNonNullAssertion: sequence comment is not nullable in this case
23
+ quoteLiteral(this.sequence.comment),
24
+ ].join(" ");
25
+ }
26
+ }
27
+ export class DropCommentOnSequence extends DropSequenceChange {
28
+ sequence;
29
+ scope = "comment";
30
+ constructor(props) {
31
+ super();
32
+ this.sequence = props.sequence;
33
+ }
34
+ get drops() {
35
+ return [stableId.comment(this.sequence.stableId)];
36
+ }
37
+ get requires() {
38
+ return [stableId.comment(this.sequence.stableId), this.sequence.stableId];
39
+ }
40
+ serialize() {
41
+ return [
42
+ "COMMENT ON SEQUENCE",
43
+ `${this.sequence.schema}.${this.sequence.name}`,
44
+ "IS NULL",
45
+ ].join(" ");
46
+ }
47
+ }