@contember/schema-migrations 2.1.0-rc.3 → 2.2.0-alpha.10

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 (598) hide show
  1. package/CLAUDE.md +16 -0
  2. package/dist/development/index.cjs +3 -0
  3. package/dist/development/index.cjs.map +1 -1
  4. package/dist/development/index.js +3 -0
  5. package/dist/development/index.js.map +1 -1
  6. package/dist/development/src/MigrationDescriber.cjs.map +1 -1
  7. package/dist/development/src/MigrationDescriber.js.map +1 -1
  8. package/dist/development/src/SchemaDiffer.cjs +27 -12
  9. package/dist/development/src/SchemaDiffer.cjs.map +1 -1
  10. package/dist/development/src/SchemaDiffer.js +27 -12
  11. package/dist/development/src/SchemaDiffer.js.map +1 -1
  12. package/dist/development/src/SchemaMigrator.cjs.map +1 -1
  13. package/dist/development/src/SchemaMigrator.js.map +1 -1
  14. package/dist/development/src/modifications/ModificationHandler.cjs.map +1 -1
  15. package/dist/development/src/modifications/ModificationHandler.js.map +1 -1
  16. package/dist/development/src/modifications/ModificationHandlerFactory.cjs +2 -0
  17. package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  18. package/dist/development/src/modifications/ModificationHandlerFactory.js +2 -0
  19. package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
  20. package/dist/development/src/modifications/NoopModification.cjs.map +1 -1
  21. package/dist/development/src/modifications/NoopModification.js.map +1 -1
  22. package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs +4 -6
  23. package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
  24. package/dist/development/src/modifications/acl/PatchAclSchemaModification.js +4 -6
  25. package/dist/development/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  26. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
  27. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  28. package/dist/development/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
  29. package/dist/development/src/modifications/actions/CreateTargetModification.js.map +1 -1
  30. package/dist/development/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
  31. package/dist/development/src/modifications/actions/CreateTriggerModification.js.map +1 -1
  32. package/dist/development/src/modifications/actions/PatchTriggerModification.cjs.map +1 -1
  33. package/dist/development/src/modifications/actions/PatchTriggerModification.js.map +1 -1
  34. package/dist/development/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
  35. package/dist/development/src/modifications/actions/RemoveTargetModification.js.map +1 -1
  36. package/dist/development/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
  37. package/dist/development/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
  38. package/dist/development/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
  39. package/dist/development/src/modifications/actions/UpdateTargetModification.js.map +1 -1
  40. package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  41. package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  42. package/dist/development/src/modifications/columns/CreateColumnModification.cjs +2 -1
  43. package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  44. package/dist/development/src/modifications/columns/CreateColumnModification.js +2 -1
  45. package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
  46. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  47. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  48. package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
  49. package/dist/development/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  50. package/dist/development/src/modifications/columns/columnUtils.cjs.map +1 -1
  51. package/dist/development/src/modifications/columns/columnUtils.js.map +1 -1
  52. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  53. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  54. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  55. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  56. package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
  57. package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
  58. package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs +4 -1
  59. package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
  60. package/dist/development/src/modifications/differs/RemoveViewDiffer.js +5 -2
  61. package/dist/development/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
  62. package/dist/development/src/modifications/differs/UpdateViewDiffer.cjs +45 -0
  63. package/dist/development/src/modifications/differs/UpdateViewDiffer.cjs.map +1 -0
  64. package/dist/development/src/modifications/differs/UpdateViewDiffer.js +45 -0
  65. package/dist/development/src/modifications/differs/UpdateViewDiffer.js.map +1 -0
  66. package/dist/development/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  67. package/dist/development/src/modifications/entities/CreateEntityModification.js.map +1 -1
  68. package/dist/development/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  69. package/dist/development/src/modifications/entities/CreateViewModification.js.map +1 -1
  70. package/dist/development/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  71. package/dist/development/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  72. package/dist/development/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
  73. package/dist/development/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  74. package/dist/development/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
  75. package/dist/development/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  76. package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
  77. package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
  78. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
  79. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  80. package/dist/development/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
  81. package/dist/development/src/modifications/entities/UpdateViewModification.js.map +1 -1
  82. package/dist/development/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
  83. package/dist/development/src/modifications/enums/CreateEnumModification.js.map +1 -1
  84. package/dist/development/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
  85. package/dist/development/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  86. package/dist/development/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
  87. package/dist/development/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  88. package/dist/development/src/modifications/enums/enumUtils.cjs.map +1 -1
  89. package/dist/development/src/modifications/enums/enumUtils.js.map +1 -1
  90. package/dist/development/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
  91. package/dist/development/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  92. package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs +10 -4
  93. package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
  94. package/dist/development/src/modifications/fields/UpdateFieldNameModification.js +10 -4
  95. package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  96. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs +23 -7
  97. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  98. package/dist/development/src/modifications/indexes/CreateIndexModification.js +23 -7
  99. package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  100. package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs +52 -17
  101. package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  102. package/dist/development/src/modifications/indexes/RemoveIndexModification.js +52 -17
  103. package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  104. package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs +140 -0
  105. package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs.map +1 -0
  106. package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js +140 -0
  107. package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js.map +1 -0
  108. package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
  109. package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  110. package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
  111. package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
  112. package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
  113. package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  114. package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
  115. package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  116. package/dist/development/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
  117. package/dist/development/src/modifications/relations/CreateRelationModification.js.map +1 -1
  118. package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
  119. package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  120. package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
  121. package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  122. package/dist/development/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
  123. package/dist/development/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  124. package/dist/development/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
  125. package/dist/development/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  126. package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
  127. package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  128. package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
  129. package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  130. package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
  131. package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  132. package/dist/development/src/modifications/relations/helpers.cjs.map +1 -1
  133. package/dist/development/src/modifications/relations/helpers.js.map +1 -1
  134. package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
  135. package/dist/development/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
  136. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  137. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  138. package/dist/development/src/modifications/utils/createJunctionTable.cjs.map +1 -1
  139. package/dist/development/src/modifications/utils/createJunctionTable.js.map +1 -1
  140. package/dist/development/src/modifications/utils/diffUtils.cjs.map +1 -1
  141. package/dist/development/src/modifications/utils/diffUtils.js.map +1 -1
  142. package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  143. package/dist/development/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  144. package/dist/development/src/modifications/utils/viewDependencies.cjs +15 -1
  145. package/dist/development/src/modifications/utils/viewDependencies.cjs.map +1 -1
  146. package/dist/development/src/modifications/utils/viewDependencies.js +16 -2
  147. package/dist/development/src/modifications/utils/viewDependencies.js.map +1 -1
  148. package/dist/development/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
  149. package/dist/development/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  150. package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
  151. package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  152. package/dist/development/src/utils/applyPatchCopyOnWrite.cjs +51 -0
  153. package/dist/development/src/utils/applyPatchCopyOnWrite.cjs.map +1 -0
  154. package/dist/development/src/utils/applyPatchCopyOnWrite.js +51 -0
  155. package/dist/development/src/utils/applyPatchCopyOnWrite.js.map +1 -0
  156. package/dist/production/index.cjs +3 -0
  157. package/dist/production/index.cjs.map +1 -1
  158. package/dist/production/index.js +3 -0
  159. package/dist/production/index.js.map +1 -1
  160. package/dist/production/src/MigrationDescriber.cjs.map +1 -1
  161. package/dist/production/src/MigrationDescriber.js.map +1 -1
  162. package/dist/production/src/SchemaDiffer.cjs +27 -12
  163. package/dist/production/src/SchemaDiffer.cjs.map +1 -1
  164. package/dist/production/src/SchemaDiffer.js +27 -12
  165. package/dist/production/src/SchemaDiffer.js.map +1 -1
  166. package/dist/production/src/SchemaMigrator.cjs.map +1 -1
  167. package/dist/production/src/SchemaMigrator.js.map +1 -1
  168. package/dist/production/src/modifications/ModificationHandler.cjs.map +1 -1
  169. package/dist/production/src/modifications/ModificationHandler.js.map +1 -1
  170. package/dist/production/src/modifications/ModificationHandlerFactory.cjs +2 -0
  171. package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  172. package/dist/production/src/modifications/ModificationHandlerFactory.js +2 -0
  173. package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
  174. package/dist/production/src/modifications/NoopModification.cjs.map +1 -1
  175. package/dist/production/src/modifications/NoopModification.js.map +1 -1
  176. package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs +4 -6
  177. package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
  178. package/dist/production/src/modifications/acl/PatchAclSchemaModification.js +4 -6
  179. package/dist/production/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  180. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
  181. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  182. package/dist/production/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
  183. package/dist/production/src/modifications/actions/CreateTargetModification.js.map +1 -1
  184. package/dist/production/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
  185. package/dist/production/src/modifications/actions/CreateTriggerModification.js.map +1 -1
  186. package/dist/production/src/modifications/actions/PatchTriggerModification.cjs.map +1 -1
  187. package/dist/production/src/modifications/actions/PatchTriggerModification.js.map +1 -1
  188. package/dist/production/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
  189. package/dist/production/src/modifications/actions/RemoveTargetModification.js.map +1 -1
  190. package/dist/production/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
  191. package/dist/production/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
  192. package/dist/production/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
  193. package/dist/production/src/modifications/actions/UpdateTargetModification.js.map +1 -1
  194. package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  195. package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  196. package/dist/production/src/modifications/columns/CreateColumnModification.cjs +2 -1
  197. package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  198. package/dist/production/src/modifications/columns/CreateColumnModification.js +2 -1
  199. package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
  200. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  201. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  202. package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
  203. package/dist/production/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  204. package/dist/production/src/modifications/columns/columnUtils.cjs.map +1 -1
  205. package/dist/production/src/modifications/columns/columnUtils.js.map +1 -1
  206. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  207. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  208. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  209. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  210. package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
  211. package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
  212. package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs +4 -1
  213. package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
  214. package/dist/production/src/modifications/differs/RemoveViewDiffer.js +5 -2
  215. package/dist/production/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
  216. package/dist/production/src/modifications/differs/UpdateViewDiffer.cjs +45 -0
  217. package/dist/production/src/modifications/differs/UpdateViewDiffer.cjs.map +1 -0
  218. package/dist/production/src/modifications/differs/UpdateViewDiffer.js +45 -0
  219. package/dist/production/src/modifications/differs/UpdateViewDiffer.js.map +1 -0
  220. package/dist/production/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  221. package/dist/production/src/modifications/entities/CreateEntityModification.js.map +1 -1
  222. package/dist/production/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  223. package/dist/production/src/modifications/entities/CreateViewModification.js.map +1 -1
  224. package/dist/production/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  225. package/dist/production/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  226. package/dist/production/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
  227. package/dist/production/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  228. package/dist/production/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
  229. package/dist/production/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  230. package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
  231. package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
  232. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
  233. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  234. package/dist/production/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
  235. package/dist/production/src/modifications/entities/UpdateViewModification.js.map +1 -1
  236. package/dist/production/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
  237. package/dist/production/src/modifications/enums/CreateEnumModification.js.map +1 -1
  238. package/dist/production/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
  239. package/dist/production/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  240. package/dist/production/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
  241. package/dist/production/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  242. package/dist/production/src/modifications/enums/enumUtils.cjs.map +1 -1
  243. package/dist/production/src/modifications/enums/enumUtils.js.map +1 -1
  244. package/dist/production/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
  245. package/dist/production/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  246. package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs +10 -4
  247. package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
  248. package/dist/production/src/modifications/fields/UpdateFieldNameModification.js +10 -4
  249. package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  250. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs +23 -7
  251. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  252. package/dist/production/src/modifications/indexes/CreateIndexModification.js +23 -7
  253. package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  254. package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs +52 -17
  255. package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  256. package/dist/production/src/modifications/indexes/RemoveIndexModification.js +52 -17
  257. package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  258. package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs +140 -0
  259. package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs.map +1 -0
  260. package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js +140 -0
  261. package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js.map +1 -0
  262. package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
  263. package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  264. package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
  265. package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
  266. package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
  267. package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  268. package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
  269. package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  270. package/dist/production/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
  271. package/dist/production/src/modifications/relations/CreateRelationModification.js.map +1 -1
  272. package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
  273. package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  274. package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
  275. package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  276. package/dist/production/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
  277. package/dist/production/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  278. package/dist/production/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
  279. package/dist/production/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  280. package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
  281. package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  282. package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
  283. package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  284. package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
  285. package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  286. package/dist/production/src/modifications/relations/helpers.cjs.map +1 -1
  287. package/dist/production/src/modifications/relations/helpers.js.map +1 -1
  288. package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
  289. package/dist/production/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
  290. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  291. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  292. package/dist/production/src/modifications/utils/createJunctionTable.cjs.map +1 -1
  293. package/dist/production/src/modifications/utils/createJunctionTable.js.map +1 -1
  294. package/dist/production/src/modifications/utils/diffUtils.cjs.map +1 -1
  295. package/dist/production/src/modifications/utils/diffUtils.js.map +1 -1
  296. package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  297. package/dist/production/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  298. package/dist/production/src/modifications/utils/viewDependencies.cjs +15 -1
  299. package/dist/production/src/modifications/utils/viewDependencies.cjs.map +1 -1
  300. package/dist/production/src/modifications/utils/viewDependencies.js +16 -2
  301. package/dist/production/src/modifications/utils/viewDependencies.js.map +1 -1
  302. package/dist/production/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
  303. package/dist/production/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  304. package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
  305. package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  306. package/dist/production/src/utils/applyPatchCopyOnWrite.cjs +51 -0
  307. package/dist/production/src/utils/applyPatchCopyOnWrite.cjs.map +1 -0
  308. package/dist/production/src/utils/applyPatchCopyOnWrite.js +51 -0
  309. package/dist/production/src/utils/applyPatchCopyOnWrite.js.map +1 -0
  310. package/dist/tests/cases/integration/convertManyHasManyToJoiningEntity.test.d.ts +2 -0
  311. package/dist/tests/cases/integration/convertManyHasManyToJoiningEntity.test.d.ts.map +1 -0
  312. package/dist/tests/cases/integration/skipNonModelDiffers.test.d.ts +2 -0
  313. package/dist/tests/cases/integration/skipNonModelDiffers.test.d.ts.map +1 -0
  314. package/dist/tests/cases/unit/patchAclSchemaModification.test.d.ts +2 -0
  315. package/dist/tests/cases/unit/patchAclSchemaModification.test.d.ts.map +1 -0
  316. package/dist/tests/src/tags.d.ts.map +1 -1
  317. package/dist/tests/src/tests.d.ts +4 -3
  318. package/dist/tests/src/tests.d.ts.map +1 -1
  319. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  320. package/dist/types/Migration.d.ts.map +1 -1
  321. package/dist/types/MigrationDescriber.d.ts +2 -2
  322. package/dist/types/MigrationDescriber.d.ts.map +1 -1
  323. package/dist/types/SchemaDiffer.d.ts +12 -5
  324. package/dist/types/SchemaDiffer.d.ts.map +1 -1
  325. package/dist/types/SchemaMigrator.d.ts +2 -2
  326. package/dist/types/SchemaMigrator.d.ts.map +1 -1
  327. package/dist/types/index.d.ts +6 -6
  328. package/dist/types/index.d.ts.map +1 -1
  329. package/dist/types/modifications/ModificationHandler.d.ts +2 -2
  330. package/dist/types/modifications/ModificationHandler.d.ts.map +1 -1
  331. package/dist/types/modifications/ModificationHandlerFactory.d.ts +1 -1
  332. package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  333. package/dist/types/modifications/NoopModification.d.ts +2 -2
  334. package/dist/types/modifications/NoopModification.d.ts.map +1 -1
  335. package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts +3 -3
  336. package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
  337. package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts +4 -4
  338. package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
  339. package/dist/types/modifications/acl/index.d.ts +2 -2
  340. package/dist/types/modifications/acl/index.d.ts.map +1 -1
  341. package/dist/types/modifications/actions/CreateTargetModification.d.ts +4 -4
  342. package/dist/types/modifications/actions/CreateTargetModification.d.ts.map +1 -1
  343. package/dist/types/modifications/actions/CreateTriggerModification.d.ts +4 -4
  344. package/dist/types/modifications/actions/CreateTriggerModification.d.ts.map +1 -1
  345. package/dist/types/modifications/actions/PatchTriggerModification.d.ts +3 -3
  346. package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -1
  347. package/dist/types/modifications/actions/RemoveTargetModification.d.ts +4 -4
  348. package/dist/types/modifications/actions/RemoveTargetModification.d.ts.map +1 -1
  349. package/dist/types/modifications/actions/RemoveTriggerModification.d.ts +4 -4
  350. package/dist/types/modifications/actions/RemoveTriggerModification.d.ts.map +1 -1
  351. package/dist/types/modifications/actions/UpdateTargetModification.d.ts +4 -4
  352. package/dist/types/modifications/actions/UpdateTargetModification.d.ts.map +1 -1
  353. package/dist/types/modifications/actions/UpdateTriggerModification.d.ts +4 -4
  354. package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
  355. package/dist/types/modifications/actions/index.d.ts +4 -4
  356. package/dist/types/modifications/actions/index.d.ts.map +1 -1
  357. package/dist/types/modifications/columns/CreateColumnModification.d.ts +4 -4
  358. package/dist/types/modifications/columns/CreateColumnModification.d.ts.map +1 -1
  359. package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts +4 -4
  360. package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  361. package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts +4 -4
  362. package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
  363. package/dist/types/modifications/columns/columnUtils.d.ts +1 -1
  364. package/dist/types/modifications/columns/columnUtils.d.ts.map +1 -1
  365. package/dist/types/modifications/columns/index.d.ts +3 -3
  366. package/dist/types/modifications/columns/index.d.ts.map +1 -1
  367. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts +4 -4
  368. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  369. package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts +4 -4
  370. package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
  371. package/dist/types/modifications/constraints/index.d.ts +3 -3
  372. package/dist/types/modifications/constraints/index.d.ts.map +1 -1
  373. package/dist/types/modifications/constraints/utils.d.ts.map +1 -1
  374. package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts +2 -2
  375. package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts.map +1 -1
  376. package/dist/types/modifications/differs/RemoveViewDiffer.d.ts +14 -3
  377. package/dist/types/modifications/differs/RemoveViewDiffer.d.ts.map +1 -1
  378. package/dist/types/modifications/differs/UpdateViewDiffer.d.ts +19 -0
  379. package/dist/types/modifications/differs/UpdateViewDiffer.d.ts.map +1 -0
  380. package/dist/types/modifications/differs/index.d.ts +3 -2
  381. package/dist/types/modifications/differs/index.d.ts.map +1 -1
  382. package/dist/types/modifications/entities/CreateEntityModification.d.ts +4 -4
  383. package/dist/types/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  384. package/dist/types/modifications/entities/CreateViewModification.d.ts +4 -4
  385. package/dist/types/modifications/entities/CreateViewModification.d.ts.map +1 -1
  386. package/dist/types/modifications/entities/RemoveEntityModification.d.ts +4 -4
  387. package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
  388. package/dist/types/modifications/entities/ToggleEventLogModification.d.ts +4 -4
  389. package/dist/types/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
  390. package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts +3 -3
  391. package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
  392. package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts +4 -4
  393. package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -1
  394. package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts +4 -4
  395. package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
  396. package/dist/types/modifications/entities/UpdateViewModification.d.ts +3 -3
  397. package/dist/types/modifications/entities/UpdateViewModification.d.ts.map +1 -1
  398. package/dist/types/modifications/entities/index.d.ts +7 -7
  399. package/dist/types/modifications/entities/index.d.ts.map +1 -1
  400. package/dist/types/modifications/enums/CreateEnumModification.d.ts +4 -4
  401. package/dist/types/modifications/enums/CreateEnumModification.d.ts.map +1 -1
  402. package/dist/types/modifications/enums/RemoveEnumModification.d.ts +4 -4
  403. package/dist/types/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
  404. package/dist/types/modifications/enums/UpdateEnumModification.d.ts +4 -4
  405. package/dist/types/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
  406. package/dist/types/modifications/enums/enumUtils.d.ts.map +1 -1
  407. package/dist/types/modifications/enums/index.d.ts +3 -3
  408. package/dist/types/modifications/enums/index.d.ts.map +1 -1
  409. package/dist/types/modifications/fields/RemoveFieldModification.d.ts +4 -4
  410. package/dist/types/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
  411. package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts +3 -3
  412. package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
  413. package/dist/types/modifications/fields/index.d.ts +2 -2
  414. package/dist/types/modifications/fields/index.d.ts.map +1 -1
  415. package/dist/types/modifications/index.d.ts +13 -13
  416. package/dist/types/modifications/index.d.ts.map +1 -1
  417. package/dist/types/modifications/indexes/CreateIndexModification.d.ts +4 -4
  418. package/dist/types/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
  419. package/dist/types/modifications/indexes/RemoveIndexModification.d.ts +18 -6
  420. package/dist/types/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
  421. package/dist/types/modifications/indexes/index.d.ts +2 -2
  422. package/dist/types/modifications/indexes/index.d.ts.map +1 -1
  423. package/dist/types/modifications/indexes/utils.d.ts.map +1 -1
  424. package/dist/types/modifications/relations/ConvertManyHasManyToJoiningEntityModification.d.ts +52 -0
  425. package/dist/types/modifications/relations/ConvertManyHasManyToJoiningEntityModification.d.ts.map +1 -0
  426. package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +5 -5
  427. package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
  428. package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts +4 -4
  429. package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts.map +1 -1
  430. package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts +4 -4
  431. package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
  432. package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts +4 -4
  433. package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
  434. package/dist/types/modifications/relations/CreateRelationModification.d.ts +5 -5
  435. package/dist/types/modifications/relations/CreateRelationModification.d.ts.map +1 -1
  436. package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts +4 -4
  437. package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
  438. package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts +4 -4
  439. package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
  440. package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts +4 -4
  441. package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
  442. package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts +4 -4
  443. package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
  444. package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts +4 -4
  445. package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
  446. package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts +4 -4
  447. package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
  448. package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts +4 -4
  449. package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
  450. package/dist/types/modifications/relations/helpers.d.ts.map +1 -1
  451. package/dist/types/modifications/relations/index.d.ts +12 -11
  452. package/dist/types/modifications/relations/index.d.ts.map +1 -1
  453. package/dist/types/modifications/relations/normalization.d.ts.map +1 -1
  454. package/dist/types/modifications/settings/UpdateSettingsModification.d.ts +4 -4
  455. package/dist/types/modifications/settings/UpdateSettingsModification.d.ts.map +1 -1
  456. package/dist/types/modifications/settings/index.d.ts +1 -1
  457. package/dist/types/modifications/settings/index.d.ts.map +1 -1
  458. package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts +3 -3
  459. package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -1
  460. package/dist/types/modifications/utils/columnUtils.d.ts +1 -1
  461. package/dist/types/modifications/utils/columnUtils.d.ts.map +1 -1
  462. package/dist/types/modifications/utils/createJunctionTable.d.ts.map +1 -1
  463. package/dist/types/modifications/utils/diffUtils.d.ts +1 -1
  464. package/dist/types/modifications/utils/diffUtils.d.ts.map +1 -1
  465. package/dist/types/modifications/utils/getPrimaryColumnType.d.ts.map +1 -1
  466. package/dist/types/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
  467. package/dist/types/modifications/utils/sqlUpdateUtils.d.ts.map +1 -1
  468. package/dist/types/modifications/utils/stringArrayEquals.d.ts.map +1 -1
  469. package/dist/types/modifications/utils/valueUtils.d.ts.map +1 -1
  470. package/dist/types/modifications/utils/viewDependencies.d.ts +11 -1
  471. package/dist/types/modifications/utils/viewDependencies.d.ts.map +1 -1
  472. package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts +3 -3
  473. package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
  474. package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts +4 -4
  475. package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
  476. package/dist/types/modifications/validation/index.d.ts +2 -2
  477. package/dist/types/modifications/validation/index.d.ts.map +1 -1
  478. package/dist/types/tsconfig.tsbuildinfo +1 -1
  479. package/dist/types/utils/applyPatchCopyOnWrite.d.ts +10 -0
  480. package/dist/types/utils/applyPatchCopyOnWrite.d.ts.map +1 -0
  481. package/dist/types/utils/dbHelpers.d.ts.map +1 -1
  482. package/dist/types/utils/isDefined.d.ts.map +1 -1
  483. package/dist/types/utils/isIt.d.ts.map +1 -1
  484. package/package.json +7 -7
  485. package/src/MigrationDescriber.ts +2 -2
  486. package/src/SchemaDiffer.ts +52 -25
  487. package/src/SchemaMigrator.ts +2 -2
  488. package/src/index.ts +6 -6
  489. package/src/modifications/ModificationHandler.ts +2 -2
  490. package/src/modifications/ModificationHandlerFactory.ts +21 -19
  491. package/src/modifications/NoopModification.ts +2 -2
  492. package/src/modifications/acl/PatchAclSchemaModification.ts +7 -8
  493. package/src/modifications/acl/UpdateAclSchemaModification.ts +3 -3
  494. package/src/modifications/acl/index.ts +2 -2
  495. package/src/modifications/actions/CreateTargetModification.ts +2 -2
  496. package/src/modifications/actions/CreateTriggerModification.ts +2 -2
  497. package/src/modifications/actions/PatchTriggerModification.ts +3 -3
  498. package/src/modifications/actions/RemoveTargetModification.ts +2 -2
  499. package/src/modifications/actions/RemoveTriggerModification.ts +2 -2
  500. package/src/modifications/actions/UpdateTargetModification.ts +2 -2
  501. package/src/modifications/actions/UpdateTriggerModification.ts +3 -3
  502. package/src/modifications/actions/index.ts +4 -4
  503. package/src/modifications/columns/CreateColumnModification.ts +7 -6
  504. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +6 -6
  505. package/src/modifications/columns/UpdateColumnNameModification.ts +3 -3
  506. package/src/modifications/columns/columnUtils.ts +1 -1
  507. package/src/modifications/columns/index.ts +3 -3
  508. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +4 -4
  509. package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +4 -4
  510. package/src/modifications/constraints/index.ts +3 -3
  511. package/src/modifications/differs/RemoveChangedFieldDiffer.ts +3 -3
  512. package/src/modifications/differs/RemoveViewDiffer.ts +17 -5
  513. package/src/modifications/differs/UpdateViewDiffer.ts +58 -0
  514. package/src/modifications/differs/index.ts +3 -2
  515. package/src/modifications/entities/CreateEntityModification.ts +5 -5
  516. package/src/modifications/entities/CreateViewModification.ts +3 -3
  517. package/src/modifications/entities/RemoveEntityModification.ts +4 -4
  518. package/src/modifications/entities/ToggleEventLogModification.ts +3 -3
  519. package/src/modifications/entities/UpdateEntityNameModification.ts +12 -7
  520. package/src/modifications/entities/UpdateEntityOrderByModification.ts +2 -2
  521. package/src/modifications/entities/UpdateEntityTableNameModification.ts +2 -2
  522. package/src/modifications/entities/UpdateViewModification.ts +2 -2
  523. package/src/modifications/entities/index.ts +7 -7
  524. package/src/modifications/enums/CreateEnumModification.ts +3 -3
  525. package/src/modifications/enums/RemoveEnumModification.ts +2 -2
  526. package/src/modifications/enums/UpdateEnumModification.ts +4 -4
  527. package/src/modifications/enums/enumUtils.ts +1 -1
  528. package/src/modifications/enums/index.ts +3 -3
  529. package/src/modifications/fields/RemoveFieldModification.ts +3 -3
  530. package/src/modifications/fields/UpdateFieldNameModification.ts +26 -10
  531. package/src/modifications/fields/index.ts +2 -2
  532. package/src/modifications/index.ts +13 -13
  533. package/src/modifications/indexes/CreateIndexModification.ts +47 -11
  534. package/src/modifications/indexes/RemoveIndexModification.ts +92 -23
  535. package/src/modifications/indexes/index.ts +2 -2
  536. package/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.ts +218 -0
  537. package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +7 -7
  538. package/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts +6 -6
  539. package/src/modifications/relations/ConvertOneToManyRelationModification.ts +6 -6
  540. package/src/modifications/relations/CreateRelationInverseSideModification.ts +3 -3
  541. package/src/modifications/relations/CreateRelationModification.ts +9 -9
  542. package/src/modifications/relations/DisableOrphanRemovalModification.ts +3 -3
  543. package/src/modifications/relations/EnableOrphanRemovalModification.ts +3 -3
  544. package/src/modifications/relations/MakeRelationNotNullModification.ts +4 -4
  545. package/src/modifications/relations/MakeRelationNullableModification.ts +4 -4
  546. package/src/modifications/relations/ToggleJunctionEventLogModification.ts +5 -5
  547. package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +5 -5
  548. package/src/modifications/relations/UpdateRelationOrderByModification.ts +3 -3
  549. package/src/modifications/relations/helpers.ts +1 -1
  550. package/src/modifications/relations/index.ts +12 -11
  551. package/src/modifications/settings/UpdateSettingsModification.ts +2 -2
  552. package/src/modifications/settings/index.ts +1 -1
  553. package/src/modifications/upgrade/RemoveIndexNamesModification.ts +2 -2
  554. package/src/modifications/utils/createJunctionTable.ts +3 -3
  555. package/src/modifications/utils/diffUtils.ts +2 -2
  556. package/src/modifications/utils/schemaUpdateUtils.ts +3 -3
  557. package/src/modifications/utils/viewDependencies.ts +26 -2
  558. package/src/modifications/validation/PatchValidationSchemaModification.ts +3 -3
  559. package/src/modifications/validation/UpdateValidationSchemaModification.ts +3 -3
  560. package/src/modifications/validation/index.ts +2 -2
  561. package/src/utils/applyPatchCopyOnWrite.ts +63 -0
  562. package/tests/cases/integration/convertManyHasManyToJoiningEntity.test.ts +339 -0
  563. package/tests/cases/integration/convertManyHasOneToOneHasOneRelation.test.ts +2 -2
  564. package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +2 -2
  565. package/tests/cases/integration/convertOneToManyRelation.test.ts +2 -2
  566. package/tests/cases/integration/createAndDropIndex.test.ts +482 -3
  567. package/tests/cases/integration/createColumn.test.ts +57 -2
  568. package/tests/cases/integration/createEntity.test.ts +2 -2
  569. package/tests/cases/integration/createEnum.test.ts +2 -2
  570. package/tests/cases/integration/createManyHasMany.test.ts +2 -2
  571. package/tests/cases/integration/createManyHasOne.test.ts +2 -2
  572. package/tests/cases/integration/createOneHasMany.test.ts +2 -2
  573. package/tests/cases/integration/createOneHasOne.test.ts +2 -2
  574. package/tests/cases/integration/createRelationInverseSide.test.ts +2 -2
  575. package/tests/cases/integration/createUnique.test.ts +3 -3
  576. package/tests/cases/integration/disableOrphanRemoval.test.ts +2 -2
  577. package/tests/cases/integration/enableOrphanRemoval.test.ts +2 -2
  578. package/tests/cases/integration/makeColumnNotNull.test.ts +2 -2
  579. package/tests/cases/integration/makeRelationNotNull.test.ts +2 -2
  580. package/tests/cases/integration/makeRelationNullable.test.ts +2 -2
  581. package/tests/cases/integration/patchAclSchema.test.ts +2 -2
  582. package/tests/cases/integration/patchTrigger.test.ts +1 -1
  583. package/tests/cases/integration/removeEntity.test.ts +2 -2
  584. package/tests/cases/integration/removeEnum.test.ts +2 -2
  585. package/tests/cases/integration/removeField.test.ts +3 -3
  586. package/tests/cases/integration/skipNonModelDiffers.test.ts +97 -0
  587. package/tests/cases/integration/toggleEventLog.test.ts +2 -2
  588. package/tests/cases/integration/toggleJunctionEventLog.test.ts +2 -2
  589. package/tests/cases/integration/updateColumnDefinition.test.ts +3 -3
  590. package/tests/cases/integration/updateEntityName.test.ts +2 -2
  591. package/tests/cases/integration/updateEntityOrderBy.test.ts +2 -2
  592. package/tests/cases/integration/updateEnum.test.ts +2 -2
  593. package/tests/cases/integration/updateFieldName.test.ts +38 -3
  594. package/tests/cases/integration/updateRelationOnDelete.test.ts +2 -2
  595. package/tests/cases/integration/updateRelationOrderBy.test.ts +2 -2
  596. package/tests/cases/integration/updateView.test.ts +221 -233
  597. package/tests/cases/unit/patchAclSchemaModification.test.ts +144 -0
  598. package/tests/src/tests.ts +6 -4
