@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.
Files changed (567) 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 +13 -0
  22. package/dist/cli/utils/integrations.js +35 -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 +23 -0
  38. package/dist/core/fingerprint.js +174 -0
  39. package/dist/core/index.d.ts +15 -0
  40. package/dist/core/index.js +14 -0
  41. package/dist/core/integrations/filter/dsl.d.ts +97 -0
  42. package/dist/core/integrations/filter/dsl.js +107 -0
  43. package/dist/core/integrations/filter/extractors.d.ts +12 -0
  44. package/dist/core/integrations/filter/extractors.js +136 -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 +5 -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/main.d.ts +5 -0
  52. package/dist/core/main.js +44 -0
  53. package/dist/core/objects/aggregate/aggregate.diff.d.ts +10 -0
  54. package/dist/core/objects/aggregate/aggregate.diff.js +186 -0
  55. package/dist/core/objects/aggregate/aggregate.model.d.ts +174 -0
  56. package/dist/core/objects/aggregate/aggregate.model.js +297 -0
  57. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +19 -0
  58. package/dist/core/objects/aggregate/changes/aggregate.alter.js +25 -0
  59. package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +17 -0
  60. package/dist/core/objects/aggregate/changes/aggregate.base.js +13 -0
  61. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +23 -0
  62. package/dist/core/objects/aggregate/changes/aggregate.comment.js +44 -0
  63. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +19 -0
  64. package/dist/core/objects/aggregate/changes/aggregate.create.js +228 -0
  65. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +17 -0
  66. package/dist/core/objects/aggregate/changes/aggregate.drop.js +26 -0
  67. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +62 -0
  68. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +102 -0
  69. package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +6 -0
  70. package/dist/core/objects/aggregate/changes/aggregate.types.js +1 -0
  71. package/dist/core/objects/base.change.d.ts +46 -0
  72. package/dist/core/objects/base.change.js +38 -0
  73. package/dist/core/objects/base.default-privileges.d.ts +29 -0
  74. package/dist/core/objects/base.default-privileges.js +167 -0
  75. package/dist/core/objects/base.diff.d.ts +6 -0
  76. package/dist/core/objects/base.diff.js +12 -0
  77. package/dist/core/objects/base.model.d.ts +74 -0
  78. package/dist/core/objects/base.model.js +47 -0
  79. package/dist/core/objects/base.privilege-diff.d.ts +54 -0
  80. package/dist/core/objects/base.privilege-diff.js +216 -0
  81. package/dist/core/objects/base.privilege.d.ts +27 -0
  82. package/dist/core/objects/base.privilege.js +169 -0
  83. package/dist/core/objects/collation/changes/collation.alter.d.ts +45 -0
  84. package/dist/core/objects/collation/changes/collation.alter.js +52 -0
  85. package/dist/core/objects/collation/changes/collation.base.d.ts +17 -0
  86. package/dist/core/objects/collation/changes/collation.base.js +13 -0
  87. package/dist/core/objects/collation/changes/collation.comment.d.ts +26 -0
  88. package/dist/core/objects/collation/changes/collation.comment.js +50 -0
  89. package/dist/core/objects/collation/changes/collation.create.d.ts +32 -0
  90. package/dist/core/objects/collation/changes/collation.create.js +86 -0
  91. package/dist/core/objects/collation/changes/collation.drop.d.ts +22 -0
  92. package/dist/core/objects/collation/changes/collation.drop.js +31 -0
  93. package/dist/core/objects/collation/changes/collation.types.d.ts +5 -0
  94. package/dist/core/objects/collation/changes/collation.types.js +1 -0
  95. package/dist/core/objects/collation/collation.diff.d.ts +13 -0
  96. package/dist/core/objects/collation/collation.diff.js +85 -0
  97. package/dist/core/objects/collation/collation.model.d.ts +67 -0
  98. package/dist/core/objects/collation/collation.model.js +207 -0
  99. package/dist/core/objects/domain/changes/domain.alter.d.ts +143 -0
  100. package/dist/core/objects/domain/changes/domain.alter.js +191 -0
  101. package/dist/core/objects/domain/changes/domain.base.d.ts +17 -0
  102. package/dist/core/objects/domain/changes/domain.base.js +13 -0
  103. package/dist/core/objects/domain/changes/domain.comment.d.ts +25 -0
  104. package/dist/core/objects/domain/changes/domain.comment.js +47 -0
  105. package/dist/core/objects/domain/changes/domain.create.d.ts +30 -0
  106. package/dist/core/objects/domain/changes/domain.create.js +92 -0
  107. package/dist/core/objects/domain/changes/domain.drop.d.ts +22 -0
  108. package/dist/core/objects/domain/changes/domain.drop.js +28 -0
  109. package/dist/core/objects/domain/changes/domain.privilege.d.ts +97 -0
  110. package/dist/core/objects/domain/changes/domain.privilege.js +127 -0
  111. package/dist/core/objects/domain/changes/domain.types.d.ts +6 -0
  112. package/dist/core/objects/domain/changes/domain.types.js +1 -0
  113. package/dist/core/objects/domain/domain.diff.d.ts +18 -0
  114. package/dist/core/objects/domain/domain.diff.js +244 -0
  115. package/dist/core/objects/domain/domain.model.d.ts +103 -0
  116. package/dist/core/objects/domain/domain.model.js +172 -0
  117. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +44 -0
  118. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +51 -0
  119. package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +17 -0
  120. package/dist/core/objects/event-trigger/changes/event-trigger.base.js +13 -0
  121. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +23 -0
  122. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +46 -0
  123. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +25 -0
  124. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +55 -0
  125. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +22 -0
  126. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +28 -0
  127. package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +5 -0
  128. package/dist/core/objects/event-trigger/changes/event-trigger.types.js +1 -0
  129. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +13 -0
  130. package/dist/core/objects/event-trigger/event-trigger.diff.js +81 -0
  131. package/dist/core/objects/event-trigger/event-trigger.model.d.ts +45 -0
  132. package/dist/core/objects/event-trigger/event-trigger.model.js +89 -0
  133. package/dist/core/objects/extension/changes/extension.alter.d.ts +44 -0
  134. package/dist/core/objects/extension/changes/extension.alter.js +51 -0
  135. package/dist/core/objects/extension/changes/extension.base.d.ts +17 -0
  136. package/dist/core/objects/extension/changes/extension.base.js +13 -0
  137. package/dist/core/objects/extension/changes/extension.comment.d.ts +26 -0
  138. package/dist/core/objects/extension/changes/extension.comment.js +46 -0
  139. package/dist/core/objects/extension/changes/extension.create.d.ts +25 -0
  140. package/dist/core/objects/extension/changes/extension.create.js +49 -0
  141. package/dist/core/objects/extension/changes/extension.drop.d.ts +22 -0
  142. package/dist/core/objects/extension/changes/extension.drop.js +28 -0
  143. package/dist/core/objects/extension/changes/extension.types.d.ts +5 -0
  144. package/dist/core/objects/extension/changes/extension.types.js +1 -0
  145. package/dist/core/objects/extension/extension.diff.d.ts +10 -0
  146. package/dist/core/objects/extension/extension.diff.js +65 -0
  147. package/dist/core/objects/extension/extension.model.d.ts +52 -0
  148. package/dist/core/objects/extension/extension.model.js +268 -0
  149. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +51 -0
  150. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +61 -0
  151. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.d.ts +17 -0
  152. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.js +13 -0
  153. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +26 -0
  154. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +50 -0
  155. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +25 -0
  156. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +78 -0
  157. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +22 -0
  158. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +28 -0
  159. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +97 -0
  160. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +123 -0
  161. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +6 -0
  162. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.js +1 -0
  163. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +18 -0
  164. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +221 -0
  165. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +59 -0
  166. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +128 -0
  167. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +5 -0
  168. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.js +1 -0
  169. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +163 -0
  170. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +248 -0
  171. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +17 -0
  172. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.js +13 -0
  173. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +26 -0
  174. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +50 -0
  175. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +25 -0
  176. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +64 -0
  177. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +22 -0
  178. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +31 -0
  179. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +97 -0
  180. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +129 -0
  181. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +6 -0
  182. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.js +1 -0
  183. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +18 -0
  184. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +268 -0
  185. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +117 -0
  186. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +215 -0
  187. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +65 -0
  188. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +84 -0
  189. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.d.ts +17 -0
  190. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.js +13 -0
  191. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +26 -0
  192. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +43 -0
  193. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +24 -0
  194. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +62 -0
  195. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +22 -0
  196. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +28 -0
  197. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +97 -0
  198. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +123 -0
  199. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +6 -0
  200. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.js +1 -0
  201. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +18 -0
  202. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +209 -0
  203. package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +62 -0
  204. package/dist/core/objects/foreign-data-wrapper/server/server.model.js +118 -0
  205. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +37 -0
  206. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +38 -0
  207. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.d.ts +17 -0
  208. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.js +13 -0
  209. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +24 -0
  210. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +52 -0
  211. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +23 -0
  212. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +34 -0
  213. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +4 -0
  214. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.js +1 -0
  215. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.d.ts +10 -0
  216. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.js +77 -0
  217. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +36 -0
  218. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +85 -0
  219. package/dist/core/objects/index/changes/index.alter.d.ts +76 -0
  220. package/dist/core/objects/index/changes/index.alter.js +94 -0
  221. package/dist/core/objects/index/changes/index.base.d.ts +17 -0
  222. package/dist/core/objects/index/changes/index.base.js +13 -0
  223. package/dist/core/objects/index/changes/index.comment.d.ts +26 -0
  224. package/dist/core/objects/index/changes/index.comment.js +50 -0
  225. package/dist/core/objects/index/changes/index.create.d.ts +30 -0
  226. package/dist/core/objects/index/changes/index.create.js +53 -0
  227. package/dist/core/objects/index/changes/index.drop.d.ts +22 -0
  228. package/dist/core/objects/index/changes/index.drop.js +28 -0
  229. package/dist/core/objects/index/changes/index.types.d.ts +5 -0
  230. package/dist/core/objects/index/changes/index.types.js +1 -0
  231. package/dist/core/objects/index/changes/utils.d.ts +3 -0
  232. package/dist/core/objects/index/changes/utils.js +6 -0
  233. package/dist/core/objects/index/index.diff.d.ts +12 -0
  234. package/dist/core/objects/index/index.diff.js +182 -0
  235. package/dist/core/objects/index/index.model.d.ts +150 -0
  236. package/dist/core/objects/index/index.model.js +340 -0
  237. package/dist/core/objects/language/changes/language.alter.d.ts +32 -0
  238. package/dist/core/objects/language/changes/language.alter.js +30 -0
  239. package/dist/core/objects/language/changes/language.base.d.ts +17 -0
  240. package/dist/core/objects/language/changes/language.base.js +13 -0
  241. package/dist/core/objects/language/changes/language.comment.d.ts +26 -0
  242. package/dist/core/objects/language/changes/language.comment.js +45 -0
  243. package/dist/core/objects/language/changes/language.create.d.ts +25 -0
  244. package/dist/core/objects/language/changes/language.create.js +76 -0
  245. package/dist/core/objects/language/changes/language.drop.d.ts +22 -0
  246. package/dist/core/objects/language/changes/language.drop.js +31 -0
  247. package/dist/core/objects/language/changes/language.privilege.d.ts +97 -0
  248. package/dist/core/objects/language/changes/language.privilege.js +128 -0
  249. package/dist/core/objects/language/changes/language.types.d.ts +6 -0
  250. package/dist/core/objects/language/changes/language.types.js +1 -0
  251. package/dist/core/objects/language/language.diff.d.ts +15 -0
  252. package/dist/core/objects/language/language.diff.js +117 -0
  253. package/dist/core/objects/language/language.model.d.ts +62 -0
  254. package/dist/core/objects/language/language.model.js +128 -0
  255. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +67 -0
  256. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +63 -0
  257. package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +17 -0
  258. package/dist/core/objects/materialized-view/changes/materialized-view.base.js +13 -0
  259. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +53 -0
  260. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +112 -0
  261. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +35 -0
  262. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +71 -0
  263. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +26 -0
  264. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +42 -0
  265. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +105 -0
  266. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +151 -0
  267. package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +6 -0
  268. package/dist/core/objects/materialized-view/changes/materialized-view.types.js +1 -0
  269. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +18 -0
  270. package/dist/core/objects/materialized-view/materialized-view.diff.js +335 -0
  271. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +152 -0
  272. package/dist/core/objects/materialized-view/materialized-view.model.js +228 -0
  273. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +143 -0
  274. package/dist/core/objects/procedure/changes/procedure.alter.js +207 -0
  275. package/dist/core/objects/procedure/changes/procedure.base.d.ts +17 -0
  276. package/dist/core/objects/procedure/changes/procedure.base.js +13 -0
  277. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +26 -0
  278. package/dist/core/objects/procedure/changes/procedure.comment.js +52 -0
  279. package/dist/core/objects/procedure/changes/procedure.create.d.ts +42 -0
  280. package/dist/core/objects/procedure/changes/procedure.create.js +77 -0
  281. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +23 -0
  282. package/dist/core/objects/procedure/changes/procedure.drop.js +37 -0
  283. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +98 -0
  284. package/dist/core/objects/procedure/changes/procedure.privilege.js +144 -0
  285. package/dist/core/objects/procedure/changes/procedure.types.d.ts +6 -0
  286. package/dist/core/objects/procedure/changes/procedure.types.js +1 -0
  287. package/dist/core/objects/procedure/procedure.diff.d.ts +18 -0
  288. package/dist/core/objects/procedure/procedure.diff.js +282 -0
  289. package/dist/core/objects/procedure/procedure.model.d.ts +132 -0
  290. package/dist/core/objects/procedure/procedure.model.js +244 -0
  291. package/dist/core/objects/procedure/utils.d.ts +14 -0
  292. package/dist/core/objects/procedure/utils.js +55 -0
  293. package/dist/core/objects/publication/changes/publication.alter.d.ts +88 -0
  294. package/dist/core/objects/publication/changes/publication.alter.js +176 -0
  295. package/dist/core/objects/publication/changes/publication.base.d.ts +17 -0
  296. package/dist/core/objects/publication/changes/publication.base.js +13 -0
  297. package/dist/core/objects/publication/changes/publication.comment.d.ts +23 -0
  298. package/dist/core/objects/publication/changes/publication.comment.js +46 -0
  299. package/dist/core/objects/publication/changes/publication.create.d.ts +17 -0
  300. package/dist/core/objects/publication/changes/publication.create.js +61 -0
  301. package/dist/core/objects/publication/changes/publication.drop.d.ts +17 -0
  302. package/dist/core/objects/publication/changes/publication.drop.js +23 -0
  303. package/dist/core/objects/publication/changes/publication.types.d.ts +5 -0
  304. package/dist/core/objects/publication/changes/publication.types.js +1 -0
  305. package/dist/core/objects/publication/publication.diff.d.ts +5 -0
  306. package/dist/core/objects/publication/publication.diff.js +161 -0
  307. package/dist/core/objects/publication/publication.model.d.ts +96 -0
  308. package/dist/core/objects/publication/publication.model.js +186 -0
  309. package/dist/core/objects/publication/utils.d.ts +5 -0
  310. package/dist/core/objects/publication/utils.js +45 -0
  311. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +62 -0
  312. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +90 -0
  313. package/dist/core/objects/rls-policy/changes/rls-policy.base.d.ts +17 -0
  314. package/dist/core/objects/rls-policy/changes/rls-policy.base.js +13 -0
  315. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +23 -0
  316. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +51 -0
  317. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +27 -0
  318. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +79 -0
  319. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +22 -0
  320. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +33 -0
  321. package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +5 -0
  322. package/dist/core/objects/rls-policy/changes/rls-policy.types.js +1 -0
  323. package/dist/core/objects/rls-policy/rls-policy.diff.d.ts +10 -0
  324. package/dist/core/objects/rls-policy/rls-policy.diff.js +80 -0
  325. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +52 -0
  326. package/dist/core/objects/rls-policy/rls-policy.model.js +127 -0
  327. package/dist/core/objects/role/changes/role.alter.d.ts +78 -0
  328. package/dist/core/objects/role/changes/role.alter.js +55 -0
  329. package/dist/core/objects/role/changes/role.base.d.ts +17 -0
  330. package/dist/core/objects/role/changes/role.base.js +13 -0
  331. package/dist/core/objects/role/changes/role.comment.d.ts +23 -0
  332. package/dist/core/objects/role/changes/role.comment.js +42 -0
  333. package/dist/core/objects/role/changes/role.create.d.ts +38 -0
  334. package/dist/core/objects/role/changes/role.create.js +83 -0
  335. package/dist/core/objects/role/changes/role.drop.d.ts +22 -0
  336. package/dist/core/objects/role/changes/role.drop.js +28 -0
  337. package/dist/core/objects/role/changes/role.privilege.d.ts +148 -0
  338. package/dist/core/objects/role/changes/role.privilege.js +283 -0
  339. package/dist/core/objects/role/changes/role.types.d.ts +6 -0
  340. package/dist/core/objects/role/changes/role.types.js +1 -0
  341. package/dist/core/objects/role/role.diff.d.ts +13 -0
  342. package/dist/core/objects/role/role.diff.js +386 -0
  343. package/dist/core/objects/role/role.model.d.ts +89 -0
  344. package/dist/core/objects/role/role.model.js +312 -0
  345. package/dist/core/objects/rule/changes/rule.alter.d.ts +22 -0
  346. package/dist/core/objects/rule/changes/rule.alter.js +58 -0
  347. package/dist/core/objects/rule/changes/rule.base.d.ts +17 -0
  348. package/dist/core/objects/rule/changes/rule.base.js +13 -0
  349. package/dist/core/objects/rule/changes/rule.comment.d.ts +22 -0
  350. package/dist/core/objects/rule/changes/rule.comment.js +51 -0
  351. package/dist/core/objects/rule/changes/rule.create.d.ts +14 -0
  352. package/dist/core/objects/rule/changes/rule.create.js +28 -0
  353. package/dist/core/objects/rule/changes/rule.drop.d.ts +12 -0
  354. package/dist/core/objects/rule/changes/rule.drop.js +23 -0
  355. package/dist/core/objects/rule/changes/rule.types.d.ts +5 -0
  356. package/dist/core/objects/rule/changes/rule.types.js +1 -0
  357. package/dist/core/objects/rule/rule.diff.d.ts +3 -0
  358. package/dist/core/objects/rule/rule.diff.js +53 -0
  359. package/dist/core/objects/rule/rule.model.d.ts +72 -0
  360. package/dist/core/objects/rule/rule.model.js +156 -0
  361. package/dist/core/objects/schema/changes/schema.alter.d.ts +32 -0
  362. package/dist/core/objects/schema/changes/schema.alter.js +25 -0
  363. package/dist/core/objects/schema/changes/schema.base.d.ts +17 -0
  364. package/dist/core/objects/schema/changes/schema.base.js +13 -0
  365. package/dist/core/objects/schema/changes/schema.comment.d.ts +23 -0
  366. package/dist/core/objects/schema/changes/schema.comment.js +43 -0
  367. package/dist/core/objects/schema/changes/schema.create.d.ts +27 -0
  368. package/dist/core/objects/schema/changes/schema.create.js +38 -0
  369. package/dist/core/objects/schema/changes/schema.drop.d.ts +22 -0
  370. package/dist/core/objects/schema/changes/schema.drop.js +28 -0
  371. package/dist/core/objects/schema/changes/schema.privilege.d.ts +97 -0
  372. package/dist/core/objects/schema/changes/schema.privilege.js +131 -0
  373. package/dist/core/objects/schema/changes/schema.types.d.ts +6 -0
  374. package/dist/core/objects/schema/changes/schema.types.js +1 -0
  375. package/dist/core/objects/schema/schema.diff.d.ts +18 -0
  376. package/dist/core/objects/schema/schema.diff.js +142 -0
  377. package/dist/core/objects/schema/schema.model.d.ts +47 -0
  378. package/dist/core/objects/schema/schema.model.js +91 -0
  379. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +59 -0
  380. package/dist/core/objects/sequence/changes/sequence.alter.js +75 -0
  381. package/dist/core/objects/sequence/changes/sequence.base.d.ts +17 -0
  382. package/dist/core/objects/sequence/changes/sequence.base.js +13 -0
  383. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +23 -0
  384. package/dist/core/objects/sequence/changes/sequence.comment.js +47 -0
  385. package/dist/core/objects/sequence/changes/sequence.create.d.ts +25 -0
  386. package/dist/core/objects/sequence/changes/sequence.create.js +78 -0
  387. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +22 -0
  388. package/dist/core/objects/sequence/changes/sequence.drop.js +31 -0
  389. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +101 -0
  390. package/dist/core/objects/sequence/changes/sequence.privilege.js +135 -0
  391. package/dist/core/objects/sequence/changes/sequence.types.d.ts +6 -0
  392. package/dist/core/objects/sequence/changes/sequence.types.js +1 -0
  393. package/dist/core/objects/sequence/sequence.diff.d.ts +20 -0
  394. package/dist/core/objects/sequence/sequence.diff.js +258 -0
  395. package/dist/core/objects/sequence/sequence.model.d.ts +76 -0
  396. package/dist/core/objects/sequence/sequence.model.js +169 -0
  397. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +56 -0
  398. package/dist/core/objects/subscription/changes/subscription.alter.js +82 -0
  399. package/dist/core/objects/subscription/changes/subscription.base.d.ts +17 -0
  400. package/dist/core/objects/subscription/changes/subscription.base.js +13 -0
  401. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +23 -0
  402. package/dist/core/objects/subscription/changes/subscription.comment.js +46 -0
  403. package/dist/core/objects/subscription/changes/subscription.create.d.ts +12 -0
  404. package/dist/core/objects/subscription/changes/subscription.create.js +52 -0
  405. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +11 -0
  406. package/dist/core/objects/subscription/changes/subscription.drop.js +15 -0
  407. package/dist/core/objects/subscription/changes/subscription.types.d.ts +5 -0
  408. package/dist/core/objects/subscription/changes/subscription.types.js +1 -0
  409. package/dist/core/objects/subscription/subscription.diff.d.ts +5 -0
  410. package/dist/core/objects/subscription/subscription.diff.js +167 -0
  411. package/dist/core/objects/subscription/subscription.model.d.ts +80 -0
  412. package/dist/core/objects/subscription/subscription.model.js +166 -0
  413. package/dist/core/objects/subscription/utils.d.ts +37 -0
  414. package/dist/core/objects/subscription/utils.js +112 -0
  415. package/dist/core/objects/table/changes/table.alter.d.ts +357 -0
  416. package/dist/core/objects/table/changes/table.alter.js +607 -0
  417. package/dist/core/objects/table/changes/table.base.d.ts +17 -0
  418. package/dist/core/objects/table/changes/table.base.js +13 -0
  419. package/dist/core/objects/table/changes/table.comment.d.ts +106 -0
  420. package/dist/core/objects/table/changes/table.comment.js +175 -0
  421. package/dist/core/objects/table/changes/table.create.d.ts +33 -0
  422. package/dist/core/objects/table/changes/table.create.js +145 -0
  423. package/dist/core/objects/table/changes/table.drop.d.ts +22 -0
  424. package/dist/core/objects/table/changes/table.drop.js +35 -0
  425. package/dist/core/objects/table/changes/table.privilege.d.ts +107 -0
  426. package/dist/core/objects/table/changes/table.privilege.js +150 -0
  427. package/dist/core/objects/table/changes/table.types.d.ts +6 -0
  428. package/dist/core/objects/table/changes/table.types.js +1 -0
  429. package/dist/core/objects/table/table.diff.d.ts +18 -0
  430. package/dist/core/objects/table/table.diff.js +668 -0
  431. package/dist/core/objects/table/table.model.d.ts +341 -0
  432. package/dist/core/objects/table/table.model.js +426 -0
  433. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +29 -0
  434. package/dist/core/objects/trigger/changes/trigger.alter.js +27 -0
  435. package/dist/core/objects/trigger/changes/trigger.base.d.ts +17 -0
  436. package/dist/core/objects/trigger/changes/trigger.base.js +13 -0
  437. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +23 -0
  438. package/dist/core/objects/trigger/changes/trigger.comment.js +51 -0
  439. package/dist/core/objects/trigger/changes/trigger.create.d.ts +41 -0
  440. package/dist/core/objects/trigger/changes/trigger.create.js +61 -0
  441. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +22 -0
  442. package/dist/core/objects/trigger/changes/trigger.drop.js +33 -0
  443. package/dist/core/objects/trigger/changes/trigger.types.d.ts +5 -0
  444. package/dist/core/objects/trigger/changes/trigger.types.js +1 -0
  445. package/dist/core/objects/trigger/trigger.diff.d.ts +11 -0
  446. package/dist/core/objects/trigger/trigger.diff.js +84 -0
  447. package/dist/core/objects/trigger/trigger.model.d.ts +92 -0
  448. package/dist/core/objects/trigger/trigger.model.js +235 -0
  449. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +81 -0
  450. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +123 -0
  451. package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +17 -0
  452. package/dist/core/objects/type/composite-type/changes/composite-type.base.js +13 -0
  453. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +53 -0
  454. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +108 -0
  455. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +23 -0
  456. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +72 -0
  457. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +22 -0
  458. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +31 -0
  459. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +97 -0
  460. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +131 -0
  461. package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +6 -0
  462. package/dist/core/objects/type/composite-type/changes/composite-type.types.js +1 -0
  463. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +18 -0
  464. package/dist/core/objects/type/composite-type/composite-type.diff.js +250 -0
  465. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +148 -0
  466. package/dist/core/objects/type/composite-type/composite-type.model.js +223 -0
  467. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +52 -0
  468. package/dist/core/objects/type/enum/changes/enum.alter.js +60 -0
  469. package/dist/core/objects/type/enum/changes/enum.base.d.ts +17 -0
  470. package/dist/core/objects/type/enum/changes/enum.base.js +13 -0
  471. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +26 -0
  472. package/dist/core/objects/type/enum/changes/enum.comment.js +47 -0
  473. package/dist/core/objects/type/enum/changes/enum.create.d.ts +22 -0
  474. package/dist/core/objects/type/enum/changes/enum.create.js +43 -0
  475. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +22 -0
  476. package/dist/core/objects/type/enum/changes/enum.drop.js +28 -0
  477. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +97 -0
  478. package/dist/core/objects/type/enum/changes/enum.privilege.js +131 -0
  479. package/dist/core/objects/type/enum/changes/enum.types.d.ts +6 -0
  480. package/dist/core/objects/type/enum/changes/enum.types.js +1 -0
  481. package/dist/core/objects/type/enum/enum.diff.d.ts +18 -0
  482. package/dist/core/objects/type/enum/enum.diff.js +268 -0
  483. package/dist/core/objects/type/enum/enum.model.d.ts +66 -0
  484. package/dist/core/objects/type/enum/enum.model.js +154 -0
  485. package/dist/core/objects/type/range/changes/range.alter.d.ts +33 -0
  486. package/dist/core/objects/type/range/changes/range.alter.js +30 -0
  487. package/dist/core/objects/type/range/changes/range.base.d.ts +17 -0
  488. package/dist/core/objects/type/range/changes/range.base.js +13 -0
  489. package/dist/core/objects/type/range/changes/range.comment.d.ts +26 -0
  490. package/dist/core/objects/type/range/changes/range.comment.js +47 -0
  491. package/dist/core/objects/type/range/changes/range.create.d.ts +31 -0
  492. package/dist/core/objects/type/range/changes/range.create.js +113 -0
  493. package/dist/core/objects/type/range/changes/range.drop.d.ts +22 -0
  494. package/dist/core/objects/type/range/changes/range.drop.js +28 -0
  495. package/dist/core/objects/type/range/changes/range.privilege.d.ts +97 -0
  496. package/dist/core/objects/type/range/changes/range.privilege.js +131 -0
  497. package/dist/core/objects/type/range/changes/range.types.d.ts +6 -0
  498. package/dist/core/objects/type/range/changes/range.types.js +1 -0
  499. package/dist/core/objects/type/range/range.diff.d.ts +18 -0
  500. package/dist/core/objects/type/range/range.diff.js +172 -0
  501. package/dist/core/objects/type/range/range.model.d.ts +81 -0
  502. package/dist/core/objects/type/range/range.model.js +165 -0
  503. package/dist/core/objects/type/type.types.d.ts +4 -0
  504. package/dist/core/objects/type/type.types.js +1 -0
  505. package/dist/core/objects/utils.d.ts +57 -0
  506. package/dist/core/objects/utils.js +137 -0
  507. package/dist/core/objects/view/changes/view.alter.d.ts +62 -0
  508. package/dist/core/objects/view/changes/view.alter.js +75 -0
  509. package/dist/core/objects/view/changes/view.base.d.ts +17 -0
  510. package/dist/core/objects/view/changes/view.base.js +13 -0
  511. package/dist/core/objects/view/changes/view.comment.d.ts +23 -0
  512. package/dist/core/objects/view/changes/view.comment.js +46 -0
  513. package/dist/core/objects/view/changes/view.create.d.ts +27 -0
  514. package/dist/core/objects/view/changes/view.create.js +57 -0
  515. package/dist/core/objects/view/changes/view.drop.d.ts +17 -0
  516. package/dist/core/objects/view/changes/view.drop.js +30 -0
  517. package/dist/core/objects/view/changes/view.privilege.d.ts +107 -0
  518. package/dist/core/objects/view/changes/view.privilege.js +150 -0
  519. package/dist/core/objects/view/changes/view.types.d.ts +6 -0
  520. package/dist/core/objects/view/changes/view.types.js +1 -0
  521. package/dist/core/objects/view/view.diff.d.ts +18 -0
  522. package/dist/core/objects/view/view.diff.js +270 -0
  523. package/dist/core/objects/view/view.model.d.ts +152 -0
  524. package/dist/core/objects/view/view.model.js +250 -0
  525. package/dist/core/plan/apply.d.ts +33 -0
  526. package/dist/core/plan/apply.js +112 -0
  527. package/dist/core/plan/create.d.ts +22 -0
  528. package/dist/core/plan/create.js +228 -0
  529. package/dist/core/plan/hierarchy.d.ts +19 -0
  530. package/dist/core/plan/hierarchy.js +488 -0
  531. package/dist/core/plan/index.d.ts +19 -0
  532. package/dist/core/plan/index.js +21 -0
  533. package/dist/core/plan/io.d.ts +12 -0
  534. package/dist/core/plan/io.js +17 -0
  535. package/dist/core/plan/risk.d.ts +10 -0
  536. package/dist/core/plan/risk.js +38 -0
  537. package/dist/core/plan/serialize.d.ts +26 -0
  538. package/dist/core/plan/serialize.js +176 -0
  539. package/dist/core/plan/statements.d.ts +8 -0
  540. package/dist/core/plan/statements.js +13 -0
  541. package/dist/core/plan/types.d.ts +153 -0
  542. package/dist/core/plan/types.js +32 -0
  543. package/dist/core/postgres-config.d.ts +8 -0
  544. package/dist/core/postgres-config.js +46 -0
  545. package/dist/core/sort/custom-constraints.d.ts +9 -0
  546. package/dist/core/sort/custom-constraints.js +133 -0
  547. package/dist/core/sort/debug-visualization.d.ts +8 -0
  548. package/dist/core/sort/debug-visualization.js +145 -0
  549. package/dist/core/sort/dependency-filter.d.ts +19 -0
  550. package/dist/core/sort/dependency-filter.js +152 -0
  551. package/dist/core/sort/graph-builder.d.ts +37 -0
  552. package/dist/core/sort/graph-builder.js +172 -0
  553. package/dist/core/sort/graph-utils.d.ts +14 -0
  554. package/dist/core/sort/graph-utils.js +41 -0
  555. package/dist/core/sort/logical-sort.d.ts +26 -0
  556. package/dist/core/sort/logical-sort.js +532 -0
  557. package/dist/core/sort/sort-changes.d.ts +28 -0
  558. package/dist/core/sort/sort-changes.js +147 -0
  559. package/dist/core/sort/topological-sort.d.ts +20 -0
  560. package/dist/core/sort/topological-sort.js +138 -0
  561. package/dist/core/sort/types.d.ts +102 -0
  562. package/dist/core/sort/types.js +1 -0
  563. package/dist/core/sort/utils.d.ts +23 -0
  564. package/dist/core/sort/utils.js +51 -0
  565. package/dist/index.d.ts +1 -0
  566. package/dist/index.js +1 -0
  567. package/package.json +58 -12
