@supabase/pg-delta 1.0.0-alpha.11 → 1.0.0-alpha.13

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 (397) hide show
  1. package/dist/core/expand-replace-dependencies.js +23 -0
  2. package/dist/core/export/index.d.ts +2 -2
  3. package/dist/core/export/index.js +4 -1
  4. package/dist/core/integrations/integration.types.d.ts +26 -1
  5. package/dist/core/integrations/integration.types.js +31 -1
  6. package/dist/core/integrations/serialize/dsl.d.ts +1 -8
  7. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  8. package/dist/core/integrations/supabase.js +19 -0
  9. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  10. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  11. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  12. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  13. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  14. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  15. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  16. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  17. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  18. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  19. package/dist/core/objects/base.change.d.ts +2 -1
  20. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  21. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  22. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  23. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  24. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  25. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  26. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  27. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  28. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  29. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  30. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  31. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  32. package/dist/core/objects/domain/changes/domain.create.d.ts +2 -1
  33. package/dist/core/objects/domain/changes/domain.create.js +1 -1
  34. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  35. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  36. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  37. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  38. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  39. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  40. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  41. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  42. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  43. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  44. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  45. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  46. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  47. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  48. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  49. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  50. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  51. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  52. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  53. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  54. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  55. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  56. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  57. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  58. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  59. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  60. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  61. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  62. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  63. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  64. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  65. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  66. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  67. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  68. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  69. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  70. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  71. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  72. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  73. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  74. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  75. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  76. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  77. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  78. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  79. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  80. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  81. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  82. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  83. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  84. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  85. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  86. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  87. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  88. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  89. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  90. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  91. package/dist/core/objects/index/changes/index.alter.js +3 -3
  92. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  93. package/dist/core/objects/index/changes/index.comment.js +2 -2
  94. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  95. package/dist/core/objects/index/changes/index.create.js +1 -1
  96. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  97. package/dist/core/objects/index/changes/index.drop.js +1 -1
  98. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  99. package/dist/core/objects/language/changes/language.alter.js +1 -1
  100. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  101. package/dist/core/objects/language/changes/language.comment.js +2 -2
  102. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  103. package/dist/core/objects/language/changes/language.create.js +1 -1
  104. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  105. package/dist/core/objects/language/changes/language.drop.js +1 -1
  106. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  107. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  108. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  109. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  110. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  111. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  112. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  113. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  114. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  115. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  116. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  117. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  118. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  119. package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
  120. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  121. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  122. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  123. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  124. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  125. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  126. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  127. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  128. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
  129. package/dist/core/objects/publication/changes/publication.alter.js +12 -7
  130. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  131. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  132. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  133. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  134. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  135. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  136. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  137. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  138. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  139. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  140. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  141. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +1 -1
  142. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  143. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  144. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  145. package/dist/core/objects/role/changes/role.alter.js +2 -2
  146. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  147. package/dist/core/objects/role/changes/role.comment.js +2 -2
  148. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  149. package/dist/core/objects/role/changes/role.create.js +1 -1
  150. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  151. package/dist/core/objects/role/changes/role.drop.js +1 -1
  152. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  153. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  154. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  155. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  156. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  157. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  158. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  159. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  160. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  161. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  162. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  163. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  164. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  165. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  166. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  167. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  168. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  169. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  170. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  171. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  172. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  173. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  174. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  175. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  176. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  177. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  178. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  179. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  180. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  181. package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
  182. package/dist/core/objects/sequence/sequence.diff.js +12 -0
  183. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  184. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  185. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  186. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  187. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  188. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  189. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  190. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  191. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  192. package/dist/core/objects/table/changes/table.alter.js +107 -22
  193. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  194. package/dist/core/objects/table/changes/table.comment.js +6 -6
  195. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  196. package/dist/core/objects/table/changes/table.create.js +1 -1
  197. package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
  198. package/dist/core/objects/table/changes/table.drop.js +7 -1
  199. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  200. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  201. package/dist/core/objects/table/table.diff.js +46 -1
  202. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  203. package/dist/core/objects/trigger/changes/trigger.alter.js +1 -1
  204. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  205. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  206. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  207. package/dist/core/objects/trigger/changes/trigger.create.js +1 -1
  208. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  209. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  210. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  211. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  212. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  213. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  214. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  215. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  216. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  217. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  218. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  219. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  220. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  221. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  222. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  223. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  224. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  225. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  226. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  227. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  228. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  229. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  230. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  231. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  232. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  233. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  234. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  235. package/dist/core/objects/type/range/changes/range.create.js +1 -1
  236. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  237. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  238. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  239. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  240. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  241. package/dist/core/objects/view/changes/view.alter.js +3 -3
  242. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  243. package/dist/core/objects/view/changes/view.comment.js +2 -2
  244. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  245. package/dist/core/objects/view/changes/view.create.js +1 -1
  246. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  247. package/dist/core/objects/view/changes/view.drop.js +1 -1
  248. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  249. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  250. package/dist/core/plan/create.js +5 -17
  251. package/dist/core/plan/types.d.ts +3 -6
  252. package/dist/core/sort/custom-constraints.js +64 -0
  253. package/package.json +1 -1
  254. package/src/core/expand-replace-dependencies.test.ts +126 -1
  255. package/src/core/expand-replace-dependencies.ts +50 -0
  256. package/src/core/export/index.ts +13 -4
  257. package/src/core/integrations/integration.types.ts +59 -1
  258. package/src/core/integrations/serialize/dsl.test.ts +20 -1
  259. package/src/core/integrations/serialize/dsl.ts +1 -10
  260. package/src/core/integrations/serialize/serialize.types.ts +37 -0
  261. package/src/core/integrations/supabase.ts +19 -0
  262. package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
  263. package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
  264. package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
  265. package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
  266. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
  267. package/src/core/objects/base.change.ts +3 -1
  268. package/src/core/objects/collation/changes/collation.alter.ts +3 -2
  269. package/src/core/objects/collation/changes/collation.comment.ts +3 -2
  270. package/src/core/objects/collation/changes/collation.create.ts +2 -1
  271. package/src/core/objects/collation/changes/collation.drop.ts +2 -1
  272. package/src/core/objects/domain/changes/domain.alter.ts +9 -8
  273. package/src/core/objects/domain/changes/domain.comment.ts +3 -2
  274. package/src/core/objects/domain/changes/domain.create.ts +2 -1
  275. package/src/core/objects/domain/changes/domain.drop.ts +2 -1
  276. package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
  277. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
  278. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
  279. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
  280. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
  281. package/src/core/objects/extension/changes/extension.alter.ts +3 -2
  282. package/src/core/objects/extension/changes/extension.comment.ts +3 -2
  283. package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
  284. package/src/core/objects/extension/changes/extension.create.ts +5 -2
  285. package/src/core/objects/extension/changes/extension.drop.ts +2 -1
  286. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
  287. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
  288. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
  289. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
  290. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
  291. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
  292. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
  293. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
  294. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
  295. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
  296. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
  297. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
  298. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
  299. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
  300. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
  301. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
  302. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
  303. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
  304. package/src/core/objects/index/changes/index.alter.ts +4 -3
  305. package/src/core/objects/index/changes/index.comment.ts +3 -2
  306. package/src/core/objects/index/changes/index.create.ts +2 -1
  307. package/src/core/objects/index/changes/index.drop.ts +2 -1
  308. package/src/core/objects/language/changes/language.alter.ts +2 -1
  309. package/src/core/objects/language/changes/language.comment.ts +3 -2
  310. package/src/core/objects/language/changes/language.create.ts +2 -1
  311. package/src/core/objects/language/changes/language.drop.ts +2 -1
  312. package/src/core/objects/language/changes/language.privilege.ts +4 -3
  313. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
  314. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
  315. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
  316. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
  317. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
  318. package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
  319. package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
  320. package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
  321. package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
  322. package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
  323. package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
  324. package/src/core/objects/publication/changes/publication.alter.ts +14 -7
  325. package/src/core/objects/publication/changes/publication.comment.ts +3 -2
  326. package/src/core/objects/publication/changes/publication.create.ts +2 -1
  327. package/src/core/objects/publication/changes/publication.drop.ts +2 -1
  328. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
  329. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
  330. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
  331. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
  332. package/src/core/objects/role/changes/role.alter.ts +3 -2
  333. package/src/core/objects/role/changes/role.comment.ts +3 -2
  334. package/src/core/objects/role/changes/role.create.ts +2 -1
  335. package/src/core/objects/role/changes/role.drop.ts +2 -1
  336. package/src/core/objects/role/changes/role.privilege.ts +6 -5
  337. package/src/core/objects/rule/changes/rule.alter.ts +3 -2
  338. package/src/core/objects/rule/changes/rule.comment.ts +3 -2
  339. package/src/core/objects/rule/changes/rule.create.ts +2 -1
  340. package/src/core/objects/rule/changes/rule.drop.ts +2 -1
  341. package/src/core/objects/schema/changes/schema.alter.ts +2 -1
  342. package/src/core/objects/schema/changes/schema.comment.ts +3 -2
  343. package/src/core/objects/schema/changes/schema.create.ts +3 -3
  344. package/src/core/objects/schema/changes/schema.drop.ts +2 -1
  345. package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
  346. package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
  347. package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
  348. package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
  349. package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
  350. package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
  351. package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
  352. package/src/core/objects/sequence/sequence.diff.ts +24 -2
  353. package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
  354. package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
  355. package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
  356. package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
  357. package/src/core/objects/table/changes/table.alter.test.ts +38 -0
  358. package/src/core/objects/table/changes/table.alter.ts +123 -22
  359. package/src/core/objects/table/changes/table.comment.ts +7 -6
  360. package/src/core/objects/table/changes/table.create.ts +2 -1
  361. package/src/core/objects/table/changes/table.drop.ts +20 -1
  362. package/src/core/objects/table/changes/table.privilege.ts +4 -3
  363. package/src/core/objects/table/table.diff.test.ts +121 -0
  364. package/src/core/objects/table/table.diff.ts +64 -1
  365. package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
  366. package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
  367. package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
  368. package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
  369. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
  370. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
  371. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
  372. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
  373. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
  374. package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
  375. package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
  376. package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
  377. package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
  378. package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
  379. package/src/core/objects/type/range/changes/range.alter.ts +2 -1
  380. package/src/core/objects/type/range/changes/range.comment.ts +3 -2
  381. package/src/core/objects/type/range/changes/range.create.ts +2 -1
  382. package/src/core/objects/type/range/changes/range.drop.ts +2 -1
  383. package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
  384. package/src/core/objects/view/changes/view.alter.ts +4 -3
  385. package/src/core/objects/view/changes/view.comment.ts +3 -2
  386. package/src/core/objects/view/changes/view.create.ts +2 -1
  387. package/src/core/objects/view/changes/view.drop.ts +2 -1
  388. package/src/core/objects/view/changes/view.privilege.ts +4 -3
  389. package/src/core/plan/create.ts +11 -27
  390. package/src/core/plan/sql-format/format-off.test.ts +1 -1
  391. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
  392. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
  393. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
  394. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
  395. package/src/core/plan/types.ts +3 -6
  396. package/src/core/sort/custom-constraints.ts +74 -0
  397. package/src/typedoc.ts +5 -0
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -53,7 +54,7 @@ export class GrantProcedurePrivileges extends AlterProcedureChange {
53
54
  return [this.procedure.stableId, stableId.role(this.grantee)];
54
55
  }