@@ -1,10 +1,19 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
- import { Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
4
- import { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'
2
+ import { Model, Schema } from '@contember/schema'
3
+ import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'
4
+ import { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'
5
5
  import deepEqual from 'fast-deep-equal'
6
- import { getIndexColumns } from './utils'
7
- import { wrapIdentifier } from '../../utils/dbHelpers'
6
+ import { getIndexColumns } from './utils.js'
7
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
8
+
9
+ type IndexIdentity = Pick<Model.Index, 'fields' | 'where' | 'include' | 'columnOptions' | 'method' | 'opClass'>
10
+ const indexIdentityEquals = (a: IndexIdentity, b: IndexIdentity) =>
11
+ deepEqual(a.fields, b.fields)
12
+ && (a.where ?? undefined) === (b.where ?? undefined)
13
+ && deepEqual(a.include ?? undefined, b.include ?? undefined)
14
+ && deepEqual(a.columnOptions ?? undefined, b.columnOptions ?? undefined)
15
+ && (a.method ?? undefined) === (b.method ?? undefined)
16
+ && (a.opClass ?? undefined) === (b.opClass ?? undefined)
8
17
 
9
18
  export class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {
10
19
  constructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}
@@ -14,16 +23,38 @@ export class RemoveIndexModificationHandler implements ModificationHandler<Remov
14
23
  if (entity.view && !entity.view.materialized) {
15
24
  return
16
25
  }
17
- const fields = this.getFields()
26
+ const index = this.getIndex()
18
27
 
19
- const columns = getIndexColumns({
20
- entity,
21
- fields,
22
- model: this.schema.model,
23
- })
28
+ // The DB-metadata layer (DatabaseMetadataResolver) exposes only table + columns (as an unordered
29
+ // set) + uniqueness, so the physical DROP is matched by table + columns. Postgres' pg_index.indkey
30
+ // includes the INCLUDE columns alongside the key columns, so a covering index's metadata lists both —
31
+ // we match the same combined set here. Everything else that distinguishes two indexes on the same
32
+ // column set — the partial WHERE predicate, per-column options (sort order / NULLS / operator class),
33
+ // key-column ORDER (the set comparison is order-insensitive), the index method, and the index-level
34
+ // operator class — is invisible to the metadata, so such siblings are indistinguishable here. We
35
+ // detect that ambiguity below and fail loudly rather than DROP a sibling the schema still expects to
36
+ // keep. Schema-level identity (see getSchemaUpdater) IS fully aware of these discriminators, so the
37
+ // diff itself never conflates them.
38
+ const columns = [
39
+ ...getIndexColumns({ entity, fields: index.fields, model: this.schema.model }),
40
+ ...(index.include ? getIndexColumns({ entity, fields: index.include, model: this.schema.model }) : []),
41
+ ]
24
42
 
25
43
  const indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns, unique: false }).getNames()
26
44
 
45
+ // If more than one physical index matches these columns we cannot tell which one this modification
46
+ // targets (the metadata hides the predicate / per-column options / column order / index method /
47
+ // index-level operator class that distinguish them). Dropping every match would silently take out an
48
+ // index the schema still expects — refuse instead, so the obsolete one can be dropped by hand.
49
+ if (indexNames.length > 1) {
50
+ throw new Error(
51
+ `Cannot unambiguously drop index on entity ${this.data.entityName} (${index.fields.join(', ')}): `
52
+ + `${indexNames.length} indexes match these columns and the database metadata does not expose the predicate (where), `
53
+ + `per-column options (sort order / NULLS / operator class), column order, index method or index-level operator class that distinguish them. `
54
+ + `Drop the obsolete index manually.`,
55
+ )
56
+ }
57
+
27
58
  for (const name of indexNames) {
28
59
  builder.sql(`DROP INDEX ${wrapIdentifier(name)}`)
29
60
  }
@@ -31,10 +62,10 @@ export class RemoveIndexModificationHandler implements ModificationHandler<Remov
31
62
  }