@@ -0,0 +1,117 @@
1
+ import { diffObjects } from "../base.diff.js";
2
+ import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
3
+ import { hasNonAlterableChanges } from "../utils.js";
4
+ import { AlterLanguageChangeOwner } from "./changes/language.alter.js";
5
+ import { CreateCommentOnLanguage, DropCommentOnLanguage, } from "./changes/language.comment.js";
6
+ import { CreateLanguage } from "./changes/language.create.js";
7
+ import { DropLanguage } from "./changes/language.drop.js";
8
+ import { GrantLanguagePrivileges, RevokeGrantOptionLanguagePrivileges, RevokeLanguagePrivileges, } from "./changes/language.privilege.js";
9
+ /**
10
+ * Diff two sets of languages from main and branch catalogs.
11
+ *
12
+ * @param ctx - Context containing version information.
13
+ * @param main - The languages in the main catalog.
14
+ * @param branch - The languages in the branch catalog.
15
+ * @returns A list of changes to apply to main to make it match branch.
16
+ */
17
+ export function diffLanguages(ctx, main, branch) {
18
+ const { created, dropped, altered } = diffObjects(main, branch);
19
+ const changes = [];
20
+ for (const languageId of created) {
21
+ const lang = branch[languageId];
22
+ changes.push(new CreateLanguage({ language: lang }));
23
+ if (lang.comment !== null) {
24
+ changes.push(new CreateCommentOnLanguage({ language: lang }));
25
+ }
26
+ }
27
+ for (const languageId of dropped) {
28
+ changes.push(new DropLanguage({ language: main[languageId] }));
29
+ }
30
+ for (const languageId of altered) {
31
+ const mainLanguage = main[languageId];
32
+ const branchLanguage = branch[languageId];
33
+ // Check if non-alterable properties have changed
34
+ // These require dropping and recreating the language
35
+ const NON_ALTERABLE_FIELDS = [
36
+ "is_trusted",
37
+ "is_procedural",
38
+ "call_handler",
39
+ "inline_handler",
40
+ "validator",
41
+ ];
42
+ const nonAlterablePropsChanged = hasNonAlterableChanges(mainLanguage, branchLanguage, NON_ALTERABLE_FIELDS);
43
+ if (nonAlterablePropsChanged) {
44
+ // Replace the entire language (drop + create)
45
+ changes.push(new DropLanguage({ language: mainLanguage }), new CreateLanguage({ language: branchLanguage }));
46
+ }
47
+ else {
48
+ // Only alterable properties changed - check each one
49
+ // OWNER
50
+ if (mainLanguage.owner !== branchLanguage.owner) {
51
+ changes.push(new AlterLanguageChangeOwner({
52
+ language: mainLanguage,
53
+ owner: branchLanguage.owner,
54
+ }));
55
+ }
56
+ // COMMENT
57
+ if (mainLanguage.comment !== branchLanguage.comment) {
58
+ if (branchLanguage.comment === null) {
59
+ changes.push(new DropCommentOnLanguage({ language: mainLanguage }));
60
+ }
61
+ else {
62
+ changes.push(new CreateCommentOnLanguage({ language: branchLanguage }));
63
+ }
64
+ }
65
+ // Note: Language renaming would also use ALTER LANGUAGE ... RENAME TO ...
66
+ // But since our Language model uses 'name' as the identity field,
67
+ // a name change would be handled as drop + create by diffObjects()
68
+ // PRIVILEGES
69
+ // Filter out PUBLIC's built-in default USAGE privilege from main catalog
70
+ // (PostgreSQL grants it automatically, so we shouldn't compare it)
71
+ const mainPrivilegesFiltered = filterPublicBuiltInDefaults("language", mainLanguage.privileges);
72
+ // Filter out PUBLIC's built-in default USAGE privilege from branch catalog
73
+ const branchPrivilegesFiltered = filterPublicBuiltInDefaults("language", branchLanguage.privileges);
74
+ // Filter out owner privileges - owner always has ALL privileges implicitly
75
+ // and shouldn't be compared. Use branch owner as the reference.
76
+ const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchLanguage.owner, ctx.mainRoles);
77
+ for (const [grantee, result] of privilegeResults) {
78
+ // Generate grant changes
79
+ if (result.grants.length > 0) {
80
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
81
+ for (const [grantable, list] of grantGroups) {
82
+ void grantable;
83
+ changes.push(new GrantLanguagePrivileges({
84
+ language: branchLanguage,
85
+ grantee,
86
+ privileges: list,
87
+ version: ctx.version,
88
+ }));
89
+ }
90
+ }
91
+ // Generate revoke changes
92
+ if (result.revokes.length > 0) {
93
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
94
+ for (const [grantable, list] of revokeGroups) {
95
+ void grantable;
96
+ changes.push(new RevokeLanguagePrivileges({
97
+ language: mainLanguage,
98
+ grantee,
99
+ privileges: list,
100
+ version: ctx.version,
101
+ }));
102
+ }
103
+ }
104
+ // Generate revoke grant option changes
105
+ if (result.revokeGrantOption.length > 0) {
106
+ changes.push(new RevokeGrantOptionLanguagePrivileges({
107
+ language: mainLanguage,
108
+ grantee,
109
+ privilegeNames: result.revokeGrantOption,
110
+ version: ctx.version,
111
+ }));
112
+ }
113
+ }
114
+ }
115
+ }
116
+ return changes;
117
+ }
@@ -0,0 +1,62 @@
1
+ import z from "zod";
2
+ import { BasePgModel } from "../base.model.ts";
3
+ import { type PrivilegeProps } from "../base.privilege-diff.ts";
4
+ /**
5
+ * All properties exposed by CREATE LANGUAGE statement are included in diff output.
6
+ * https://www.postgresql.org/docs/current/sql-createlanguage.html
7
+ *
8
+ * ALTER LANGUAGE statement can only be used to rename the language or change the owner.
9
+ * https://www.postgresql.org/docs/current/sql-alterlanguage.html
10
+ *
11
+ * Other properties require dropping and creating a new language.
12
+ */
13
+ declare const languagePropsSchema: z.ZodObject<{
14
+ name: z.ZodString;
15
+ is_trusted: z.ZodBoolean;
16
+ is_procedural: z.ZodBoolean;
17
+ call_handler: z.ZodNullable<z.ZodString>;
18
+ inline_handler: z.ZodNullable<z.ZodString>;
19
+ validator: z.ZodNullable<z.ZodString>;
20
+ owner: z.ZodString;
21
+ comment: z.ZodNullable<z.ZodString>;
22
+ privileges: z.ZodArray<z.ZodObject<{
23
+ grantee: z.ZodString;
24
+ privilege: z.ZodString;
25
+ grantable: z.ZodBoolean;
26
+ columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
27
+ }, z.z.core.$strip>>;
28
+ }, z.z.core.$strip>;
29
+ type LanguagePrivilegeProps = PrivilegeProps;
30
+ export type LanguageProps = z.infer<typeof languagePropsSchema>;
31
+ export declare class Language extends BasePgModel {
32
+ readonly name: LanguageProps["name"];
33
+ readonly is_trusted: LanguageProps["is_trusted"];
34
+ readonly is_procedural: LanguageProps["is_procedural"];
35
+ readonly call_handler: LanguageProps["call_handler"];
36
+ readonly inline_handler: LanguageProps["inline_handler"];
37
+ readonly validator: LanguageProps["validator"];
38
+ readonly owner: LanguageProps["owner"];
39
+ readonly comment: LanguageProps["comment"];
40
+ readonly privileges: LanguagePrivilegeProps[];
41
+ constructor(props: LanguageProps);
42
+ get stableId(): `language:${string}`;
43
+ get identityFields(): {
44
+ name: string;
45
+ };
46
+ get dataFields(): {
47
+ is_trusted: boolean;
48
+ is_procedural: boolean;
49
+ call_handler: string | null;
50
+ inline_handler: string | null;
51
+ validator: string | null;
52
+ owner: string;
53
+ comment: string | null;
54
+ privileges: {
55
+ grantee: string;
56
+ privilege: string;
57
+ grantable: boolean;
58
+ columns?: string[] | null | undefined;
59
+ }[];
60
+ };
61
+ }
62
+ export {};
@@ -0,0 +1,128 @@
1
+ import z from "zod";
2
+ import { BasePgModel } from "../base.model.js";
3
+ import { privilegePropsSchema, } from "../base.privilege-diff.js";
4
+ /**
5
+ * All properties exposed by CREATE LANGUAGE statement are included in diff output.
6
+ * https://www.postgresql.org/docs/current/sql-createlanguage.html
7
+ *
8
+ * ALTER LANGUAGE statement can only be used to rename the language or change the owner.
9
+ * https://www.postgresql.org/docs/current/sql-alterlanguage.html
10
+ *
11
+ * Other properties require dropping and creating a new language.
12
+ */
13
+ const languagePropsSchema = z.object({
14
+ name: z.string(),
15
+ is_trusted: z.boolean(),
16
+ is_procedural: z.boolean(),
17
+ call_handler: z.string().nullable(),
18
+ inline_handler: z.string().nullable(),
19
+ validator: z.string().nullable(),
20
+ owner: z.string(),
21
+ comment: z.string().nullable(),
22
+ privileges: z.array(privilegePropsSchema),
23
+ });
24
+ export class Language extends BasePgModel {
25
+ name;
26
+ is_trusted;
27
+ is_procedural;
28
+ call_handler;
29
+ inline_handler;
30
+ validator;
31
+ owner;
32
+ comment;
33
+ privileges;
34
+ constructor(props) {
35
+ super();
36
+ // Identity fields
37
+ this.name = props.name;
38
+ // Data fields
39
+ this.is_trusted = props.is_trusted;
40
+ this.is_procedural = props.is_procedural;
41
+ this.call_handler = props.call_handler;
42
+ this.inline_handler = props.inline_handler;
43
+ this.validator = props.validator;
44
+ this.owner = props.owner;
45
+ this.comment = props.comment;
46
+ this.privileges = props.privileges;
47
+ }
48
+ get stableId() {
49
+ return `language:${this.name}`;
50
+ }
51
+ get identityFields() {
52
+ return {
53
+ name: this.name,
54
+ };
55
+ }
56
+ get dataFields() {
57
+ const sortedPrivileges = [...this.privileges].sort((a, b) => {
58
+ return (a.grantee.localeCompare(b.grantee) ||
59
+ a.privilege.localeCompare(b.privilege) ||
60
+ Number(a.grantable) - Number(b.grantable));
61
+ });
62
+ return {
63
+ is_trusted: this.is_trusted,
64
+ is_procedural: this.is_procedural,
65
+ call_handler: this.call_handler,
66
+ inline_handler: this.inline_handler,
67
+ validator: this.validator,
68
+ owner: this.owner,
69
+ comment: this.comment,
70
+ privileges: sortedPrivileges,
71
+ };
72
+ }
73
+ }
74
+ async function _extractLanguages(sql) {
75
+ const languageRows = await sql.begin(async (sql) => {
76
+ await sql `set search_path = ''`;
77
+ return sql `
78
+ with extension_oids as (
79
+ select
80
+ objid
81
+ from
82
+ pg_depend d
83
+ where
84
+ d.refclassid = 'pg_extension'::regclass
85
+ and d.classid = 'pg_language'::regclass
86
+ )
87
+ select
88
+ quote_ident(lan.lanname) as name,
89
+ lan.lanpltrusted as is_trusted,
90
+ lan.lanispl as is_procedural,
91
+ lan.lanplcallfoid::regprocedure::text as call_handler,
92
+ lan.laninline::regprocedure::text as inline_handler,
93
+ lan.lanvalidator::regprocedure::text as validator,
94
+ lan.lanowner::regrole::text as owner,
95
+ obj_description(lan.oid, 'pg_language') as comment,
96
+ coalesce(
97
+ (
98
+ select json_agg(
99
+ json_build_object(
100
+ 'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
101
+ 'privilege', x.privilege_type,
102
+ 'grantable', x.is_grantable
103
+ )
104
+ order by x.grantee, x.privilege_type
105
+ )
106
+ from lateral aclexplode(lan.lanacl) as x(grantor, grantee, privilege_type, is_grantable)
107
+ ), '[]'
108
+ ) as privileges
109
+ from
110
+ pg_catalog.pg_language lan
111
+ left outer join extension_oids e on lan.oid = e.objid
112
+ -- <EXCLUDE_INTERNAL and default>
113
+ where lan.lanname not in ('internal', 'c')
114
+ order by
115
+ lan.lanname;
116
+ `;
117
+ });
118
+ // Process rows to handle "-" as null values
119
+ const processedRows = languageRows.map((row) => ({
120
+ ...row,
121
+ call_handler: row.call_handler === "-" ? null : row.call_handler,
122
+ inline_handler: row.inline_handler === "-" ? null : row.inline_handler,
123
+ validator: row.validator === "-" ? null : row.validator,
124
+ }));
125
+ // Validate and parse each row using the Zod schema
126
+ const validatedRows = processedRows.map((row) => languagePropsSchema.parse(row));
127
+ return validatedRows.map((row) => new Language(row));
128
+ }
@@ -0,0 +1,67 @@
1
+ import type { MaterializedView } from "../materialized-view.model.ts";
2
+ import { AlterMaterializedViewChange } from "./materialized-view.base.ts";
3
+ /**
4
+ * Alter a materialized view.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-altermaterializedview.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * ALTER MATERIALIZED VIEW [ IF EXISTS ] name
11
+ * action [, ... ]
12
+ * where action is one of:
13
+ * ALTER [ COLUMN ] column_name SET STATISTICS integer
14
+ * ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
15
+ * ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
16
+ * ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
17
+ * CLUSTER ON index_name
18
+ * SET WITHOUT CLUSTER
19
+ * SET ( storage_parameter [= value] [, ... ] )
20
+ * RESET ( storage_parameter [, ... ] )
21
+ * OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
22
+ * RENAME TO new_name
23
+ * SET SCHEMA new_schema
24
+ * ```
25
+ *
26
+ * Notes for diff-based generation:
27
+ * - We currently only emit OWNER TO when owner differs.
28
+ * - Name/schema changes are treated as identity changes; handled as drop/create by the diff engine.
29
+ * - Column attribute changes, CLUSTER are not modeled and thus not emitted.
30
+ * - Changes to definition, options, and other non-alterable properties trigger a replace (drop + create).
31
+ */
32
+ export type AlterMaterializedView = AlterMaterializedViewChangeOwner | AlterMaterializedViewSetStorageParams;
33
+ /**
34
+ * ALTER MATERIALIZED VIEW ... OWNER TO ...
35
+ */
36
+ export declare class AlterMaterializedViewChangeOwner extends AlterMaterializedViewChange {
37
+ readonly materializedView: MaterializedView;
38
+ readonly owner: string;
39
+ readonly scope: "object";
40
+ constructor(props: {
41
+ materializedView: MaterializedView;
42
+ owner: string;
43
+ });
44
+ get requires(): `materializedView:${string}`[];
45
+ serialize(): string;
46
+ }
47
+ /**
48
+ * ALTER MATERIALIZED VIEW ... SET/RESET ( storage_parameter ... )
49
+ * Accepts main and branch, computes differences, and emits RESET then SET statements.
50
+ */
51
+ export declare class AlterMaterializedViewSetStorageParams extends AlterMaterializedViewChange {
52
+ readonly materializedView: MaterializedView;
53
+ readonly paramsToSet: string[];
54
+ readonly keysToReset: string[];
55
+ readonly scope: "object";
56
+ constructor(props: {
57
+ materializedView: MaterializedView;
58
+ paramsToSet: string[];
59
+ keysToReset: string[];
60
+ });
61
+ get requires(): `materializedView:${string}`[];
62
+ serialize(): string;
63
+ }
64
+ /**
65
+ * Replace a materialized view by dropping and recreating it.
66
+ * This is used when properties that cannot be altered via ALTER MATERIALIZED VIEW change.
67
+ */
@@ -0,0 +1,63 @@
1
+ import { AlterMaterializedViewChange } from "./materialized-view.base.js";
2
+ /**
3
+ * ALTER MATERIALIZED VIEW ... OWNER TO ...
4
+ */
5
+ export class AlterMaterializedViewChangeOwner extends AlterMaterializedViewChange {
6
+ materializedView;
7
+ owner;
8
+ scope = "object";
9
+ constructor(props) {
10
+ super();
11
+ this.materializedView = props.materializedView;
12
+ this.owner = props.owner;
13
+ }
14
+ get requires() {
15
+ return [this.materializedView.stableId];
16
+ }
17
+ serialize() {
18
+ return [
19
+ "ALTER MATERIALIZED VIEW",
20
+ `${this.materializedView.schema}.${this.materializedView.name}`,
21
+ "OWNER TO",
22
+ this.owner,
23
+ ].join(" ");
24
+ }
25
+ }
26
+ /**
27
+ * ALTER MATERIALIZED VIEW ... SET/RESET ( storage_parameter ... )
28
+ * Accepts main and branch, computes differences, and emits RESET then SET statements.
29
+ */
30
+ export class AlterMaterializedViewSetStorageParams extends AlterMaterializedViewChange {
31
+ materializedView;
32
+ paramsToSet;
33
+ keysToReset;
34
+ scope = "object";
35
+ constructor(props) {
36
+ super();
37
+ this.materializedView = props.materializedView;
38
+ this.paramsToSet = props.paramsToSet;
39
+ this.keysToReset = props.keysToReset;
40
+ }
41
+ get requires() {
42
+ return [this.materializedView.stableId];
43
+ }
44
+ serialize() {
45
+ const head = [
46
+ "ALTER MATERIALIZED VIEW",
47
+ `${this.materializedView.schema}.${this.materializedView.name}`,
48
+ ].join(" ");
49
+ const statements = [];
50
+ if (this.keysToReset.length > 0) {
51
+ statements.push(`${head} RESET (${this.keysToReset.join(", ")})`);
52
+ }
53
+ if (this.paramsToSet.length > 0) {
54
+ statements.push(`${head} SET (${this.paramsToSet.join(", ")})`);
55
+ }
56
+ return statements.join(";\n");
57
+ }
58
+ }
59
+ /**
60
+ * Replace a materialized view by dropping and recreating it.
61
+ * This is used when properties that cannot be altered via ALTER MATERIALIZED VIEW change.
62
+ */
63
+ // NOTE: ReplaceMaterializedView removed. Non-alterable changes are emitted as Drop + Create in materialized-view.diff.ts.
@@ -0,0 +1,17 @@
1
+ import { BaseChange } from "../../base.change.ts";
2
+ import type { MaterializedView } from "../materialized-view.model.ts";
3
+ declare abstract class BaseMaterializedViewChange extends BaseChange {
4
+ abstract readonly materializedView: MaterializedView;
5
+ abstract readonly scope: "object" | "comment" | "privilege";
6
+ readonly objectType: "materialized_view";
7
+ }
8
+ export declare abstract class CreateMaterializedViewChange extends BaseMaterializedViewChange {
9
+ readonly operation: "create";
10
+ }
11
+ export declare abstract class AlterMaterializedViewChange extends BaseMaterializedViewChange {
12
+ readonly operation: "alter";
13
+ }
14
+ export declare abstract class DropMaterializedViewChange extends BaseMaterializedViewChange {
15
+ readonly operation: "drop";
16
+ }
17
+ export {};
@@ -0,0 +1,13 @@
1
+ import { BaseChange } from "../../base.change.js";
2
+ class BaseMaterializedViewChange extends BaseChange {
3
+ objectType = "materialized_view";
4
+ }
5
+ export class CreateMaterializedViewChange extends BaseMaterializedViewChange {
6
+ operation = "create";
7
+ }
8
+ export class AlterMaterializedViewChange extends BaseMaterializedViewChange {
9
+ operation = "alter";
10
+ }
11
+ export class DropMaterializedViewChange extends BaseMaterializedViewChange {
12
+ operation = "drop";
13
+ }
@@ -0,0 +1,53 @@
1
+ import type { ColumnProps } from "../../base.model.ts";
2
+ import type { MaterializedView } from "../materialized-view.model.ts";
3
+ import { CreateMaterializedViewChange, DropMaterializedViewChange } from "./materialized-view.base.ts";
4
+ export type CommentMaterializedView = CreateCommentOnMaterializedView | CreateCommentOnMaterializedViewColumn | DropCommentOnMaterializedView | DropCommentOnMaterializedViewColumn;
5
+ /**
6
+ * Create/drop comments on materialized view columns.
7
+ *
8
+ * @see https://www.postgresql.org/docs/17/sql-comment.html
9
+ */
10
+ export declare class CreateCommentOnMaterializedView extends CreateMaterializedViewChange {
11
+ readonly materializedView: MaterializedView;
12
+ readonly scope: "comment";
13
+ constructor(props: {
14
+ materializedView: MaterializedView;
15
+ });
16
+ get creates(): `comment:${string}`[];
17
+ get requires(): `materializedView:${string}`[];
18
+ serialize(): string;
19
+ }
20
+ export declare class DropCommentOnMaterializedView extends DropMaterializedViewChange {
21
+ readonly materializedView: MaterializedView;
22
+ readonly scope: "comment";
23
+ constructor(props: {
24
+ materializedView: MaterializedView;
25
+ });
26
+ get drops(): `comment:${string}`[];
27
+ get requires(): (`comment:${string}` | `materializedView:${string}`)[];
28
+ serialize(): string;
29
+ }
30
+ export declare class CreateCommentOnMaterializedViewColumn extends CreateMaterializedViewChange {
31
+ readonly materializedView: MaterializedView;
32
+ readonly column: ColumnProps;
33
+ readonly scope: "comment";
34
+ constructor(props: {
35
+ materializedView: MaterializedView;
36
+ column: ColumnProps;
37
+ });
38
+ get creates(): `comment:${string}`[];
39
+ get requires(): `column:${string}.${string}.${string}`[];
40
+ serialize(): string;
41
+ }
42
+ export declare class DropCommentOnMaterializedViewColumn extends DropMaterializedViewChange {
43
+ readonly materializedView: MaterializedView;
44
+ readonly column: ColumnProps;
45
+ readonly scope: "comment";
46
+ constructor(props: {
47
+ materializedView: MaterializedView;
48
+ column: ColumnProps;
49
+ });
50
+ get drops(): `comment:${string}`[];
51
+ get requires(): (`column:${string}.${string}.${string}` | `comment:${string}`)[];
52
+ serialize(): string;
53
+ }
@@ -0,0 +1,112 @@
1
+ import { quoteLiteral } from "../../base.change.js";
2
+ import { stableId } from "../../utils.js";
3
+ import { CreateMaterializedViewChange, DropMaterializedViewChange, } from "./materialized-view.base.js";
4
+ /**
5
+ * Create/drop comments on materialized view columns.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-comment.html
8
+ */
9
+ export class CreateCommentOnMaterializedView extends CreateMaterializedViewChange {
10
+ materializedView;
11
+ scope = "comment";
12
+ constructor(props) {
13
+ super();
14
+ this.materializedView = props.materializedView;
15
+ }
16
+ get creates() {
17
+ return [stableId.comment(this.materializedView.stableId)];
18
+ }
19
+ get requires() {
20
+ return [this.materializedView.stableId];
21
+ }
22
+ serialize() {
23
+ return [
24
+ "COMMENT ON MATERIALIZED VIEW",
25
+ `${this.materializedView.schema}.${this.materializedView.name}`,
26
+ "IS",
27
+ // biome-ignore lint/style/noNonNullAssertion: mv comment is not nullable in this case
28
+ quoteLiteral(this.materializedView.comment),
29
+ ].join(" ");
30
+ }
31
+ }
32
+ export class DropCommentOnMaterializedView extends DropMaterializedViewChange {
33
+ materializedView;
34
+ scope = "comment";
35
+ constructor(props) {
36
+ super();
37
+ this.materializedView = props.materializedView;
38
+ }
39
+ get drops() {
40
+ return [stableId.comment(this.materializedView.stableId)];
41
+ }
42
+ get requires() {
43
+ return [
44
+ stableId.comment(this.materializedView.stableId),
45
+ this.materializedView.stableId,
46
+ ];
47
+ }
48
+ serialize() {
49
+ return [
50
+ "COMMENT ON MATERIALIZED VIEW",
51
+ `${this.materializedView.schema}.${this.materializedView.name}`,
52
+ "IS NULL",
53
+ ].join(" ");
54
+ }
55
+ }
56
+ export class CreateCommentOnMaterializedViewColumn extends CreateMaterializedViewChange {
57
+ materializedView;
58
+ column;
59
+ scope = "comment";
60
+ constructor(props) {
61
+ super();
62
+ this.materializedView = props.materializedView;
63
+ this.column = props.column;
64
+ }
65
+ get creates() {
66
+ return [
67
+ stableId.comment(stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name)),
68
+ ];
69
+ }
70
+ get requires() {
71
+ return [
72
+ stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name),
73
+ ];
74
+ }
75
+ serialize() {
76
+ return [
77
+ "COMMENT ON COLUMN",
78
+ `${this.materializedView.schema}.${this.materializedView.name}.${this.column.name}`,
79
+ "IS",
80
+ // biome-ignore lint/style/noNonNullAssertion: column comment is not nullable in this case
81
+ quoteLiteral(this.column.comment),
82
+ ].join(" ");
83
+ }
84
+ }
85
+ export class DropCommentOnMaterializedViewColumn extends DropMaterializedViewChange {
86
+ materializedView;
87
+ column;
88
+ scope = "comment";
89
+ constructor(props) {
90
+ super();
91
+ this.materializedView = props.materializedView;
92
+ this.column = props.column;
93
+ }
94
+ get drops() {
95
+ return [
96
+ stableId.comment(stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name)),
97
+ ];
98
+ }
99
+ get requires() {
100
+ return [
101
+ stableId.comment(stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name)),
102
+ stableId.column(this.materializedView.schema, this.materializedView.name, this.column.name),
103
+ ];
104
+ }
105
+ serialize() {
106
+ return [
107
+ "COMMENT ON COLUMN",
108
+ `${this.materializedView.schema}.${this.materializedView.name}.${this.column.name}`,
109
+ "IS NULL",
110
+ ].join(" ");
111
+ }
112
+ }
@@ -0,0 +1,35 @@
1
+ import type { MaterializedView } from "../materialized-view.model.ts";
2
+ import { CreateMaterializedViewChange } from "./materialized-view.base.ts";
3
+ /**
4
+ * Create a materialized view.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-creatematerializedview.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
11
+ * [ (column_name [, ...] ) ]
12
+ * [ WITH ( storage_parameter [= value] [, ... ] ) ]
13
+ * [ TABLESPACE tablespace_name ]
14
+ * AS query
15
+ * [ WITH [ NO ] DATA ]
16
+ * ```
17
+ *
18
+ * Notes for diff-based generation:
19
+ * - IF NOT EXISTS is omitted: diffs are deterministic and explicit.
20
+ * - (column_name, ...) list is derived from the SELECT query; we don't emit it.
21
+ * - TABLESPACE is not currently modeled/extracted and is not emitted.
22
+ * - WITH (options) is emitted only when non-empty.
23
+ * - WITH NO DATA is always emitted when is_populated is false to ensure correct state.
24
+ * - WITH DATA is emitted when is_populated is true.
25
+ */
26
+ export declare class CreateMaterializedView extends CreateMaterializedViewChange {
27
+ readonly materializedView: MaterializedView;
28
+ readonly scope: "object";
29
+ constructor(props: {
30
+ materializedView: MaterializedView;
31
+ });
32
+ get creates(): (`column:${string}.${string}.${string}` | `materializedView:${string}`)[];
33
+ get requires(): string[];
34
+ serialize(): string;
35
+ }