55
56
 
56
- serialize(): string {
57
+ serialize(_options?: SerializeOptions): string {
57
58
  const hasGrantable = this.privileges.some((p) => p.grantable);
58
59
  const hasBase = this.privileges.some((p) => !p.grantable);
59
60
  if (hasGrantable && hasBase) {
@@ -123,7 +124,7 @@ export class RevokeProcedurePrivileges extends AlterProcedureChange {
123
124
  ];
124
125
  }
125
126
 
126
- serialize(): string {
127
+ serialize(_options?: SerializeOptions): string {
127
128
  const objectKind = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
128
129
  const kindPrefix = getObjectKindPrefix(objectKind);
129
130
  const list = this.privileges.map((p) => p.privilege);
@@ -171,7 +172,7 @@ export class RevokeGrantOptionProcedurePrivileges extends AlterProcedureChange {
171
172
  ];
172
173
  }
173
174
 
174
- serialize(): string {
175
+ serialize(_options?: SerializeOptions): string {
175
176
  const objectKind = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
176
177
  const kindPrefix = getObjectKindPrefix(objectKind);
177
178
  const privSql = formatObjectPrivilegeList(
@@ -156,6 +156,10 @@ describe("publication.alter", () => {
156
156
  stableId.table("public", "logs"),
157
157
  stableId.table("audit", "events"),
158
158
  ]);
159
+ expect(change.drops).toEqual([
160
+ stableId.table("public", "logs"),
161
+ stableId.table("audit", "events"),
162
+ ]);
159
163
  await assertValidSql(change.serialize());
160
164
  expect(change.serialize()).toBe(
161
165
  "ALTER PUBLICATION pub_drop_tables DROP TABLE public.logs, audit.events",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type {
3
4
  Publication,
@@ -31,7 +32,7 @@ export class AlterPublicationSetOptions extends AlterPublicationChange {
31
32
  return [this.publication.stableId];
32
33
  }
33
34
 
34
- serialize(): string {
35
+ serialize(_options?: SerializeOptions): string {
35
36
  const assignments: string[] = [];
36
37
 
37
38
  if (this.setPublish) {
@@ -79,7 +80,7 @@ export class AlterPublicationSetList extends AlterPublicationChange {
79
80
  return Array.from(dependencies);
80
81
  }
81
82
 
82
- serialize(): string {
83
+ serialize(_options?: SerializeOptions): string {
83
84
  const clauses = formatPublicationObjects(
84
85
  this.publication.tables,
85
86
  this.publication.schemas,
@@ -118,7 +119,7 @@ export class AlterPublicationAddTables extends AlterPublicationChange {
118
119
  return Array.from(dependencies);
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  const clauses = this.tables.map((table) => formatPublicationTable(table));
123
124
  return `ALTER PUBLICATION ${this.publication.name} ADD ${clauses.join(", ")}`;
124
125
  }
@@ -150,7 +151,13 @@ export class AlterPublicationDropTables extends AlterPublicationChange {
150
151
  return Array.from(dependencies);
151
152
  }
152
153
 
153
- serialize(): string {
154
+ get drops() {
155
+ // Treat ALTER PUBLICATION ... DROP TABLE as a destructive change so it runs
156
+ // in the drop phase before DROP TABLE removes the referenced relation.
157
+ return this.tables.map((table) => stableId.table(table.schema, table.name));
158
+ }
159
+
160
+ serialize(_options?: SerializeOptions): string {
154
161
  const targets = this.tables.map((table) => `${table.schema}.${table.name}`);
155
162
  return `ALTER PUBLICATION ${this.publication.name} DROP TABLE ${targets.join(", ")}`;
156
163
  }
@@ -174,7 +181,7 @@ export class AlterPublicationAddSchemas extends AlterPublicationChange {
174
181
  ];
175
182
  }
176
183
 
177
- serialize(): string {
184
+ serialize(_options?: SerializeOptions): string {
178
185
  const clauses = this.schemas.map((schema) => `TABLES IN SCHEMA ${schema}`);
179
186
  return `ALTER PUBLICATION ${this.publication.name} ADD ${clauses.join(", ")}`;
180
187
  }
@@ -198,7 +205,7 @@ export class AlterPublicationDropSchemas extends AlterPublicationChange {
198
205
  ];
199
206
  }
200
207
 
201
- serialize(): string {
208
+ serialize(_options?: SerializeOptions): string {
202
209
  const clauses = this.schemas.map((schema) => `TABLES IN SCHEMA ${schema}`);
203
210
  return `ALTER PUBLICATION ${this.publication.name} DROP ${clauses.join(", ")}`;
204
211
  }
@@ -219,7 +226,7 @@ export class AlterPublicationSetOwner extends AlterPublicationChange {
219
226
  return [this.publication.stableId, stableId.role(this.owner)];
220
227
  }
221
228
 
222
- serialize(): string {
229
+ serialize(_options?: SerializeOptions): string {
223
230
  return `ALTER PUBLICATION ${this.publication.name} OWNER TO ${this.owner}`;
224
231
  }
225
232
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Publication } from "../publication.model.ts";
@@ -27,7 +28,7 @@ export class CreateCommentOnPublication extends CreatePublicationChange {
27
28
  return [this.publication.stableId];
28
29
  }
29
30
 
30
- serialize(): string {
31
+ serialize(_options?: SerializeOptions): string {
31
32
  return [
32
33
  "COMMENT ON PUBLICATION",
33
34
  this.publication.name,
@@ -58,7 +59,7 @@ export class DropCommentOnPublication extends DropPublicationChange {
58
59
  ];
59
60
  }
60
61
 
61
- serialize(): string {
62
+ serialize(_options?: SerializeOptions): string {
62
63
  return `COMMENT ON PUBLICATION ${this.publication.name} IS NULL`;
63
64
  }
64
65
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Publication } from "../publication.model.ts";
3
4
  import {
@@ -48,7 +49,7 @@ export class CreatePublication extends CreatePublicationChange {
48
49
  return Array.from(dependencies);
49
50
  }
50
51
 
51
- serialize(): string {
52
+ serialize(_options?: SerializeOptions): string {
52
53
  const parts: string[] = ["CREATE PUBLICATION", this.publication.name];
53
54
 
54
55
  if (this.publication.all_tables) {
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Publication } from "../publication.model.ts";
2
3
  import { DropPublicationChange } from "./publication.base.ts";
3
4
 
@@ -23,7 +24,7 @@ export class DropPublication extends DropPublicationChange {
23
24
  return [this.publication.stableId];
24
25
  }
25
26
 
26
- serialize(): string {
27
+ serialize(_options?: SerializeOptions): string {
27
28
  return `DROP PUBLICATION ${this.publication.name}`;
28
29
  }
29
30
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { RlsPolicy } from "../rls-policy.model.ts";
2
3
  import { AlterRlsPolicyChange } from "./rls-policy.base.ts";
3
4
 
@@ -38,7 +39,7 @@ export class AlterRlsPolicySetRoles extends AlterRlsPolicyChange {
38
39
  return [this.policy.stableId];
39
40
  }
40
41
 
41
- serialize(): string {
42
+ serialize(_options?: SerializeOptions): string {
42
43
  const targetRoles = this.roles;
43
44
  const toPublic =
44
45
  targetRoles.length === 0 ||
@@ -74,7 +75,7 @@ export class AlterRlsPolicySetUsingExpression extends AlterRlsPolicyChange {
74
75
  return [this.policy.stableId];
75
76
  }
76
77
 
77
- serialize(): string {
78
+ serialize(_options?: SerializeOptions): string {
78
79
  const expr = this.usingExpression ?? "true";
79
80
  return [
80
81
  "ALTER POLICY",
@@ -108,7 +109,7 @@ export class AlterRlsPolicySetWithCheckExpression extends AlterRlsPolicyChange {
108
109
  return [this.policy.stableId];
109
110
  }
110
111
 
111
- serialize(): string {
112
+ serialize(_options?: SerializeOptions): string {
112
113
  const expr = this.withCheckExpression ?? "true";
113
114
  return [
114
115
  "ALTER POLICY",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { RlsPolicy } from "../rls-policy.model.ts";
@@ -27,7 +28,7 @@ export class CreateCommentOnRlsPolicy extends CreateRlsPolicyChange {
27
28
  return [this.policy.stableId];
28
29
  }
29
30
 
30
- serialize(): string {
31
+ serialize(_options?: SerializeOptions): string {
31
32
  return [
32
33
  "COMMENT ON POLICY",
33
34
  this.policy.name,
@@ -57,7 +58,7 @@ export class DropCommentOnRlsPolicy extends DropRlsPolicyChange {
57
58
  return [stableId.comment(this.policy.stableId), this.policy.stableId];
58
59
  }
59
60
 
60
- serialize(): string {
61
+ serialize(_options?: SerializeOptions): string {
61
62
  return [
62
63
  "COMMENT ON POLICY",
63
64
  this.policy.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { RlsPolicy } from "../rls-policy.model.ts";
3
4
  import { CreateRlsPolicyChange } from "./rls-policy.base.ts";
@@ -47,7 +48,7 @@ export class CreateRlsPolicy extends CreateRlsPolicyChange {
47
48
  return Array.from(dependencies);
48
49
  }
49
50
 
50
- serialize(): string {
51
+ serialize(_options?: SerializeOptions): string {
51
52
  const parts: string[] = ["CREATE POLICY"];
52
53
 
53
54
  // Add policy name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { RlsPolicy } from "../rls-policy.model.ts";
2
3
  import { DropRlsPolicyChange } from "./rls-policy.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropRlsPolicy extends DropRlsPolicyChange {
28
29
  return [this.policy.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return [
33
34
  "DROP POLICY",
34
35
  this.policy.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { formatConfigValue } from "../../procedure/utils.ts";
2
3
  import type { Role } from "../role.model.ts";
3
4
  import { AlterRoleChange } from "./role.base.ts";
@@ -56,7 +57,7 @@ export class AlterRoleSetOptions extends AlterRoleChange {
56
57
  return [this.role.stableId];
57
58
  }
58
59
 
59
- serialize(): string {
60
+ serialize(_options?: SerializeOptions): string {
60
61
  const parts: string[] = ["ALTER ROLE", this.role.name];
61
62
  return [...parts, "WITH", this.options.join(" ")].join(" ");
62
63
  }
@@ -93,7 +94,7 @@ export class AlterRoleSetConfig extends AlterRoleChange {
93
94
  return [this.role.stableId];
94
95
  }
95
96
 
96
- serialize(): string {
97
+ serialize(_options?: SerializeOptions): string {
97
98
  const head = ["ALTER ROLE", this.role.name].join(" ");
98
99
  if (this.action === "reset_all") {
99
100
  return `${head} RESET ALL`;
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Role } from "../role.model.ts";
@@ -22,7 +23,7 @@ export class CreateCommentOnRole extends CreateRoleChange {
22
23
  return [this.role.stableId];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return [
27
28
  "COMMENT ON ROLE",
28
29
  this.role.name,
@@ -49,7 +50,7 @@ export class DropCommentOnRole extends DropRoleChange {
49
50
  return [stableId.comment(this.role.stableId), this.role.stableId];
50
51
  }
51
52
 
52
- serialize(): string {
53
+ serialize(_options?: SerializeOptions): string {
53
54
  return ["COMMENT ON ROLE", this.role.name, "IS NULL"].join(" ");
54
55
  }
55
56
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Role } from "../role.model.ts";
2
3
  import { CreateRoleChange } from "./role.base.ts";
3
4
 
@@ -41,7 +42,7 @@ export class CreateRole extends CreateRoleChange {
41
42
  return [this.role.stableId];
42
43
  }
43
44
 
44
- serialize(): string {
45
+ serialize(_options?: SerializeOptions): string {
45
46
  const parts: string[] = ["CREATE ROLE"];
46
47
 
47
48
  // Add role name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Role } from "../role.model.ts";
2
3
  import { DropRoleChange } from "./role.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropRole extends DropRoleChange {
28
29
  return [this.role.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return ["DROP ROLE", this.role.name].join(" ");
33
34
  }
34
35
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Role } from "../role.model.ts";
3
4
  import { CreateRoleChange, DropRoleChange } from "./role.base.ts";
@@ -50,7 +51,7 @@ export class GrantRoleMembership extends CreateRoleChange {
50
51
  return [this.role.stableId, stableId.role(this.member)];
51
52
  }
52
53
 
53
- serialize(): string {
54
+ serialize(_options?: SerializeOptions): string {
54
55
  // On creation, only emit ADMIN OPTION; leave INHERIT/SET to defaults
55
56
  const opts: string[] = [];
56
57
  if (this.options.admin) opts.push("ADMIN OPTION");
@@ -94,7 +95,7 @@ export class RevokeRoleMembership extends DropRoleChange {
94
95
  ];
95
96
  }
96
97
 
97
- serialize(): string {
98
+ serialize(_options?: SerializeOptions): string {
98
99
  return `REVOKE ${this.role.name} FROM ${this.member}`;
99
100
  }
100
101
  }
@@ -138,7 +139,7 @@ export class RevokeRoleMembershipOptions extends DropRoleChange {
138
139
  ];
139
140
  }
140
141
 
141
- serialize(): string {
142
+ serialize(_options?: SerializeOptions): string {
142
143
  const parts: string[] = [];
143
144
  if (this.admin) parts.push("ADMIN OPTION");
144
145
  if (this.inherit) parts.push("INHERIT OPTION");
@@ -197,7 +198,7 @@ export class GrantRoleDefaultPrivileges extends CreateRoleChange {
197
198
  ];
198
199
  }
199
200
 
200
- serialize(): string {
201
+ serialize(_options?: SerializeOptions): string {
201
202
  const scope = this.inSchema ? ` IN SCHEMA ${this.inSchema}` : "";
202
203
  const hasGrantable = this.privileges.some((p) => p.grantable);
203
204
  const hasBase = this.privileges.some((p) => !p.grantable);
@@ -272,7 +273,7 @@ export class RevokeRoleDefaultPrivileges extends DropRoleChange {
272
273
  ];
273
274
  }
274
275
 
275
- serialize(): string {
276
+ serialize(_options?: SerializeOptions): string {
276
277
  const scope = this.inSchema ? ` IN SCHEMA ${this.inSchema}` : "";
277
278
  const grantOptionPrivs = this.privileges
278
279
  .filter((p) => p.grantable)
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Rule, RuleEnabledState } from "../rule.model.ts";
3
4
  import { AlterRuleChange } from "./rule.base.ts";
@@ -22,7 +23,7 @@ export class ReplaceRule extends AlterRuleChange {
22
23
  ];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return new CreateRule({ rule: this.rule, orReplace: true }).serialize();
27
28
  }
28
29
  }
@@ -48,7 +49,7 @@ export class SetRuleEnabledState extends AlterRuleChange {
48
49
  ];
49
50
  }
50
51
 
51
- serialize(): string {
52
+ serialize(_options?: SerializeOptions): string {
52
53
  const clause = clauseForState(this.enabled);
53
54
  return `ALTER TABLE ${this.rule.schema}.${this.rule.table_name} ${clause} ${this.rule.name}`;
54
55
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Rule } from "../rule.model.ts";
@@ -20,7 +21,7 @@ export class CreateCommentOnRule extends CreateRuleChange {
20
21
  return [this.rule.stableId];
21
22
  }
22
23
 
23
- serialize(): string {
24
+ serialize(_options?: SerializeOptions): string {
24
25
  return [
25
26
  "COMMENT ON RULE",
26
27
  this.rule.name,
@@ -50,7 +51,7 @@ export class DropCommentOnRule extends DropRuleChange {
50
51
  return [stableId.comment(this.rule.stableId), this.rule.stableId];
51
52
  }
52
53
 
53
- serialize(): string {
54
+ serialize(_options?: SerializeOptions): string {
54
55
  return [
55
56
  "COMMENT ON RULE",
56
57
  this.rule.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Rule } from "../rule.model.ts";
3
4
  import { CreateRuleChange } from "./rule.base.ts";
@@ -26,7 +27,7 @@ export class CreateRule extends CreateRuleChange {
26
27
  ];
27
28
  }
28
29
 
29
- serialize(): string {
30
+ serialize(_options?: SerializeOptions): string {
30
31
  let definition = this.rule.definition.trim();
31
32
 
32
33
  definition = definition.replace(
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Rule } from "../rule.model.ts";
2
3
  import { DropRuleChange } from "./rule.base.ts";
3
4
 
@@ -18,7 +19,7 @@ export class DropRule extends DropRuleChange {
18
19
  return [this.rule.stableId, this.rule.relationStableId];
19
20
  }
20
21
 
21
- serialize(): string {
22
+ serialize(_options?: SerializeOptions): string {
22
23
  return [
23
24
  "DROP RULE",
24
25
  this.rule.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Schema } from "../schema.model.ts";
2
3
  import { AlterSchemaChange } from "./schema.base.ts";
3
4
 
@@ -33,7 +34,7 @@ export class AlterSchemaChangeOwner extends AlterSchemaChange {
33
34
  return [this.schema.stableId];
34
35
  }
35
36
 
36
- serialize(): string {
37
+ serialize(_options?: SerializeOptions): string {
37
38
  return ["ALTER SCHEMA", this.schema.name, "OWNER TO", this.owner].join(" ");
38
39
  }
39
40
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Schema } from "../schema.model.ts";
@@ -22,7 +23,7 @@ export class CreateCommentOnSchema extends CreateSchemaChange {
22
23
  return [this.schema.stableId];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return [
27
28
  "COMMENT ON SCHEMA",
28
29
  this.schema.name,
@@ -50,7 +51,7 @@ export class DropCommentOnSchema extends DropSchemaChange {
50
51
  return [stableId.comment(this.schema.stableId), this.schema.stableId];
51
52
  }
52
53
 
53
- serialize(): string {
54
+ serialize(_options?: SerializeOptions): string {
54
55
  return ["COMMENT ON SCHEMA", this.schema.name, "IS NULL"].join(" ");
55
56
  }
56
57
  }
@@ -1,7 +1,7 @@
1
+ import type { SchemaSerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Schema } from "../schema.model.ts";
3
4
  import { CreateSchemaChange } from "./schema.base.ts";
4
-
5
5
  /**
6
6
  * Create a schema.
7
7
  *
@@ -18,7 +18,7 @@ export class CreateSchema extends CreateSchemaChange {
18
18
  public readonly schema: Schema;
19
19
  public readonly scope = "object" as const;
20
20
 
21
- constructor(props: { schema: Schema; skipAuthorization?: boolean }) {
21
+ constructor(props: { schema: Schema } & SchemaSerializeOptions) {
22
22
  super();
23
23
  this.schema = props.schema;
24
24
  }
@@ -31,7 +31,7 @@ export class CreateSchema extends CreateSchemaChange {
31
31
  return [stableId.role(this.schema.owner)];
32
32
  }
33
33
 
34
- serialize(options?: { skipAuthorization?: boolean }): string {
34
+ serialize(options?: SchemaSerializeOptions): string {
35
35
  const parts: string[] = ["CREATE SCHEMA"];
36
36
 
37
37
  // Add schema name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Schema } from "../schema.model.ts";
2
3
  import { DropSchemaChange } from "./schema.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropSchema extends DropSchemaChange {
28
29
  return [this.schema.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return ["DROP SCHEMA", this.schema.name].join(" ");
33
34
  }
34
35
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -52,7 +53,7 @@ export class GrantSchemaPrivileges extends AlterSchemaChange {
52
53
  return [this.schema.stableId, stableId.role(this.grantee)];
53
54
  }
54
55
 
55
- serialize(): string {
56
+ serialize(_options?: SerializeOptions): string {
56
57
  const hasGrantable = this.privileges.some((p) => p.grantable);
57
58
  const hasBase = this.privileges.some((p) => !p.grantable);
58
59
  if (hasGrantable && hasBase) {
@@ -118,7 +119,7 @@ export class RevokeSchemaPrivileges extends AlterSchemaChange {
118
119
  ];
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  const kindPrefix = getObjectKindPrefix("SCHEMA");
123
124
  const list = this.privileges.map((p) => p.privilege);
124
125
  const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
@@ -162,7 +163,7 @@ export class RevokeGrantOptionSchemaPrivileges extends AlterSchemaChange {
162
163
  ];
163
164
  }
164
165
 
165
- serialize(): string {
166
+ serialize(_options?: SerializeOptions): string {
166
167
  const kindPrefix = getObjectKindPrefix("SCHEMA");
167
168
  const privSql = formatObjectPrivilegeList(
168
169
  "SCHEMA",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Sequence } from "../sequence.model.ts";
3
4
  import { AlterSequenceChange } from "./sequence.base.ts";
@@ -58,7 +59,7 @@ export class AlterSequenceSetOwnedBy extends AlterSequenceChange {
58
59
  ];
59
60
  }
60
61
 
61
- serialize(): string {
62
+ serialize(_options?: SerializeOptions): string {
62
63
  const head = [
63
64
  "ALTER SEQUENCE",
64
65
  `${this.sequence.schema}.${this.sequence.name}`,
@@ -99,7 +100,7 @@ export class AlterSequenceSetOptions extends AlterSequenceChange {
99
100
 
100
101
  // Note: default max computation moved to diff when building options
101
102
 
102
- serialize(): string {
103
+ serialize(_options?: SerializeOptions): string {
103
104
  const parts: string[] = [
104
105
  "ALTER SEQUENCE",
105
106
  `${this.sequence.schema}.${this.sequence.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Sequence } from "../sequence.model.ts";
@@ -22,7 +23,7 @@ export class CreateCommentOnSequence extends CreateSequenceChange {
22
23
  return [this.sequence.stableId];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return [
27
28
  "COMMENT ON SEQUENCE",
28
29
  `${this.sequence.schema}.${this.sequence.name}`,
@@ -50,7 +51,7 @@ export class DropCommentOnSequence extends DropSequenceChange {
50
51
  return [stableId.comment(this.sequence.stableId), this.sequence.stableId];
51
52
  }
52
53
 
53
- serialize(): string {
54
+ serialize(_options?: SerializeOptions): string {
54
55
  return [
55
56
  "COMMENT ON SEQUENCE",
56
57
  `${this.sequence.schema}.${this.sequence.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Sequence } from "../sequence.model.ts";
3
4
  import { CreateSequenceChange } from "./sequence.base.ts";
@@ -61,7 +62,7 @@ export class CreateSequence extends CreateSequenceChange {
61
62
  return Array.from(dependencies);
62
63
  }
63
64
 
64
- serialize(): string {
65
+ serialize(_options?: SerializeOptions): string {
65
66
  const parts: string[] = ["CREATE SEQUENCE"];
66
67
 
67
68
  // Add schema and name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Sequence } from "../sequence.model.ts";
2
3
  import { DropSequenceChange } from "./sequence.base.ts";
3
4
 
@@ -28,10 +29,22 @@ export class DropSequence extends DropSequenceChange {
28
29
  return [this.sequence.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
- return [
32
+ serialize(_options?: SerializeOptions): string {
33
+ const parts = [
33
34
  "DROP SEQUENCE",
34
35
  `${this.sequence.schema}.${this.sequence.name}`,
35
- ].join(" ");
36
+ ];
37
+
38
+ // Owned sequences still need CASCADE here because DROP runs in the earlier
39
+ // phase and later ALTER TABLE statements will re-establish the desired default.
40
+ if (
41
+ this.sequence.owned_by_schema &&
42
+ this.sequence.owned_by_table &&
43
+ this.sequence.owned_by_column
44
+ ) {
45
+ parts.push("CASCADE");
46
+ }
47
+
48
+ return parts.join(" ");
36
49
  }
37
50
  }