32
63
 
33
64
  public getSchemaUpdater(): SchemaUpdater {
34
- const fields = this.getFields()
65
+ const index = this.getIndex()
35
66
  return updateModel(
36
67
  updateEntity(this.data.entityName, ({ entity }) => {
37
- const indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))
68
+ const indexes = entity.indexes.filter(it => !indexIdentityEquals(it, index))
38
69
  return {
39
70
  ...entity,
40
71
  indexes,
@@ -44,19 +75,38 @@ export class RemoveIndexModificationHandler implements ModificationHandler<Remov
44
75
  }
45
76
 
46
77
  describe() {
47
- const fields = this.getFields()
48
- return { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }
78
+ const index = this.getIndex()
79
+ return { message: `Remove index (${index.fields.join(', ')}) on entity ${this.data.entityName}` }
49
80
  }
50
81
 
51
- getFields() {
52
- const entity = this.schema.model.entities[this.data.entityName]
53
- const fields = 'indexName' in this.data
54
- ? entity.indexes.find(it => it.name === this.data.indexName)?.fields
55
- : this.data.fields
56
- if (!fields) {
57
- throw new Error()
82
+ private getIndex(): IndexIdentity {
83
+ const { entityName } = this.data
84
+ const entity = this.schema.model.entities[entityName]
85
+ if ('indexName' in this.data && this.data.indexName !== undefined) {
86
+ const index = entity.indexes.find(it => it.name === this.data.indexName)
87
+ if (!index) {
88
+ throw new Error(`Index named "${this.data.indexName}" not found on entity ${entityName}`)
89
+ }
90
+ return {
91
+ fields: index.fields,
92
+ where: index.where,
93
+ include: index.include,
94
+ columnOptions: index.columnOptions,
95
+ method: index.method,
96
+ opClass: index.opClass,
97
+ }
98
+ }
99
+ if (!this.data.fields) {
100
+ throw new Error(`removeIndex modification on entity ${entityName} requires either "indexName" or "fields"`)
101
+ }
102
+ return {
103
+ fields: this.data.fields,
104
+ where: this.data.where,
105
+ include: this.data.include,
106
+ columnOptions: this.data.columnOptions,
107
+ method: this.data.method,
108
+ opClass: this.data.opClass,
58
109
  }
59
- return fields
60
110
  }
61
111
  }
62
112
 
@@ -70,10 +120,20 @@ export type RemoveIndexModificationData =
70
120
  entityName: string
71
121
  indexName: string
72
122
  fields?: never
123
+ where?: never
124
+ include?: never
125
+ columnOptions?: never
126
+ method?: never
127
+ opClass?: never
73
128
  }
74
129
  | {
75
130
  entityName: string
76
131
  fields: readonly string[]
132
+ where?: string
133
+ include?: readonly string[]
134
+ columnOptions?: { readonly [field: string]: Model.IndexColumnOptions }
135
+ method?: Model.IndexMethod
136
+ opClass?: string
77
137
  indexName?: never
78
138
  }
79
139
 
@@ -94,6 +154,15 @@ export class RemoveIndexDiffer implements Differ {
94
154
  removeIndexModification.createModification({
95
155
  entityName: entity.name,
96
156
  fields: index.fields,
157
+ // keep every identity-bearing option (WHERE/INCLUDE/columnOptions/method/opClass) in the
158
+ // modification so indexes that share the same key columns but differ by any of them are
159
+ // removed individually; omit the keys when absent to keep legacy migration JSON
160
+ // byte-for-byte identical.
161
+ ...(index.where !== undefined ? { where: index.where } : {}),
162
+ ...(index.include !== undefined ? { include: index.include } : {}),
163
+ ...(index.columnOptions !== undefined ? { columnOptions: index.columnOptions } : {}),
164
+ ...(index.method !== undefined ? { method: index.method } : {}),
165
+ ...(index.opClass !== undefined ? { opClass: index.opClass } : {}),
97
166
  })
98
167
  )
99
168
  )
@@ -1,2 +1,2 @@
1
- export * from './CreateIndexModification'
2
- export * from './RemoveIndexModification'
1
+ export * from './CreateIndexModification.js'
2
+ export * from './RemoveIndexModification.js'
@@ -0,0 +1,218 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Model, Schema } from '@contember/schema'
3
+ import { addField, removeField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils.js'
4
+ import {
5
+ createModificationType,
6
+ ModificationHandler,
7
+ ModificationHandlerCreateSqlOptions,
8
+ ModificationHandlerOptions,
9
+ } from '../ModificationHandler.js'
10
+ import { createEventTrigger, createEventTrxTrigger, dropEventTrigger, dropEventTrxTrigger } from '../utils/sqlUpdateUtils.js'
11
+ import { getColumnSqlType } from '../utils/columnUtils.js'
12
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
13
+ import { VERSION_LATEST } from '../ModificationVersions.js'
14
+ import { PossibleEntityShapeInMigrations } from '../../utils/PartialEntity.js'
15
+
16
+ /**
17
+ * Promotes an implicit many-has-many relation (backed by a junction table with a composite primary key)
18
+ * into an explicit joining entity, while preserving all existing rows in the junction table.
19
+ *
20
+ * The junction table is reused in place — no data is copied:
21
+ * - a surrogate `id` (uuid) primary key column is added and back-filled (see {@link uuidGenerator}),
22
+ * - the original composite primary key is dropped and the new `id` becomes the primary key,
23
+ * - both foreign-key columns are kept and become two many-has-one relations of the new entity,
24
+ * - the `log_event` trigger is re-pointed from the two foreign-key columns onto the new `id` column
25
+ * (both event-log triggers are dropped up-front and re-created afterwards).
26
+ *
27
+ * The original many-has-many owning relation (and its inverse side, if any) is removed from the schema.
28
+ *
29
+ * Limitations / requirements:
30
+ * - The junction table is assumed to use the standard composite primary key produced by Contember.
31
+ * - UUID back-filling uses a pure-SQL `uuid_generate_v4()` function in the project's system schema,
32
+ * which the migration creates on the fly if missing (see {@link ensureUuidGenerator}). No
33
+ * PostgreSQL extension is created by this migration.
34
+ */
35
+ export class ConvertManyHasManyToJoiningEntityModificationHandler implements ModificationHandler<ConvertManyHasManyToJoiningEntityModificationData> {
36
+ constructor(
37
+ private readonly data: ConvertManyHasManyToJoiningEntityModificationData,
38
+ private readonly schema: Schema,
39
+ private readonly options: ModificationHandlerOptions,
40
+ ) {}
41
+
42
+ public createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {
43
+ const { relation } = this.getRelation()
44
+ const joiningTable = relation.joiningTable
45
+ const tableName = joiningTable.tableName
46
+ const tableNameId = wrapIdentifier(tableName)
47
+
48
+ const joiningEntity = this.data.joiningEntity
49
+ const primaryColumn = joiningEntity.fields[joiningEntity.primary] as Model.AnyColumn
50
+ const primaryColumnName = primaryColumn.columnName
51
+ const primaryColumnNameId = wrapIdentifier(primaryColumnName)
52
+ const primaryColumnType = getColumnSqlType(primaryColumn)
53
+
54
+ // Drop BOTH event-log triggers before touching the table.
55
+ // The deferred `log_event_trx` constraint trigger must go too: otherwise the back-fill UPDATE
56
+ // below queues pending deferred trigger events, and PostgreSQL then rejects the subsequent
57
+ // `ALTER TABLE` with "cannot ALTER TABLE because it has pending trigger events". Both are
58
+ // re-created at the end, so there is no duplicate-trigger conflict either.
59
+ if (joiningTable.eventLog.enabled) {
60
+ dropEventTrigger(builder, tableName)
61
+ dropEventTrxTrigger(builder, tableName)
62
+ }
63
+
64
+ // Add the surrogate primary key and back-fill it for existing rows.
65
+ builder.sql(`ALTER TABLE ${tableNameId} ADD COLUMN ${primaryColumnNameId} ${primaryColumnType}`)
66
+ builder.sql(ensureUuidGenerator(systemSchema))
67
+ builder.sql(`UPDATE ${tableNameId} SET ${primaryColumnNameId} = ${uuidGenerator(systemSchema)}`)
68
+ builder.sql(`ALTER TABLE ${tableNameId} ALTER COLUMN ${primaryColumnNameId} SET NOT NULL`)
69
+
70
+ // Replace the composite primary key with the surrogate one.
71
+ builder.sql(`ALTER TABLE ${tableNameId} DROP CONSTRAINT ${wrapIdentifier(`${tableName}_pkey`)}`)
72
+ builder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${primaryColumnNameId})`)
73
+
74
+ // The original join uniqueness is no longer enforced by the (now surrogate) primary key.
75
+ builder.sql(
76
+ `ALTER TABLE ${tableNameId} ADD UNIQUE (${wrapIdentifier(joiningTable.joiningColumn.columnName)}, ${
77
+ wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)
78
+ })`,
79
+ )
80
+
81
+ // Re-create both triggers: `log_event` is now re-pointed onto the surrogate primary key,
82
+ // `log_event_trx` is restored unchanged (it takes no column params).
83
+ if (joiningEntity.eventLog?.enabled !== false) {
84
+ createEventTrigger(builder, systemSchema, tableName, [primaryColumnName])
85
+ createEventTrxTrigger(builder, systemSchema, tableName)
86
+ }
87
+ }
88
+
89
+ public getSchemaUpdater(): SchemaUpdater {
90
+ const { entity, relation } = this.getRelation()
91
+ const version = this.options.formatVersion ?? VERSION_LATEST
92
+ const joiningEntity = this.data.joiningEntity
93
+ const joinUniqueConstraint = this.getJoinUniqueConstraint()
94
+
95
+ return updateSchema(
96
+ // remove the original many-has-many (owning side + inverse side)
97
+ removeField(entity.name, relation.name, version),
98
+ // register the new joining entity reusing the junction table
99
+ updateModel(({ model }) => ({
100
+ ...model,
101
+ entities: {
102
+ ...model.entities,
103
+ [joiningEntity.name]: {
104
+ eventLog: { enabled: true },
105
+ ...joiningEntity,
106
+ // Keep the schema in sync with the join-uniqueness constraint emitted by createSql.
107
+ unique: [...Object.values(joiningEntity.unique ?? []), joinUniqueConstraint],
108
+ indexes: Object.values(joiningEntity.indexes ?? []),
109
+ },
110
+ },
111
+ })),
112
+ // add inverse one-has-many relations on both connected entities
113
+ this.data.sourceInverseSide
114
+ ? updateModel(updateEntity(entity.name, addField(this.data.sourceInverseSide)))
115
+ : undefined,
116
+ this.data.targetInverseSide
117
+ ? updateModel(updateEntity(relation.target, addField(this.data.targetInverseSide)))
118
+ : undefined,
119
+ )
120
+ }
121
+
122
+ describe() {
123
+ return {
124
+ message: `Converts ManyHasMany relation ${this.data.entityName}.${this.data.fieldName} to a joining entity ${this.data.joiningEntity.name}`,
125
+ }
126
+ }
127
+
128
+ /**
129
+ * The join-uniqueness constraint (relationA, relationB) that replaces the dropped composite
130
+ * primary key. The field names are resolved from the joining entity's two many-has-one relations
131
+ * by matching their joining columns against the original junction columns, so the constraint
132
+ * references schema field names (not raw column names).
133
+ */
134
+ private getJoinUniqueConstraint(): Model.UniqueConstraint {
135
+ const { relation } = this.getRelation()
136
+ const joiningTable = relation.joiningTable
137
+ const joiningEntity = this.data.joiningEntity
138
+
139
+ const findRelationField = (columnName: string): string => {
140
+ const field = Object.values(joiningEntity.fields).find((it): it is Model.AnyRelation & Model.JoiningColumnRelation =>
141
+ 'joiningColumn' in it && (it as Model.JoiningColumnRelation).joiningColumn.columnName === columnName
142
+ )
143
+ if (!field) {
144
+ throw new Error(
145
+ `Joining entity ${joiningEntity.name} has no many-has-one relation mapped to column ${columnName}`,
146
+ )
147
+ }
148
+ return field.name
149
+ }
150
+
151
+ return {
152
+ fields: [
153
+ findRelationField(joiningTable.joiningColumn.columnName),
154
+ findRelationField(joiningTable.inverseJoiningColumn.columnName),
155
+ ],
156
+ }
157
+ }
158
+
159
+ private getRelation(): { entity: Model.Entity; relation: Model.ManyHasManyOwningRelation } {
160
+ const entity = this.schema.model.entities[this.data.entityName]
161
+ const relation = entity.fields[this.data.fieldName]
162
+ if (!relation || relation.type !== Model.RelationType.ManyHasMany || !('joiningTable' in relation)) {
163
+ throw new Error(`${this.data.entityName}.${this.data.fieldName} is not a many-has-many owning relation`)
164
+ }
165
+ return { entity, relation: relation as Model.ManyHasManyOwningRelation }
166
+ }
167
+ }
168
+
169
+ /**
170
+ * UUIDs are back-filled with a pure-SQL `uuid_generate_v4()` function kept in the project's system
171
+ * schema, so no PostgreSQL extension is ever created. The function cannot be assumed to exist:
172
+ * Contember's system migrations only materialize it on databases where `pg_catalog.gen_random_uuid`
173
+ * is unavailable (i.e. PostgreSQL < 13), so on modern servers `system.uuid_generate_v4()` is absent.
174
+ * {@link ensureUuidGenerator} therefore (idempotently) creates it in the system schema up-front. It
175
+ * must be referenced through the system schema — it is not in `public` nor on the stage search_path.
176
+ */
177
+ const uuidGenerator = (systemSchema: string) => `${wrapIdentifier(systemSchema)}."uuid_generate_v4"()`
178
+
179
+ /**
180
+ * Idempotently materialize the pure-SQL `uuid_generate_v4()` function in the system schema. The body
181
+ * matches the one Contember's `trigger-event-function` system migration installs, so the same
182
+ * extension-free UUID generator is reused everywhere. Wrapped in a guard so re-running (or running on
183
+ * a database where it already exists) is a no-op.
184
+ */
185
+ const ensureUuidGenerator = (systemSchema: string) => {
186
+ const systemSchemaId = wrapIdentifier(systemSchema)
187
+ return `DO $ensure_uuid$
188
+ BEGIN
189
+ IF NOT EXISTS(
190
+ SELECT FROM pg_proc
191
+ JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
192
+ WHERE pg_namespace.nspname = ${quoteLiteral(systemSchema)} AND pg_proc.proname = 'uuid_generate_v4'
193
+ ) THEN
194
+ CREATE FUNCTION ${systemSchemaId}."uuid_generate_v4"() RETURNS "uuid"
195
+ LANGUAGE "sql"
196
+ AS $ensure_uuid_body$
197
+ SELECT OVERLAY(OVERLAY(md5(random()::TEXT || ':' || clock_timestamp()::TEXT) PLACING '4' FROM 13) PLACING
198
+ to_hex(floor(random() * (11 - 8 + 1) + 8)::INT)::TEXT FROM 17)::UUID;
199
+ $ensure_uuid_body$;
200
+ END IF;
201
+ END
202
+ $ensure_uuid$;`
203
+ }
204
+
205
+ const quoteLiteral = (value: string) => `'${value.replace(/'/g, "''")}'`
206
+
207
+ export const convertManyHasManyToJoiningEntityModification = createModificationType({
208
+ id: 'convertManyHasManyToJoiningEntity',
209
+ handler: ConvertManyHasManyToJoiningEntityModificationHandler,
210
+ })
211
+
212
+ export interface ConvertManyHasManyToJoiningEntityModificationData {
213
+ entityName: string
214
+ fieldName: string
215
+ joiningEntity: PossibleEntityShapeInMigrations
216
+ sourceInverseSide?: Model.OneHasManyRelation
217
+ targetInverseSide?: Model.OneHasManyRelation
218
+ }
@@ -1,19 +1,19 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'
3
+ import { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils.js'
4
4
  import {
5
5
  createModificationType,
6
6
  Differ,
7
7
  ModificationHandler,
8
8
  ModificationHandlerCreateSqlOptions,
9
9
  ModificationHandlerOptions,
10
- } from '../ModificationHandler'
10
+ } from '../ModificationHandler.js'
11
11
  import { isInverseRelation, isOwningRelation } from '@contember/schema-utils'
12
- import { updateRelations } from '../utils/diffUtils'
13
- import { createJunctionTableSql } from '../utils/createJunctionTable'
14
- import { wrapIdentifier } from '../../utils/dbHelpers'
15
- import { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'
16
- import { updateFieldNameModification } from '../fields'
12
+ import { updateRelations } from '../utils/diffUtils.js'
13
+ import { createJunctionTableSql } from '../utils/createJunctionTable.js'
14
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
15
+ import { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization.js'
16
+ import { updateFieldNameModification } from '../fields/index.js'
17
17
 
18
18
  export class ConvertOneHasManyToManyHasManyRelationModificationHandler
19
19
  implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData>
@@ -1,18 +1,18 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'
3
+ import { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils.js'
4
4
  import {
5
5
  createModificationType,
6
6
  Differ,
7
7
  ModificationHandler,
8
8
  ModificationHandlerCreateSqlOptions,
9
9
  ModificationHandlerOptions,
10
- } from '../ModificationHandler'
10
+ } from '../ModificationHandler.js'
11
11
  import { isOwningRelation } from '@contember/schema-utils'
12
- import { updateRelations } from '../utils/diffUtils'
13
- import { NoopModification } from '../NoopModification'
14
- import { updateFieldNameModification } from '../fields'
15
- import { wrapIdentifier } from '../../utils/dbHelpers'
12
+ import { updateRelations } from '../utils/diffUtils.js'
13
+ import { NoopModification } from '../NoopModification.js'
14
+ import { updateFieldNameModification } from '../fields/index.js'
15
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
16
16
 
17
17
  export class ConvertOneHasManyToOneHasOneRelationModificationHandler
18
18
  implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData>
@@ -1,18 +1,18 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'
3
+ import { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils.js'
4
4
  import {
5
5
  createModificationType,
6
6
  Differ,
7
7
  ModificationHandler,
8
8
  ModificationHandlerCreateSqlOptions,
9
9
  ModificationHandlerOptions,
10
- } from '../ModificationHandler'
10
+ } from '../ModificationHandler.js'
11
11
  import { isOwningRelation } from '@contember/schema-utils'
12
- import { updateRelations } from '../utils/diffUtils'
13
- import { NoopModification } from '../NoopModification'
14
- import { updateFieldNameModification } from '../fields'
15
- import { wrapIdentifier } from '../../utils/dbHelpers'
12
+ import { updateRelations } from '../utils/diffUtils.js'
13
+ import { NoopModification } from '../NoopModification.js'
14
+ import { updateFieldNameModification } from '../fields/index.js'
15
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
16
16
 
17
17
  export class ConvertOneToManyRelationModificationHandler implements ModificationHandler<ConvertOneToManyRelationModificationData> {
18
18
  private subModification: ModificationHandler<any>
@@ -1,7 +1,7 @@
1
1
  import { Model, Schema } from '@contember/schema'
2
- import { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
3
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
4
- import { createFields } from '../utils/diffUtils'
2
+ import { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
3
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'
4
+ import { createFields } from '../utils/diffUtils.js'
5
5
  import { isInverseRelation, isRelation } from '@contember/schema-utils'
6
6
 
7
7
  export class CreateRelationInverseSideModificationHandler implements ModificationHandler<CreateRelationInverseSideModificationData> {
@@ -1,21 +1,21 @@
1
1
  import { Model, Schema } from '@contember/schema'
2
2
  import { acceptRelationTypeVisitor, isInverseRelation, isOwningRelation, isRelation } from '@contember/schema-utils'
3
3
  import { MigrationBuilder } from '@contember/database-migrations'
4
- import { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'
4
+ import { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils.js'
5
5
  import {
6
6
  createModificationType,
7
7
  Differ,
8
8
  ModificationHandler,
9
9
  ModificationHandlerCreateSqlOptions,
10
10
  ModificationHandlerOptions,
11
- } from '../ModificationHandler'
12
- import { isIt } from '../../utils/isIt'
13
- import { createFields } from '../utils/diffUtils'
14
- import { getPrimaryColumnType } from '../utils/getPrimaryColumnType'
15
- import { createJunctionTableSql } from '../utils/createJunctionTable'
16
- import { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'
17
- import { addForeignKeyConstraint } from './helpers'
18
- import { wrapIdentifier } from '../../utils/dbHelpers'
11
+ } from '../ModificationHandler.js'
12
+ import { isIt } from '../../utils/isIt.js'
13
+ import { createFields } from '../utils/diffUtils.js'
14
+ import { getPrimaryColumnType } from '../utils/getPrimaryColumnType.js'
15
+ import { createJunctionTableSql } from '../utils/createJunctionTable.js'
16
+ import { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization.js'
17
+ import { addForeignKeyConstraint } from './helpers.js'
18
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
19
19
 
20
20
  export class CreateRelationModificationHandler implements ModificationHandler<CreateRelationModificationData> {
21
21
  constructor(
@@ -1,8 +1,8 @@
1
1
  import { Model, Schema } from '@contember/schema'
2
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
3
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
2
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
3
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'
4
4
  import { isOwningRelation } from '@contember/schema-utils'
5
- import { updateRelations } from '../utils/diffUtils'
5
+ import { updateRelations } from '../utils/diffUtils.js'
6
6
 
7
7
  export class DisableOrphanRemovalModificationHandler implements ModificationHandler<DisableOrphanRemovalModificationData> {
8
8
  constructor(private readonly data: DisableOrphanRemovalModificationData, private readonly schema: Schema) {}
@@ -1,8 +1,8 @@
1
1
  import { Model, Schema } from '@contember/schema'
2
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
3
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
2
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
3
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'
4
4
  import { isOwningRelation } from '@contember/schema-utils'
5
- import { updateRelations } from '../utils/diffUtils'
5
+ import { updateRelations } from '../utils/diffUtils.js'
6
6
 
7
7
  export class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {
8
8
  constructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}
@@ -1,10 +1,10 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
4
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
3
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'
5
5
  import { getEntity, tryGetColumnName } from '@contember/schema-utils'
6
- import { isIt } from '../../utils/isIt'
7
- import { updateRelations } from '../utils/diffUtils'
6
+ import { isIt } from '../../utils/isIt.js'
7
+ import { updateRelations } from '../utils/diffUtils.js'
8
8
 
9
9
  export class MakeRelationNotNullModificationHandler implements ModificationHandler<MakeRelationNotNullModificationData> {
10
10
  constructor(private readonly data: MakeRelationNotNullModificationData, private readonly schema: Schema) {}
@@ -1,10 +1,10 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
4
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
3
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'
5
5
  import { getEntity, tryGetColumnName } from '@contember/schema-utils'
6
- import { isIt } from '../../utils/isIt'
7
- import { updateRelations } from '../utils/diffUtils'
6
+ import { isIt } from '../../utils/isIt.js'
7
+ import { updateRelations } from '../utils/diffUtils.js'
8
8
 
9
9
  export class MakeRelationNullableModificationHandler implements ModificationHandler<MakeRelationNullableModificationData> {
10
10
  constructor(private readonly data: MakeRelationNullableModificationData, private readonly schema: Schema) {}
@@ -1,11 +1,11 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
4
- import { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'
5
- import { createEventTrigger, createEventTrxTrigger, dropEventTrigger, dropEventTrxTrigger } from '../utils/sqlUpdateUtils'
3
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
4
+ import { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'
5
+ import { createEventTrigger, createEventTrxTrigger, dropEventTrigger, dropEventTrxTrigger } from '../utils/sqlUpdateUtils.js'
6
6
  import { isOwningRelation, isRelation } from '@contember/schema-utils'
7
- import { updateRelations } from '../utils/diffUtils'
8
- import { isIt } from '../../utils/isIt'
7
+ import { updateRelations } from '../utils/diffUtils.js'
8
+ import { isIt } from '../../utils/isIt.js'
9
9
 
10
10
  export class ToggleJunctionEventLogModificationHandler implements ModificationHandler<ToggleJunctionEventLogModificationData> {
11
11
  constructor(
@@ -1,11 +1,11 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
4
- import { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'
5
- import { isIt } from '../../utils/isIt'
6
- import { updateRelations } from '../utils/diffUtils'
3
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
4
+ import { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'
5
+ import { isIt } from '../../utils/isIt.js'
6
+ import { updateRelations } from '../utils/diffUtils.js'
7
7
  import { acceptRelationTypeVisitor } from '@contember/schema-utils'
8
- import { addForeignKeyConstraint } from './helpers'
8
+ import { addForeignKeyConstraint } from './helpers.js'
9
9
 
10
10
  export class UpdateRelationOnDeleteModificationHandler implements ModificationHandler<UpdateRelationOnDeleteModificationData> {
11
11
  constructor(
@@ -1,8 +1,8 @@
1
1
  import { Model, Schema } from '@contember/schema'
2
- import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
3
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
2
+ import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'
3
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'
4
4
  import deepEqual from 'fast-deep-equal'
5
- import { updateRelations } from '../utils/diffUtils'
5
+ import { updateRelations } from '../utils/diffUtils.js'
6
6
 
7
7
  export class UpdateRelationOrderByModificationHandler implements ModificationHandler<UpdateRelationOrderByModificationData> {
8
8
  constructor(private readonly data: UpdateRelationOrderByModificationData, private readonly schema: Schema) {}
@@ -1,6 +1,6 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model } from '@contember/schema'
3
- import { wrapIdentifier } from '../../utils/dbHelpers'
3
+ import { wrapIdentifier } from '../../utils/dbHelpers.js'
4
4
  import { DatabaseMetadata } from '@contember/database'
5
5
 
6
6
  export const addForeignKeyConstraint = ({ builder, entity, relation, targetEntity, recreate = false, databaseMetadata, invalidateDatabaseMetadata }: {