@contember/schema-migrations 2.1.0-alpha.9 → 2.1.0-beta.2

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 (563) hide show
  1. package/CLAUDE.md +48 -0
  2. package/dist/development/src/Migration.cjs.map +1 -1
  3. package/dist/development/src/Migration.js.map +1 -1
  4. package/dist/development/src/MigrationDescriber.cjs.map +1 -1
  5. package/dist/development/src/MigrationDescriber.js.map +1 -1
  6. package/dist/development/src/SchemaDiffer.cjs +1 -1
  7. package/dist/development/src/SchemaDiffer.cjs.map +1 -1
  8. package/dist/development/src/SchemaDiffer.js +1 -1
  9. package/dist/development/src/SchemaDiffer.js.map +1 -1
  10. package/dist/development/src/SchemaMigrator.cjs.map +1 -1
  11. package/dist/development/src/SchemaMigrator.js.map +1 -1
  12. package/dist/development/src/modifications/ModificationHandler.cjs.map +1 -1
  13. package/dist/development/src/modifications/ModificationHandler.js.map +1 -1
  14. package/dist/development/src/modifications/ModificationHandlerFactory.cjs +2 -0
  15. package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  16. package/dist/development/src/modifications/ModificationHandlerFactory.js +2 -0
  17. package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
  18. package/dist/development/src/modifications/NoopModification.cjs.map +1 -1
  19. package/dist/development/src/modifications/NoopModification.js.map +1 -1
  20. package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
  21. package/dist/development/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  22. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs +1 -1
  23. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
  24. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js +1 -1
  25. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  26. package/dist/development/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
  27. package/dist/development/src/modifications/actions/CreateTargetModification.js.map +1 -1
  28. package/dist/development/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
  29. package/dist/development/src/modifications/actions/CreateTriggerModification.js.map +1 -1
  30. package/dist/development/src/modifications/actions/PatchTriggerModification.cjs +44 -0
  31. package/dist/development/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
  32. package/dist/development/src/modifications/actions/PatchTriggerModification.js +44 -0
  33. package/dist/development/src/modifications/actions/PatchTriggerModification.js.map +1 -0
  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 +16 -1
  41. package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  42. package/dist/development/src/modifications/actions/UpdateTriggerModification.js +16 -1
  43. package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  44. package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  45. package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
  46. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs +2 -2
  47. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  48. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js +2 -2
  49. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  50. package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs +37 -45
  51. package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
  52. package/dist/development/src/modifications/columns/UpdateColumnNameModification.js +37 -45
  53. package/dist/development/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  54. package/dist/development/src/modifications/columns/columnUtils.cjs.map +1 -1
  55. package/dist/development/src/modifications/columns/columnUtils.js.map +1 -1
  56. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs +8 -5
  57. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  58. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js +8 -5
  59. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  60. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  61. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  62. package/dist/development/src/modifications/constraints/utils.cjs.map +1 -1
  63. package/dist/development/src/modifications/constraints/utils.js.map +1 -1
  64. package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
  65. package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
  66. package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs +0 -2
  67. package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
  68. package/dist/development/src/modifications/differs/RemoveViewDiffer.js +0 -2
  69. package/dist/development/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
  70. package/dist/development/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  71. package/dist/development/src/modifications/entities/CreateEntityModification.js.map +1 -1
  72. package/dist/development/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  73. package/dist/development/src/modifications/entities/CreateViewModification.js.map +1 -1
  74. package/dist/development/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  75. package/dist/development/src/modifications/entities/RemoveEntityModification.js +1 -1
  76. package/dist/development/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  77. package/dist/development/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
  78. package/dist/development/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  79. package/dist/development/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
  80. package/dist/development/src/modifications/entities/UpdateEntityNameModification.js +1 -1
  81. package/dist/development/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  82. package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
  83. package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
  84. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs +6 -4
  85. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
  86. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js +6 -4
  87. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  88. package/dist/development/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
  89. package/dist/development/src/modifications/entities/UpdateViewModification.js.map +1 -1
  90. package/dist/development/src/modifications/enums/CreateEnumModification.cjs +6 -4
  91. package/dist/development/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
  92. package/dist/development/src/modifications/enums/CreateEnumModification.js +7 -5
  93. package/dist/development/src/modifications/enums/CreateEnumModification.js.map +1 -1
  94. package/dist/development/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
  95. package/dist/development/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  96. package/dist/development/src/modifications/enums/UpdateEnumModification.cjs +36 -8
  97. package/dist/development/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
  98. package/dist/development/src/modifications/enums/UpdateEnumModification.js +34 -6
  99. package/dist/development/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  100. package/dist/development/src/modifications/enums/enumUtils.cjs.map +1 -1
  101. package/dist/development/src/modifications/enums/enumUtils.js.map +1 -1
  102. package/dist/development/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
  103. package/dist/development/src/modifications/fields/RemoveFieldModification.js +1 -1
  104. package/dist/development/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  105. package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs +9 -5
  106. package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
  107. package/dist/development/src/modifications/fields/UpdateFieldNameModification.js +10 -6
  108. package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  109. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs +10 -6
  110. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  111. package/dist/development/src/modifications/indexes/CreateIndexModification.js +10 -6
  112. package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  113. package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  114. package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  115. package/dist/development/src/modifications/indexes/utils.cjs.map +1 -1
  116. package/dist/development/src/modifications/indexes/utils.js.map +1 -1
  117. package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
  118. package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  119. package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
  120. package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
  121. package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
  122. package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  123. package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
  124. package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  125. package/dist/development/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
  126. package/dist/development/src/modifications/relations/CreateRelationModification.js.map +1 -1
  127. package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
  128. package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  129. package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
  130. package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  131. package/dist/development/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
  132. package/dist/development/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  133. package/dist/development/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
  134. package/dist/development/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  135. package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
  136. package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  137. package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
  138. package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  139. package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
  140. package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  141. package/dist/development/src/modifications/relations/helpers.cjs.map +1 -1
  142. package/dist/development/src/modifications/relations/helpers.js.map +1 -1
  143. package/dist/development/src/modifications/relations/normalization.cjs.map +1 -1
  144. package/dist/development/src/modifications/relations/normalization.js.map +1 -1
  145. package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs +6 -4
  146. package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
  147. package/dist/development/src/modifications/settings/UpdateSettingsModification.js +6 -4
  148. package/dist/development/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
  149. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs +0 -2
  150. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  151. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js +0 -2
  152. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  153. package/dist/development/src/modifications/utils/columnUtils.cjs.map +1 -1
  154. package/dist/development/src/modifications/utils/columnUtils.js.map +1 -1
  155. package/dist/development/src/modifications/utils/createJunctionTable.cjs.map +1 -1
  156. package/dist/development/src/modifications/utils/createJunctionTable.js.map +1 -1
  157. package/dist/development/src/modifications/utils/diffUtils.cjs.map +1 -1
  158. package/dist/development/src/modifications/utils/diffUtils.js.map +1 -1
  159. package/dist/development/src/modifications/utils/getPrimaryColumnType.cjs.map +1 -1
  160. package/dist/development/src/modifications/utils/getPrimaryColumnType.js.map +1 -1
  161. package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  162. package/dist/development/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  163. package/dist/development/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
  164. package/dist/development/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
  165. package/dist/development/src/modifications/utils/valueUtils.cjs.map +1 -1
  166. package/dist/development/src/modifications/utils/valueUtils.js.map +1 -1
  167. package/dist/development/src/modifications/utils/viewDependencies.cjs.map +1 -1
  168. package/dist/development/src/modifications/utils/viewDependencies.js.map +1 -1
  169. package/dist/development/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
  170. package/dist/development/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  171. package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
  172. package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  173. package/dist/development/src/utils/dbHelpers.cjs.map +1 -1
  174. package/dist/development/src/utils/dbHelpers.js.map +1 -1
  175. package/dist/development/src/utils/deepCopy.cjs.map +1 -1
  176. package/dist/development/src/utils/deepCopy.js.map +1 -1
  177. package/dist/development/src/utils/escapeSqlString.cjs +1 -1
  178. package/dist/development/src/utils/escapeSqlString.cjs.map +1 -1
  179. package/dist/development/src/utils/escapeSqlString.js +1 -1
  180. package/dist/development/src/utils/escapeSqlString.js.map +1 -1
  181. package/dist/development/src/utils/isDefined.cjs.map +1 -1
  182. package/dist/development/src/utils/isDefined.js.map +1 -1
  183. package/dist/development/src/utils/isIt.cjs.map +1 -1
  184. package/dist/development/src/utils/isIt.js.map +1 -1
  185. package/dist/production/src/Migration.cjs.map +1 -1
  186. package/dist/production/src/Migration.js.map +1 -1
  187. package/dist/production/src/MigrationDescriber.cjs.map +1 -1
  188. package/dist/production/src/MigrationDescriber.js.map +1 -1
  189. package/dist/production/src/SchemaDiffer.cjs +1 -1
  190. package/dist/production/src/SchemaDiffer.cjs.map +1 -1
  191. package/dist/production/src/SchemaDiffer.js +1 -1
  192. package/dist/production/src/SchemaDiffer.js.map +1 -1
  193. package/dist/production/src/SchemaMigrator.cjs.map +1 -1
  194. package/dist/production/src/SchemaMigrator.js.map +1 -1
  195. package/dist/production/src/modifications/ModificationHandler.cjs.map +1 -1
  196. package/dist/production/src/modifications/ModificationHandler.js.map +1 -1
  197. package/dist/production/src/modifications/ModificationHandlerFactory.cjs +2 -0
  198. package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  199. package/dist/production/src/modifications/ModificationHandlerFactory.js +2 -0
  200. package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
  201. package/dist/production/src/modifications/NoopModification.cjs.map +1 -1
  202. package/dist/production/src/modifications/NoopModification.js.map +1 -1
  203. package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
  204. package/dist/production/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  205. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs +1 -1
  206. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
  207. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js +1 -1
  208. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  209. package/dist/production/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
  210. package/dist/production/src/modifications/actions/CreateTargetModification.js.map +1 -1
  211. package/dist/production/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
  212. package/dist/production/src/modifications/actions/CreateTriggerModification.js.map +1 -1
  213. package/dist/production/src/modifications/actions/PatchTriggerModification.cjs +44 -0
  214. package/dist/production/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
  215. package/dist/production/src/modifications/actions/PatchTriggerModification.js +44 -0
  216. package/dist/production/src/modifications/actions/PatchTriggerModification.js.map +1 -0
  217. package/dist/production/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
  218. package/dist/production/src/modifications/actions/RemoveTargetModification.js.map +1 -1
  219. package/dist/production/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
  220. package/dist/production/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
  221. package/dist/production/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
  222. package/dist/production/src/modifications/actions/UpdateTargetModification.js.map +1 -1
  223. package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs +16 -1
  224. package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  225. package/dist/production/src/modifications/actions/UpdateTriggerModification.js +16 -1
  226. package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  227. package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  228. package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
  229. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs +2 -2
  230. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  231. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js +2 -2
  232. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  233. package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs +37 -45
  234. package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
  235. package/dist/production/src/modifications/columns/UpdateColumnNameModification.js +37 -45
  236. package/dist/production/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  237. package/dist/production/src/modifications/columns/columnUtils.cjs.map +1 -1
  238. package/dist/production/src/modifications/columns/columnUtils.js.map +1 -1
  239. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs +8 -5
  240. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  241. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js +8 -5
  242. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  243. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  244. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  245. package/dist/production/src/modifications/constraints/utils.cjs.map +1 -1
  246. package/dist/production/src/modifications/constraints/utils.js.map +1 -1
  247. package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
  248. package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
  249. package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs +0 -2
  250. package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
  251. package/dist/production/src/modifications/differs/RemoveViewDiffer.js +0 -2
  252. package/dist/production/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
  253. package/dist/production/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  254. package/dist/production/src/modifications/entities/CreateEntityModification.js.map +1 -1
  255. package/dist/production/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  256. package/dist/production/src/modifications/entities/CreateViewModification.js.map +1 -1
  257. package/dist/production/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  258. package/dist/production/src/modifications/entities/RemoveEntityModification.js +1 -1
  259. package/dist/production/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  260. package/dist/production/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
  261. package/dist/production/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  262. package/dist/production/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
  263. package/dist/production/src/modifications/entities/UpdateEntityNameModification.js +1 -1
  264. package/dist/production/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  265. package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
  266. package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
  267. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs +6 -4
  268. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
  269. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js +6 -4
  270. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  271. package/dist/production/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
  272. package/dist/production/src/modifications/entities/UpdateViewModification.js.map +1 -1
  273. package/dist/production/src/modifications/enums/CreateEnumModification.cjs +6 -4
  274. package/dist/production/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
  275. package/dist/production/src/modifications/enums/CreateEnumModification.js +7 -5
  276. package/dist/production/src/modifications/enums/CreateEnumModification.js.map +1 -1
  277. package/dist/production/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
  278. package/dist/production/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  279. package/dist/production/src/modifications/enums/UpdateEnumModification.cjs +36 -8
  280. package/dist/production/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
  281. package/dist/production/src/modifications/enums/UpdateEnumModification.js +34 -6
  282. package/dist/production/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  283. package/dist/production/src/modifications/enums/enumUtils.cjs.map +1 -1
  284. package/dist/production/src/modifications/enums/enumUtils.js.map +1 -1
  285. package/dist/production/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
  286. package/dist/production/src/modifications/fields/RemoveFieldModification.js +1 -1
  287. package/dist/production/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  288. package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs +9 -5
  289. package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
  290. package/dist/production/src/modifications/fields/UpdateFieldNameModification.js +10 -6
  291. package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  292. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs +10 -6
  293. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  294. package/dist/production/src/modifications/indexes/CreateIndexModification.js +10 -6
  295. package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  296. package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  297. package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  298. package/dist/production/src/modifications/indexes/utils.cjs.map +1 -1
  299. package/dist/production/src/modifications/indexes/utils.js.map +1 -1
  300. package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
  301. package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  302. package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
  303. package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
  304. package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
  305. package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  306. package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
  307. package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  308. package/dist/production/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
  309. package/dist/production/src/modifications/relations/CreateRelationModification.js.map +1 -1
  310. package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
  311. package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  312. package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
  313. package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  314. package/dist/production/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
  315. package/dist/production/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  316. package/dist/production/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
  317. package/dist/production/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  318. package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
  319. package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  320. package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
  321. package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  322. package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
  323. package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  324. package/dist/production/src/modifications/relations/helpers.cjs.map +1 -1
  325. package/dist/production/src/modifications/relations/helpers.js.map +1 -1
  326. package/dist/production/src/modifications/relations/normalization.cjs.map +1 -1
  327. package/dist/production/src/modifications/relations/normalization.js.map +1 -1
  328. package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs +6 -4
  329. package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
  330. package/dist/production/src/modifications/settings/UpdateSettingsModification.js +6 -4
  331. package/dist/production/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
  332. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs +0 -2
  333. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  334. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js +0 -2
  335. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  336. package/dist/production/src/modifications/utils/columnUtils.cjs.map +1 -1
  337. package/dist/production/src/modifications/utils/columnUtils.js.map +1 -1
  338. package/dist/production/src/modifications/utils/createJunctionTable.cjs.map +1 -1
  339. package/dist/production/src/modifications/utils/createJunctionTable.js.map +1 -1
  340. package/dist/production/src/modifications/utils/diffUtils.cjs.map +1 -1
  341. package/dist/production/src/modifications/utils/diffUtils.js.map +1 -1
  342. package/dist/production/src/modifications/utils/getPrimaryColumnType.cjs.map +1 -1
  343. package/dist/production/src/modifications/utils/getPrimaryColumnType.js.map +1 -1
  344. package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  345. package/dist/production/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  346. package/dist/production/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
  347. package/dist/production/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
  348. package/dist/production/src/modifications/utils/valueUtils.cjs.map +1 -1
  349. package/dist/production/src/modifications/utils/valueUtils.js.map +1 -1
  350. package/dist/production/src/modifications/utils/viewDependencies.cjs.map +1 -1
  351. package/dist/production/src/modifications/utils/viewDependencies.js.map +1 -1
  352. package/dist/production/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
  353. package/dist/production/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  354. package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
  355. package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  356. package/dist/production/src/utils/dbHelpers.cjs.map +1 -1
  357. package/dist/production/src/utils/dbHelpers.js.map +1 -1
  358. package/dist/production/src/utils/deepCopy.cjs.map +1 -1
  359. package/dist/production/src/utils/deepCopy.js.map +1 -1
  360. package/dist/production/src/utils/escapeSqlString.cjs +1 -1
  361. package/dist/production/src/utils/escapeSqlString.cjs.map +1 -1
  362. package/dist/production/src/utils/escapeSqlString.js +1 -1
  363. package/dist/production/src/utils/escapeSqlString.js.map +1 -1
  364. package/dist/production/src/utils/isDefined.cjs.map +1 -1
  365. package/dist/production/src/utils/isDefined.js.map +1 -1
  366. package/dist/production/src/utils/isIt.cjs.map +1 -1
  367. package/dist/production/src/utils/isIt.js.map +1 -1
  368. package/dist/tests/cases/integration/patchTrigger.test.d.ts +2 -0
  369. package/dist/tests/cases/integration/patchTrigger.test.d.ts.map +1 -0
  370. package/dist/tests/src/tests.d.ts.map +1 -1
  371. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  372. package/dist/types/MigrationDescriber.d.ts.map +1 -1
  373. package/dist/types/SchemaDiffer.d.ts.map +1 -1
  374. package/dist/types/modifications/ModificationHandler.d.ts.map +1 -1
  375. package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  376. package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts +1 -1
  377. package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
  378. package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts +1 -1
  379. package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
  380. package/dist/types/modifications/actions/CreateTargetModification.d.ts +1 -1
  381. package/dist/types/modifications/actions/CreateTargetModification.d.ts.map +1 -1
  382. package/dist/types/modifications/actions/CreateTriggerModification.d.ts +1 -1
  383. package/dist/types/modifications/actions/CreateTriggerModification.d.ts.map +1 -1
  384. package/dist/types/modifications/actions/PatchTriggerModification.d.ts +18 -0
  385. package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -0
  386. package/dist/types/modifications/actions/RemoveTargetModification.d.ts +1 -1
  387. package/dist/types/modifications/actions/RemoveTargetModification.d.ts.map +1 -1
  388. package/dist/types/modifications/actions/RemoveTriggerModification.d.ts +1 -1
  389. package/dist/types/modifications/actions/RemoveTriggerModification.d.ts.map +1 -1
  390. package/dist/types/modifications/actions/UpdateTargetModification.d.ts +1 -1
  391. package/dist/types/modifications/actions/UpdateTargetModification.d.ts.map +1 -1
  392. package/dist/types/modifications/actions/UpdateTriggerModification.d.ts +6 -2
  393. package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
  394. package/dist/types/modifications/actions/index.d.ts +1 -0
  395. package/dist/types/modifications/actions/index.d.ts.map +1 -1
  396. package/dist/types/modifications/columns/CreateColumnModification.d.ts +1 -1
  397. package/dist/types/modifications/columns/CreateColumnModification.d.ts.map +1 -1
  398. package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts +1 -1
  399. package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  400. package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts +1 -1
  401. package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
  402. package/dist/types/modifications/columns/columnUtils.d.ts.map +1 -1
  403. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts +1 -1
  404. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  405. package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts +1 -1
  406. package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
  407. package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts +1 -1
  408. package/dist/types/modifications/differs/RemoveViewDiffer.d.ts +0 -1
  409. package/dist/types/modifications/differs/RemoveViewDiffer.d.ts.map +1 -1
  410. package/dist/types/modifications/entities/CreateEntityModification.d.ts +1 -1
  411. package/dist/types/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  412. package/dist/types/modifications/entities/CreateViewModification.d.ts +1 -1
  413. package/dist/types/modifications/entities/CreateViewModification.d.ts.map +1 -1
  414. package/dist/types/modifications/entities/RemoveEntityModification.d.ts +1 -1
  415. package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
  416. package/dist/types/modifications/entities/ToggleEventLogModification.d.ts +1 -1
  417. package/dist/types/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
  418. package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts +1 -1
  419. package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
  420. package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts +1 -1
  421. package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -1
  422. package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts +1 -1
  423. package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
  424. package/dist/types/modifications/entities/UpdateViewModification.d.ts +1 -1
  425. package/dist/types/modifications/entities/UpdateViewModification.d.ts.map +1 -1
  426. package/dist/types/modifications/enums/CreateEnumModification.d.ts +1 -1
  427. package/dist/types/modifications/enums/CreateEnumModification.d.ts.map +1 -1
  428. package/dist/types/modifications/enums/RemoveEnumModification.d.ts +1 -1
  429. package/dist/types/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
  430. package/dist/types/modifications/enums/UpdateEnumModification.d.ts +2 -1
  431. package/dist/types/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
  432. package/dist/types/modifications/fields/RemoveFieldModification.d.ts +1 -1
  433. package/dist/types/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
  434. package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts +1 -1
  435. package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
  436. package/dist/types/modifications/indexes/CreateIndexModification.d.ts +1 -1
  437. package/dist/types/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
  438. package/dist/types/modifications/indexes/RemoveIndexModification.d.ts +1 -1
  439. package/dist/types/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
  440. package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +1 -1
  441. package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
  442. package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts +1 -1
  443. package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts.map +1 -1
  444. package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts +1 -1
  445. package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
  446. package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts +1 -1
  447. package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
  448. package/dist/types/modifications/relations/CreateRelationModification.d.ts +1 -1
  449. package/dist/types/modifications/relations/CreateRelationModification.d.ts.map +1 -1
  450. package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts +1 -1
  451. package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
  452. package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts +1 -1
  453. package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
  454. package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts +1 -1
  455. package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
  456. package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts +1 -1
  457. package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
  458. package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts +1 -1
  459. package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
  460. package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts +1 -1
  461. package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
  462. package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts +1 -1
  463. package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
  464. package/dist/types/modifications/relations/helpers.d.ts.map +1 -1
  465. package/dist/types/modifications/settings/UpdateSettingsModification.d.ts +1 -1
  466. package/dist/types/modifications/settings/UpdateSettingsModification.d.ts.map +1 -1
  467. package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts +1 -2
  468. package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -1
  469. package/dist/types/modifications/utils/columnUtils.d.ts.map +1 -1
  470. package/dist/types/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
  471. package/dist/types/modifications/utils/valueUtils.d.ts.map +1 -1
  472. package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts +1 -1
  473. package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
  474. package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts +1 -1
  475. package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
  476. package/dist/types/tsconfig.tsbuildinfo +1 -1
  477. package/dist/types/utils/PartialEntity.d.ts.map +1 -1
  478. package/package.json +15 -10
  479. package/src/MigrationDescriber.ts +4 -2
  480. package/src/SchemaDiffer.ts +10 -2
  481. package/src/modifications/ModificationHandler.ts +0 -1
  482. package/src/modifications/ModificationHandlerFactory.ts +2 -2
  483. package/src/modifications/acl/PatchAclSchemaModification.ts +1 -1
  484. package/src/modifications/acl/UpdateAclSchemaModification.ts +2 -2
  485. package/src/modifications/actions/PatchTriggerModification.ts +51 -0
  486. package/src/modifications/actions/UpdateTriggerModification.ts +22 -1
  487. package/src/modifications/actions/index.ts +1 -0
  488. package/src/modifications/columns/CreateColumnModification.ts +3 -6
  489. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +7 -3
  490. package/src/modifications/columns/UpdateColumnNameModification.ts +1 -3
  491. package/src/modifications/columns/columnUtils.ts +0 -2
  492. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +13 -16
  493. package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +4 -15
  494. package/src/modifications/differs/RemoveViewDiffer.ts +0 -3
  495. package/src/modifications/entities/CreateEntityModification.ts +4 -5
  496. package/src/modifications/entities/CreateViewModification.ts +0 -1
  497. package/src/modifications/entities/RemoveEntityModification.ts +6 -6
  498. package/src/modifications/entities/ToggleEventLogModification.ts +1 -8
  499. package/src/modifications/entities/UpdateEntityNameModification.ts +3 -8
  500. package/src/modifications/entities/UpdateEntityOrderByModification.ts +2 -4
  501. package/src/modifications/entities/UpdateEntityTableNameModification.ts +7 -6
  502. package/src/modifications/entities/UpdateViewModification.ts +0 -1
  503. package/src/modifications/enums/CreateEnumModification.ts +6 -4
  504. package/src/modifications/enums/UpdateEnumModification.ts +49 -13
  505. package/src/modifications/fields/RemoveFieldModification.ts +0 -2
  506. package/src/modifications/fields/UpdateFieldNameModification.ts +71 -79
  507. package/src/modifications/indexes/CreateIndexModification.ts +11 -12
  508. package/src/modifications/indexes/RemoveIndexModification.ts +4 -11
  509. package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +9 -6
  510. package/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts +20 -14
  511. package/src/modifications/relations/ConvertOneToManyRelationModification.ts +18 -14
  512. package/src/modifications/relations/CreateRelationModification.ts +5 -9
  513. package/src/modifications/relations/DisableOrphanRemovalModification.ts +6 -7
  514. package/src/modifications/relations/EnableOrphanRemovalModification.ts +7 -8
  515. package/src/modifications/relations/MakeRelationNotNullModification.ts +5 -5
  516. package/src/modifications/relations/MakeRelationNullableModification.ts +5 -7
  517. package/src/modifications/relations/ToggleJunctionEventLogModification.ts +6 -18
  518. package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +5 -10
  519. package/src/modifications/relations/UpdateRelationOrderByModification.ts +4 -5
  520. package/src/modifications/relations/helpers.ts +3 -1
  521. package/src/modifications/settings/UpdateSettingsModification.ts +6 -10
  522. package/src/modifications/upgrade/RemoveIndexNamesModification.ts +1 -4
  523. package/src/modifications/utils/columnUtils.ts +1 -2
  524. package/src/modifications/utils/schemaUpdateUtils.ts +139 -165
  525. package/src/modifications/utils/valueUtils.ts +1 -4
  526. package/src/modifications/validation/UpdateValidationSchemaModification.ts +0 -1
  527. package/src/tsconfig.json +1 -2
  528. package/src/utils/PartialEntity.ts +2 -2
  529. package/src/utils/escapeSqlString.ts +1 -1
  530. package/tests/cases/integration/convertOneToManyRelation.test.ts +69 -81
  531. package/tests/cases/integration/createAndDropIndex.test.ts +138 -36
  532. package/tests/cases/integration/createColumn.test.ts +178 -175
  533. package/tests/cases/integration/createEntity.test.ts +185 -182
  534. package/tests/cases/integration/createEnum.test.ts +34 -34
  535. package/tests/cases/integration/createManyHasMany.test.ts +66 -67
  536. package/tests/cases/integration/createManyHasOne.test.ts +62 -62
  537. package/tests/cases/integration/createOneHasMany.test.ts +86 -88
  538. package/tests/cases/integration/createOneHasOne.test.ts +96 -96
  539. package/tests/cases/integration/createRelationInverseSide.test.ts +73 -72
  540. package/tests/cases/integration/createUnique.test.ts +321 -162
  541. package/tests/cases/integration/createView.test.ts +111 -96
  542. package/tests/cases/integration/disableOrphanRemoval.test.ts +25 -27
  543. package/tests/cases/integration/enableOrphanRemoval.test.ts +25 -27
  544. package/tests/cases/integration/makeColumnNotNull.test.ts +25 -24
  545. package/tests/cases/integration/makeRelationNotNull.test.ts +25 -27
  546. package/tests/cases/integration/makeRelationNullable.test.ts +47 -48
  547. package/tests/cases/integration/patchAclSchema.test.ts +43 -42
  548. package/tests/cases/integration/patchTrigger.test.ts +184 -0
  549. package/tests/cases/integration/removeEntity.test.ts +143 -147
  550. package/tests/cases/integration/removeEnum.test.ts +27 -27
  551. package/tests/cases/integration/removeField.test.ts +163 -172
  552. package/tests/cases/integration/toggleEventLog.test.ts +26 -25
  553. package/tests/cases/integration/toggleJunctionEventLog.test.ts +28 -26
  554. package/tests/cases/integration/updateColumnDefinition.test.ts +191 -165
  555. package/tests/cases/integration/updateEntityName.test.ts +113 -110
  556. package/tests/cases/integration/updateEntityOrderBy.test.ts +25 -24
  557. package/tests/cases/integration/updateEnum.test.ts +68 -30
  558. package/tests/cases/integration/updateFieldName.test.ts +195 -199
  559. package/tests/cases/integration/updateRelationOnDelete.test.ts +42 -44
  560. package/tests/cases/integration/updateRelationOrderBy.test.ts +35 -38
  561. package/tests/cases/integration/updateView.test.ts +350 -350
  562. package/tests/src/tests.ts +1 -2
  563. package/vitest.config.ts +0 -3
@@ -1,21 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const schema = require("@contember/schema");
3
4
  const schemaUpdateUtils = require("../utils/schemaUpdateUtils.cjs");
4
5
  const ModificationHandler = require("../ModificationHandler.cjs");
5
6
  const deepEqual = require("fast-deep-equal");
6
7
  const enumUtils = require("./enumUtils.cjs");
8
+ const columnUtils = require("../utils/columnUtils.cjs");
7
9
  class UpdateEnumModificationHandler {
8
- constructor(data, schema) {
10
+ constructor(data, schema2) {
9
11
  this.data = data;
10
- this.schema = schema;
12
+ this.schema = schema2;
11
13
  }
12
14
  createSql(builder) {
13
- builder.sql(`
14
- ALTER DOMAIN "${this.data.enumName}"
15
- DROP CONSTRAINT ${enumUtils.getConstraintName(this.data.enumName)}`);
16
- builder.sql(`
17
- ALTER DOMAIN "${this.data.enumName}"
18
- ADD CONSTRAINT ${enumUtils.getConstraintName(this.data.enumName)} CHECK (${enumUtils.createCheck(this.data.values)})`);
15
+ if (!this.requiresNewDomain()) {
16
+ builder.sql(`
17
+ ALTER DOMAIN "${this.data.enumName}"
18
+ DROP CONSTRAINT ${enumUtils.getConstraintName(this.data.enumName)}`);
19
+ builder.sql(`
20
+ ALTER DOMAIN "${this.data.enumName}"
21
+ ADD CONSTRAINT ${enumUtils.getConstraintName(this.data.enumName)} CHECK (${enumUtils.createCheck(this.data.values)})`);
22
+ } else {
23
+ const oldName = `${this.data.enumName}__old`;
24
+ builder.renameDomain(this.data.enumName, oldName);
25
+ builder.createDomain(this.data.enumName, "text", {
26
+ check: enumUtils.createCheck(this.data.values),
27
+ constraintName: enumUtils.getConstraintName(this.data.enumName)
28
+ });
29
+ for (const entity of Object.values(this.schema.model.entities)) {
30
+ for (const field of Object.values(entity.fields)) {
31
+ if (field.type === schema.Model.ColumnType.Enum && field.columnType === this.data.enumName) {
32
+ builder.alterColumn(entity.tableName, field.columnName, {
33
+ type: columnUtils.getColumnSqlType(field)
34
+ });
35
+ }
36
+ }
37
+ }
38
+ builder.dropDomain(oldName);
39
+ }
40
+ }
41
+ requiresNewDomain() {
42
+ return Object.values(this.schema.model.entities).some((it) => {
43
+ return Object.values(it.fields).some((field) => {
44
+ return field.type === schema.Model.ColumnType.Enum && field.columnType === this.data.enumName && field.list;
45
+ });
46
+ });
19
47
  }
20
48
  getSchemaUpdater() {
21
49
  return schemaUpdateUtils.updateModel(({ model }) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateEnumModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning =\n\t\t\tmissingValues.length > 0\n\t\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name] &&\n\t\t\t\t\t!deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":["getConstraintName","createCheck","updateModel","createModificationType"],"mappings":";;;;;;AAOO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,EAAA;AAAA,EAEzE,UAAU,SAAiC;AACjD,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,qBAChBA,UAAkB,kBAAA,KAAK,KAAK,QAAQ,CAAC,EAAE;AAC1D,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,oBACjBA,4BAAkB,KAAK,KAAK,QAAQ,CAAC,WAAWC,UAAA,YAAY,KAAK,KAAK,MAAM,CAAC,GAAG;AAAA,EAAA;AAAA,EAG5F,mBAAkC;AACxC,WAAOC,kBAAY,YAAA,CAAC,EAAE,aAAa;AAAA,MAClC,GAAG;AAAA,MACH,OAAO;AAAA,QACN,GAAG,MAAM;AAAA,QACT,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,MAAA;AAAA,IACjC,EACC;AAAA,EAAA;AAAA,EAGH,WAAW;AACV,UAAM,gBAAgB,KAAK,OAAO,MAAM,MAAM,KAAK,KAAK,QAAQ;AAC1D,UAAA,gBAAgB,cAAc,OAAO,CAAM,OAAA,CAAC,KAAK,KAAK,OAAO,SAAS,EAAE,CAAC;AACzE,UAAA,iBACL,cAAc,SAAS,IACpB,oBAAoB,cAAc,KAAK,IAAI,CAAC,0CAC5C;AACJ,WAAO,EAAE,SAAS,eAAe,KAAK,KAAK,QAAQ,IAAI,eAAe;AAAA,EAAA;AAExE;AAOO,MAAM,yBAAyBC,oBAAAA,uBAAuB;AAAA,EAC5D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,iBAAmC;AAAA,EAC/C,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,MAAM,KAAK,EAC7C;AAAA,MACA,CAAC,CAAC,IAAI,MACL,eAAe,MAAM,MAAM,IAAI,KAC/B,CAAC,UAAU,cAAc,MAAM,MAAM,IAAI,GAAG,eAAe,MAAM,MAAM,IAAI,CAAC;AAAA,IAE7E,EAAA,IAAI,CAAC,CAAC,UAAU,MAAM,MAAM,uBAAuB,mBAAmB,EAAE,UAAU,OAAA,CAAQ,CAAC;AAAA,EAAA;AAE/F;;;;"}
1
+ {"version":3,"file":"UpdateEnumModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\nimport { getColumnSqlType } from '../utils/columnUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tif (!this.requiresNewDomain()) {\n\t\t\tbuilder.sql(`\n\t\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\t\tbuilder.sql(`\n\t\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t\t} else {\n\t\t\t/**\n\t\t\t * Because postgres does not support altering domain constrains\n\t\t\t * when used in composite types (like arrays) we need to:\n\t\t\t * - create a new domain with the new constraint\n\t\t\t * - update all the columns using the old domain to use the new domain\n\t\t\t * - drop the old domain and rename the new domain to the old name\n\t\t\t */\n\t\t\tconst oldName = `${this.data.enumName}__old`\n\t\t\tbuilder.renameDomain(this.data.enumName, oldName)\n\n\t\t\tbuilder.createDomain(this.data.enumName, 'text', {\n\t\t\t\tcheck: createCheck(this.data.values),\n\t\t\t\tconstraintName: getConstraintName(this.data.enumName),\n\t\t\t})\n\t\t\tfor (const entity of Object.values(this.schema.model.entities)) {\n\t\t\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\t\t\tif (field.type === Model.ColumnType.Enum && field.columnType === this.data.enumName) {\n\t\t\t\t\t\tbuilder.alterColumn(entity.tableName, field.columnName, {\n\t\t\t\t\t\t\ttype: getColumnSqlType(field),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbuilder.dropDomain(oldName)\n\t\t}\n\t}\n\n\tprivate requiresNewDomain(): boolean {\n\t\treturn Object.values(this.schema.model.entities).some(it => {\n\t\t\treturn Object.values(it.fields).some(field => {\n\t\t\t\treturn field.type === Model.ColumnType.Enum && field.columnType === this.data.enumName && field.list\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning = missingValues.length > 0\n\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name]\n\t\t\t\t\t&& !deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":["schema","getConstraintName","createCheck","Model","getColumnSqlType","updateModel","createModificationType"],"mappings":"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"}
@@ -1,19 +1,47 @@
1
+ import { Model } from "@contember/schema";
1
2
  import { updateModel } from "../utils/schemaUpdateUtils.js";
2
3
  import { createModificationType } from "../ModificationHandler.js";
3
4
  import deepEqual from "fast-deep-equal";
4
5
  import { getConstraintName, createCheck } from "./enumUtils.js";
6
+ import { getColumnSqlType } from "../utils/columnUtils.js";
5
7
  class UpdateEnumModificationHandler {
6
8
  constructor(data, schema) {
7
9
  this.data = data;
8
10
  this.schema = schema;
9
11
  }
10
12
  createSql(builder) {
11
- builder.sql(`
12
- ALTER DOMAIN "${this.data.enumName}"
13
- DROP CONSTRAINT ${getConstraintName(this.data.enumName)}`);
14
- builder.sql(`
15
- ALTER DOMAIN "${this.data.enumName}"
16
- ADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`);
13
+ if (!this.requiresNewDomain()) {
14
+ builder.sql(`
15
+ ALTER DOMAIN "${this.data.enumName}"
16
+ DROP CONSTRAINT ${getConstraintName(this.data.enumName)}`);
17
+ builder.sql(`
18
+ ALTER DOMAIN "${this.data.enumName}"
19
+ ADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`);
20
+ } else {
21
+ const oldName = `${this.data.enumName}__old`;
22
+ builder.renameDomain(this.data.enumName, oldName);
23
+ builder.createDomain(this.data.enumName, "text", {
24
+ check: createCheck(this.data.values),
25
+ constraintName: getConstraintName(this.data.enumName)
26
+ });
27
+ for (const entity of Object.values(this.schema.model.entities)) {
28
+ for (const field of Object.values(entity.fields)) {
29
+ if (field.type === Model.ColumnType.Enum && field.columnType === this.data.enumName) {
30
+ builder.alterColumn(entity.tableName, field.columnName, {
31
+ type: getColumnSqlType(field)
32
+ });
33
+ }
34
+ }
35
+ }
36
+ builder.dropDomain(oldName);
37
+ }
38
+ }
39
+ requiresNewDomain() {
40
+ return Object.values(this.schema.model.entities).some((it) => {
41
+ return Object.values(it.fields).some((field) => {
42
+ return field.type === Model.ColumnType.Enum && field.columnType === this.data.enumName && field.list;
43
+ });
44
+ });
17
45
  }
18
46
  getSchemaUpdater() {
19
47
  return updateModel(({ model }) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateEnumModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning =\n\t\t\tmissingValues.length > 0\n\t\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name] &&\n\t\t\t\t\t!deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,EAAA;AAAA,EAEzE,UAAU,SAAiC;AACjD,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,qBAChB,kBAAkB,KAAK,KAAK,QAAQ,CAAC,EAAE;AAC1D,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,oBACjB,kBAAkB,KAAK,KAAK,QAAQ,CAAC,WAAW,YAAY,KAAK,KAAK,MAAM,CAAC,GAAG;AAAA,EAAA;AAAA,EAG5F,mBAAkC;AACxC,WAAO,YAAY,CAAC,EAAE,aAAa;AAAA,MAClC,GAAG;AAAA,MACH,OAAO;AAAA,QACN,GAAG,MAAM;AAAA,QACT,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,MAAA;AAAA,IACjC,EACC;AAAA,EAAA;AAAA,EAGH,WAAW;AACV,UAAM,gBAAgB,KAAK,OAAO,MAAM,MAAM,KAAK,KAAK,QAAQ;AAC1D,UAAA,gBAAgB,cAAc,OAAO,CAAM,OAAA,CAAC,KAAK,KAAK,OAAO,SAAS,EAAE,CAAC;AACzE,UAAA,iBACL,cAAc,SAAS,IACpB,oBAAoB,cAAc,KAAK,IAAI,CAAC,0CAC5C;AACJ,WAAO,EAAE,SAAS,eAAe,KAAK,KAAK,QAAQ,IAAI,eAAe;AAAA,EAAA;AAExE;AAOO,MAAM,yBAAyB,uBAAuB;AAAA,EAC5D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,iBAAmC;AAAA,EAC/C,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,MAAM,KAAK,EAC7C;AAAA,MACA,CAAC,CAAC,IAAI,MACL,eAAe,MAAM,MAAM,IAAI,KAC/B,CAAC,UAAU,cAAc,MAAM,MAAM,IAAI,GAAG,eAAe,MAAM,MAAM,IAAI,CAAC;AAAA,IAE7E,EAAA,IAAI,CAAC,CAAC,UAAU,MAAM,MAAM,uBAAuB,mBAAmB,EAAE,UAAU,OAAA,CAAQ,CAAC;AAAA,EAAA;AAE/F;"}
1
+ {"version":3,"file":"UpdateEnumModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\nimport { getColumnSqlType } from '../utils/columnUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tif (!this.requiresNewDomain()) {\n\t\t\tbuilder.sql(`\n\t\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\t\tbuilder.sql(`\n\t\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t\t} else {\n\t\t\t/**\n\t\t\t * Because postgres does not support altering domain constrains\n\t\t\t * when used in composite types (like arrays) we need to:\n\t\t\t * - create a new domain with the new constraint\n\t\t\t * - update all the columns using the old domain to use the new domain\n\t\t\t * - drop the old domain and rename the new domain to the old name\n\t\t\t */\n\t\t\tconst oldName = `${this.data.enumName}__old`\n\t\t\tbuilder.renameDomain(this.data.enumName, oldName)\n\n\t\t\tbuilder.createDomain(this.data.enumName, 'text', {\n\t\t\t\tcheck: createCheck(this.data.values),\n\t\t\t\tconstraintName: getConstraintName(this.data.enumName),\n\t\t\t})\n\t\t\tfor (const entity of Object.values(this.schema.model.entities)) {\n\t\t\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\t\t\tif (field.type === Model.ColumnType.Enum && field.columnType === this.data.enumName) {\n\t\t\t\t\t\tbuilder.alterColumn(entity.tableName, field.columnName, {\n\t\t\t\t\t\t\ttype: getColumnSqlType(field),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbuilder.dropDomain(oldName)\n\t\t}\n\t}\n\n\tprivate requiresNewDomain(): boolean {\n\t\treturn Object.values(this.schema.model.entities).some(it => {\n\t\t\treturn Object.values(it.fields).some(field => {\n\t\t\t\treturn field.type === Model.ColumnType.Enum && field.columnType === this.data.enumName && field.list\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning = missingValues.length > 0\n\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name]\n\t\t\t\t\t&& !deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE1F,UAAU,SAAiC;AACjD,QAAI,CAAC,KAAK,qBAAqB;AAC9B,cAAQ,IAAI;AAAA,oBACK,KAAK,KAAK,QAAQ;AAAA,sBAChB,kBAAkB,KAAK,KAAK,QAAQ,CAAC,EAAE;AAC1D,cAAQ,IAAI;AAAA,oBACK,KAAK,KAAK,QAAQ;AAAA,qBACjB,kBAAkB,KAAK,KAAK,QAAQ,CAAC,WAAW,YAAY,KAAK,KAAK,MAAM,CAAC,GAAG;AAAA,IACnG,OAAO;AAQN,YAAM,UAAU,GAAG,KAAK,KAAK,QAAQ;AACrC,cAAQ,aAAa,KAAK,KAAK,UAAU,OAAO;AAEhD,cAAQ,aAAa,KAAK,KAAK,UAAU,QAAQ;AAAA,QAChD,OAAO,YAAY,KAAK,KAAK,MAAM;AAAA,QACnC,gBAAgB,kBAAkB,KAAK,KAAK,QAAQ;AAAA,MAAA,CACpD;AACD,iBAAW,UAAU,OAAO,OAAO,KAAK,OAAO,MAAM,QAAQ,GAAG;AAC/D,mBAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,cAAI,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM,eAAe,KAAK,KAAK,UAAU;AACpF,oBAAQ,YAAY,OAAO,WAAW,MAAM,YAAY;AAAA,cACvD,MAAM,iBAAiB,KAAK;AAAA,YAAA,CAC5B;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAEA,cAAQ,WAAW,OAAO;AAAA,IAC3B;AAAA,EACD;AAAA,EAEQ,oBAA6B;AACpC,WAAO,OAAO,OAAO,KAAK,OAAO,MAAM,QAAQ,EAAE,KAAK,CAAA,OAAM;AAC3D,aAAO,OAAO,OAAO,GAAG,MAAM,EAAE,KAAK,CAAA,UAAS;AAC7C,eAAO,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM,eAAe,KAAK,KAAK,YAAY,MAAM;AAAA,MACjG,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AAAA,EAEO,mBAAkC;AACxC,WAAO,YAAY,CAAC,EAAE,aAAa;AAAA,MAClC,GAAG;AAAA,MACH,OAAO;AAAA,QACN,GAAG,MAAM;AAAA,QACT,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,MAAA;AAAA,IACjC,EACC;AAAA,EACH;AAAA,EAEA,WAAW;AACV,UAAM,gBAAgB,KAAK,OAAO,MAAM,MAAM,KAAK,KAAK,QAAQ;AAChE,UAAM,gBAAgB,cAAc,OAAO,CAAA,OAAM,CAAC,KAAK,KAAK,OAAO,SAAS,EAAE,CAAC;AAC/E,UAAM,iBAAiB,cAAc,SAAS,IAC3C,oBAAoB,cAAc,KAAK,IAAI,CAAC,0CAC5C;AACH,WAAO,EAAE,SAAS,eAAe,KAAK,KAAK,QAAQ,IAAI,eAAA;AAAA,EACxD;AACD;AAOO,MAAM,yBAAyB,uBAAuB;AAAA,EAC5D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,iBAAmC;AAAA,EAC/C,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,MAAM,KAAK,EAC7C;AAAA,MACA,CAAC,CAAC,IAAI,MACL,eAAe,MAAM,MAAM,IAAI,KAC5B,CAAC,UAAU,cAAc,MAAM,MAAM,IAAI,GAAG,eAAe,MAAM,MAAM,IAAI,CAAC;AAAA,IAAA,EAEhF,IAAI,CAAC,CAAC,UAAU,MAAM,MAAM,uBAAuB,mBAAmB,EAAE,UAAU,OAAA,CAAQ,CAAC;AAAA,EAC9F;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"enumUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/enumUtils.ts"],"sourcesContent":["import { escapeSqlString } from '../../utils/escapeSqlString'\n\nexport const createCheck = (values: readonly string[]) => {\n\tconst joinedValues = values.map(it => `'${escapeSqlString(it)}'`).join(',')\n\treturn `VALUE IN(${joinedValues})`\n}\n\nexport const getConstraintName = (enumName: string) => `${enumName}_check`.toLowerCase()\n"],"names":["escapeSqlString"],"mappings":";;;AAEa,MAAA,cAAc,CAAC,WAA8B;AACnD,QAAA,eAAe,OAAO,IAAI,CAAM,OAAA,IAAIA,gBAAgB,gBAAA,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AAC1E,SAAO,YAAY,YAAY;AAChC;AAEO,MAAM,oBAAoB,CAAC,aAAqB,GAAG,QAAQ,SAAS,YAAY;;;"}
1
+ {"version":3,"file":"enumUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/enumUtils.ts"],"sourcesContent":["import { escapeSqlString } from '../../utils/escapeSqlString'\n\nexport const createCheck = (values: readonly string[]) => {\n\tconst joinedValues = values.map(it => `'${escapeSqlString(it)}'`).join(',')\n\treturn `VALUE IN(${joinedValues})`\n}\n\nexport const getConstraintName = (enumName: string) => `${enumName}_check`.toLowerCase()\n"],"names":["escapeSqlString"],"mappings":";;;AAEO,MAAM,cAAc,CAAC,WAA8B;AACzD,QAAM,eAAe,OAAO,IAAI,CAAA,OAAM,IAAIA,gBAAAA,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AAC1E,SAAO,YAAY,YAAY;AAChC;AAEO,MAAM,oBAAoB,CAAC,aAAqB,GAAG,QAAQ,SAAS,YAAA;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"enumUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/enumUtils.ts"],"sourcesContent":["import { escapeSqlString } from '../../utils/escapeSqlString'\n\nexport const createCheck = (values: readonly string[]) => {\n\tconst joinedValues = values.map(it => `'${escapeSqlString(it)}'`).join(',')\n\treturn `VALUE IN(${joinedValues})`\n}\n\nexport const getConstraintName = (enumName: string) => `${enumName}_check`.toLowerCase()\n"],"names":[],"mappings":";AAEa,MAAA,cAAc,CAAC,WAA8B;AACnD,QAAA,eAAe,OAAO,IAAI,CAAM,OAAA,IAAI,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AAC1E,SAAO,YAAY,YAAY;AAChC;AAEO,MAAM,oBAAoB,CAAC,aAAqB,GAAG,QAAQ,SAAS,YAAY;"}
1
+ {"version":3,"file":"enumUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/enumUtils.ts"],"sourcesContent":["import { escapeSqlString } from '../../utils/escapeSqlString'\n\nexport const createCheck = (values: readonly string[]) => {\n\tconst joinedValues = values.map(it => `'${escapeSqlString(it)}'`).join(',')\n\treturn `VALUE IN(${joinedValues})`\n}\n\nexport const getConstraintName = (enumName: string) => `${enumName}_check`.toLowerCase()\n"],"names":[],"mappings":";AAEO,MAAM,cAAc,CAAC,WAA8B;AACzD,QAAM,eAAe,OAAO,IAAI,CAAA,OAAM,IAAI,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AAC1E,SAAO,YAAY,YAAY;AAChC;AAEO,MAAM,oBAAoB,CAAC,aAAqB,GAAG,QAAQ,SAAS,YAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveFieldModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["acceptFieldVisitor","entity","removeField","createModificationType","isRelation","isInverseRelation","isDefined"],"mappings":";;;;;;AAOO,MAAM,+BAA2F;AAAA,EAEvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAGX,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEkBA,mCAAA,KAAK,OAAO,OAAO,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW;AAAA,MAChF,aAAa,CAAC,EAAE,QAAAC,SAAQ,aAAa;AACpC,gBAAQ,WAAWA,QAAO,WAAW,OAAO,UAAU;AAAA,MACvD;AAAA,MACA,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC1C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,iBAAiB,MAAM;AAAA,MAAC;AAAA,MACxB,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC/C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAC;AAAA,MAC9B,wBAAwB,CAAC,EAAE,eAAe;AACjC,gBAAA,UAAU,SAAS,aAAa,SAAS;AAAA,MAClD;AAAA,MACA,yBAAyB,MAAM;AAAA,MAAA;AAAA,IAAC,CAChC;AAAA,EAAA;AAAA,EAGK,mBAAkC;AACjC,WAAAC,8BAAY,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,QAAQ,aAAa;AAAA,EAAA;AAAA,EAGzF,WAAW;AACV,WAAO,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAK;AAAA,EAAA;AAGvG;AAOO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAU,WAAA;AAClB,YAAM,iBAAiB,eAAe,MAAM,SAAS,OAAO,IAAI;AAEhE,aAAO,OAAO,OAAO,eAAe,MAAM,EACxC,OAAO,CAAA,UAAS,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC,EAC1C,IAAI,CAAS,UAAA;AACb,YAAIC,YAAW,WAAA,KAAK,KAAKC,YAAA,kBAAkB,KAAK,GAAG;AAClD,gBAAM,SAAS,cAAc,MAAM,SAAS,MAAM,MAAM;AACxD,cAAI,CAAC,UAAU,CAAC,OAAO,OAAO,MAAM,OAAO,GAAG;AACtC,mBAAA;AAAA,UAAA;AAAA,QACR;AAED,eAAO,wBAAwB,mBAAmB;AAAA,UACjD,YAAY,OAAO;AAAA,UACnB,WAAW,MAAM;AAAA,QAAA,CACjB;AAAA,MAAA,CACD,EACA,OAAOC,mBAAS;AAAA,IAAA,CAClB;AAAA,EAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RemoveFieldModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["acceptFieldVisitor","entity","removeField","createModificationType","isRelation","isInverseRelation","isDefined"],"mappings":";;;;;;AAOO,MAAM,+BAA2F;AAAA,EACvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,EACf;AAAA,EAEI,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACAA,mCAAmB,KAAK,OAAO,OAAO,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW;AAAA,MAChF,aAAa,CAAC,EAAE,QAAAC,SAAQ,aAAa;AACpC,gBAAQ,WAAWA,QAAO,WAAW,OAAO,UAAU;AAAA,MACvD;AAAA,MACA,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC1C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,iBAAiB,MAAM;AAAA,MAAC;AAAA,MACxB,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC/C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAC;AAAA,MAC9B,wBAAwB,CAAC,EAAE,eAAe;AACzC,gBAAQ,UAAU,SAAS,aAAa,SAAS;AAAA,MAClD;AAAA,MACA,yBAAyB,MAAM;AAAA,MAAC;AAAA,IAAA,CAChC;AAAA,EACF;AAAA,EAEO,mBAAkC;AACxC,WAAOC,8BAAY,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,QAAQ,aAAa;AAAA,EACzF;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAA;AAAA,EACjG;AACD;AAOO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAA,MAAW,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAA,WAAU;AAClB,YAAM,iBAAiB,eAAe,MAAM,SAAS,OAAO,IAAI;AAEhE,aAAO,OAAO,OAAO,eAAe,MAAM,EACxC,OAAO,CAAA,UAAS,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC,EAC1C,IAAI,CAAA,UAAS;AACb,YAAIC,YAAAA,WAAW,KAAK,KAAKC,YAAAA,kBAAkB,KAAK,GAAG;AAClD,gBAAM,SAAS,cAAc,MAAM,SAAS,MAAM,MAAM;AACxD,cAAI,CAAC,UAAU,CAAC,OAAO,OAAO,MAAM,OAAO,GAAG;AAC7C,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO,wBAAwB,mBAAmB;AAAA,UACjD,YAAY,OAAO;AAAA,UACnB,WAAW,MAAM;AAAA,QAAA,CACjB;AAAA,MACF,CAAC,EACA,OAAOC,mBAAS;AAAA,IACnB,CAAC;AAAA,EACH;AACD;;;;"}
@@ -1,4 +1,4 @@
1
- import { acceptFieldVisitor, isRelation, isInverseRelation } from "@contember/schema-utils";
1
+ import { isRelation, isInverseRelation, acceptFieldVisitor } from "@contember/schema-utils";
2
2
  import { removeField } from "../utils/schemaUpdateUtils.js";
3
3
  import { createModificationType } from "../ModificationHandler.js";
4
4
  import { isDefined } from "../../utils/isDefined.js";
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveFieldModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["entity"],"mappings":";;;;AAOO,MAAM,+BAA2F;AAAA,EAEvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAGX,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEkB,uBAAA,KAAK,OAAO,OAAO,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW;AAAA,MAChF,aAAa,CAAC,EAAE,QAAAA,SAAQ,aAAa;AACpC,gBAAQ,WAAWA,QAAO,WAAW,OAAO,UAAU;AAAA,MACvD;AAAA,MACA,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC1C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,iBAAiB,MAAM;AAAA,MAAC;AAAA,MACxB,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC/C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAC;AAAA,MAC9B,wBAAwB,CAAC,EAAE,eAAe;AACjC,gBAAA,UAAU,SAAS,aAAa,SAAS;AAAA,MAClD;AAAA,MACA,yBAAyB,MAAM;AAAA,MAAA;AAAA,IAAC,CAChC;AAAA,EAAA;AAAA,EAGK,mBAAkC;AACjC,WAAA,YAAY,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,QAAQ,aAAa;AAAA,EAAA;AAAA,EAGzF,WAAW;AACV,WAAO,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAK;AAAA,EAAA;AAGvG;AAOO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAU,WAAA;AAClB,YAAM,iBAAiB,eAAe,MAAM,SAAS,OAAO,IAAI;AAEhE,aAAO,OAAO,OAAO,eAAe,MAAM,EACxC,OAAO,CAAA,UAAS,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC,EAC1C,IAAI,CAAS,UAAA;AACb,YAAI,WAAW,KAAK,KAAK,kBAAkB,KAAK,GAAG;AAClD,gBAAM,SAAS,cAAc,MAAM,SAAS,MAAM,MAAM;AACxD,cAAI,CAAC,UAAU,CAAC,OAAO,OAAO,MAAM,OAAO,GAAG;AACtC,mBAAA;AAAA,UAAA;AAAA,QACR;AAED,eAAO,wBAAwB,mBAAmB;AAAA,UACjD,YAAY,OAAO;AAAA,UACnB,WAAW,MAAM;AAAA,QAAA,CACjB;AAAA,MAAA,CACD,EACA,OAAO,SAAS;AAAA,IAAA,CAClB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"RemoveFieldModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["entity"],"mappings":";;;;AAOO,MAAM,+BAA2F;AAAA,EACvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,EACf;AAAA,EAEI,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACA,uBAAmB,KAAK,OAAO,OAAO,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW;AAAA,MAChF,aAAa,CAAC,EAAE,QAAAA,SAAQ,aAAa;AACpC,gBAAQ,WAAWA,QAAO,WAAW,OAAO,UAAU;AAAA,MACvD;AAAA,MACA,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC1C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,iBAAiB,MAAM;AAAA,MAAC;AAAA,MACxB,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC/C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAC;AAAA,MAC9B,wBAAwB,CAAC,EAAE,eAAe;AACzC,gBAAQ,UAAU,SAAS,aAAa,SAAS;AAAA,MAClD;AAAA,MACA,yBAAyB,MAAM;AAAA,MAAC;AAAA,IAAA,CAChC;AAAA,EACF;AAAA,EAEO,mBAAkC;AACxC,WAAO,YAAY,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,QAAQ,aAAa;AAAA,EACzF;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAA;AAAA,EACjG;AACD;AAOO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAA,MAAW,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAA,WAAU;AAClB,YAAM,iBAAiB,eAAe,MAAM,SAAS,OAAO,IAAI;AAEhE,aAAO,OAAO,OAAO,eAAe,MAAM,EACxC,OAAO,CAAA,UAAS,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC,EAC1C,IAAI,CAAA,UAAS;AACb,YAAI,WAAW,KAAK,KAAK,kBAAkB,KAAK,GAAG;AAClD,gBAAM,SAAS,cAAc,MAAM,SAAS,MAAM,MAAM;AACxD,cAAI,CAAC,UAAU,CAAC,OAAO,OAAO,MAAM,OAAO,GAAG;AAC7C,mBAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO,wBAAwB,mBAAmB;AAAA,UACjD,YAAY,OAAO;AAAA,UACnB,WAAW,MAAM;AAAA,QAAA,CACjB;AAAA,MACF,CAAC,EACA,OAAO,SAAS;AAAA,IACnB,CAAC;AAAA,EACH;AACD;"}
@@ -20,11 +20,15 @@ class UpdateFieldNameModificationHandler {
20
20
  this.options = options;
21
21
  __publicField(this, "renameColumnSubModification", new NoopModification.NoopModification());
22
22
  if (this.data.columnName) {
23
- this.renameColumnSubModification = UpdateColumnNameModification.updateColumnNameModification.createHandler({
24
- entityName: this.data.entityName,
25
- columnName: this.data.columnName,
26
- fieldName: this.data.fieldName
27
- }, this.schema, this.options);
23
+ this.renameColumnSubModification = UpdateColumnNameModification.updateColumnNameModification.createHandler(
24
+ {
25
+ entityName: this.data.entityName,
26
+ columnName: this.data.columnName,
27
+ fieldName: this.data.fieldName
28
+ },
29
+ this.schema,
30
+ this.options
31
+ );
28
32
  }
29
33
  }
30
34
  createSql(builder, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateFieldNameModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport {\n\tVERSION_ACL_PATCH,\n\tVERSION_UPDATE_CONSTRAINT_FIELDS,\n\tVERSION_UPDATE_INDEX_FIELDS,\n} from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler({\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t}, this.schema, this.options)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t })\n\t\t\t\t: undefined\n\t\tconst updateIndexFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp =\n\t\t\tthis.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["NoopModification","updateColumnNameModification","VERSION_UPDATE_CONSTRAINT_FIELDS","updateEntity","changeValue","VERSION_UPDATE_INDEX_FIELDS","updateEveryEntity","updateEveryField","entity","acceptFieldVisitor","VERSION_ACL_PATCH","updateAcl","updateAclEveryRole","updateAclEveryEntity","updateAclFieldPermissions","updateAclEveryPredicate","PredicateDefinitionProcessor","updateSchema","updateModel","createModificationType"],"mappings":"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"}
1
+ {"version":3,"file":"UpdateFieldNameModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler, ModificationHandlerCreateSqlOptions, ModificationHandlerOptions } from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport { VERSION_ACL_PATCH, VERSION_UPDATE_CONSTRAINT_FIELDS, VERSION_UPDATE_INDEX_FIELDS } from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: this.data.entityName,\n\t\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\t},\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields = this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t...unique,\n\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t})\n\t\t\t: undefined\n\t\tconst updateIndexFields = this.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t...unique,\n\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t})\n\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp = this.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t? updateAcl(\n\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t)\n\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["NoopModification","updateColumnNameModification","VERSION_UPDATE_CONSTRAINT_FIELDS","updateEntity","changeValue","VERSION_UPDATE_INDEX_FIELDS","updateEveryEntity","updateEveryField","entity","acceptFieldVisitor","VERSION_ACL_PATCH","updateAcl","updateAclEveryRole","updateAclEveryEntity","updateAclFieldPermissions","updateAclEveryPredicate","PredicateDefinitionProcessor","updateSchema","updateModel","createModificationType"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { updateEntity, updateAcl, updateSchema, updateAclEveryRole, updateModel, updateEveryEntity, updateEveryField, updateAclEveryEntity, updateAclEveryPredicate, updateAclFieldPermissions } from "../utils/schemaUpdateUtils.js";
1
+ import { updateEntity, updateAcl, updateAclEveryRole, updateAclEveryEntity, updateSchema, updateModel, updateAclEveryPredicate, updateAclFieldPermissions, updateEveryEntity, updateEveryField } from "../utils/schemaUpdateUtils.js";
2
2
  import { createModificationType } from "../ModificationHandler.js";
3
3
  import { acceptFieldVisitor, PredicateDefinitionProcessor } from "@contember/schema-utils";
4
4
  import { VERSION_UPDATE_CONSTRAINT_FIELDS, VERSION_UPDATE_INDEX_FIELDS, VERSION_ACL_PATCH } from "../ModificationVersions.js";
@@ -18,11 +18,15 @@ class UpdateFieldNameModificationHandler {
18
18
  this.options = options;
19
19
  __publicField(this, "renameColumnSubModification", new NoopModification());
20
20
  if (this.data.columnName) {
21
- this.renameColumnSubModification = updateColumnNameModification.createHandler({
22
- entityName: this.data.entityName,
23
- columnName: this.data.columnName,
24
- fieldName: this.data.fieldName
25
- }, this.schema, this.options);
21
+ this.renameColumnSubModification = updateColumnNameModification.createHandler(
22
+ {
23
+ entityName: this.data.entityName,
24
+ columnName: this.data.columnName,
25
+ fieldName: this.data.fieldName
26
+ },
27
+ this.schema,
28
+ this.options
29
+ );
26
30
  }
27
31
  }
28
32
  createSql(builder, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateFieldNameModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport {\n\tVERSION_ACL_PATCH,\n\tVERSION_UPDATE_CONSTRAINT_FIELDS,\n\tVERSION_UPDATE_INDEX_FIELDS,\n} from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler({\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t}, this.schema, this.options)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t })\n\t\t\t\t: undefined\n\t\tconst updateIndexFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp =\n\t\t\tthis.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["entity"],"mappings":"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"}
1
+ {"version":3,"file":"UpdateFieldNameModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler, ModificationHandlerCreateSqlOptions, ModificationHandlerOptions } from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport { VERSION_ACL_PATCH, VERSION_UPDATE_CONSTRAINT_FIELDS, VERSION_UPDATE_INDEX_FIELDS } from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: this.data.entityName,\n\t\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\t},\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields = this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t...unique,\n\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t})\n\t\t\t: undefined\n\t\tconst updateIndexFields = this.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t...unique,\n\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t})\n\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp = this.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t? updateAcl(\n\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t)\n\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["entity"],"mappings":"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"}
@@ -23,7 +23,8 @@ class CreateIndexModificationHandler {
23
23
  });
24
24
  const tableNameId = dbHelpers.wrapIdentifier(entity.tableName);
25
25
  const columnNameIds = columns.map(dbHelpers.wrapIdentifier);
26
- builder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(", ")})`);
26
+ const methodClause = this.data.index.method ? ` USING ${this.data.index.method}` : "";
27
+ builder.sql(`CREATE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(", ")})`);
27
28
  invalidateDatabaseMetadata();
28
29
  }
29
30
  getSchemaUpdater() {
@@ -38,8 +39,9 @@ class CreateIndexModificationHandler {
38
39
  );
39
40
  }
40
41
  describe() {
42
+ const methodText = this.data.index.method ? ` using ${this.data.index.method}` : "";
41
43
  return {
42
- message: `Create index(${this.data.index.fields.join(", ")}) on entity ${this.data.entityName}`
44
+ message: `Create index(${this.data.index.fields.join(", ")})${methodText} on entity ${this.data.entityName}`
43
45
  };
44
46
  }
45
47
  }
@@ -50,10 +52,12 @@ const createIndexModification = ModificationHandler.createModificationType({
50
52
  class CreateIndexDiffer {
51
53
  createDiff(originalSchema, updatedSchema) {
52
54
  return Object.values(updatedSchema.model.entities).flatMap(
53
- (entity) => entity.indexes.filter((it) => !originalSchema.model.entities[entity.name].indexes.find((idx) => deepEqual(idx, it))).map((index) => createIndexModification.createModification({
54
- entityName: entity.name,
55
- index
56
- }))
55
+ (entity) => entity.indexes.filter((it) => !originalSchema.model.entities[entity.name].indexes.find((idx) => deepEqual(idx, it))).map(
56
+ (index) => createIndexModification.createModification({
57
+ entityName: entity.name,
58
+ index
59
+ })
60
+ )
57
61
  );
58
62
  }
59
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx, it)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAUA,MAAAA,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAEK,UAAA,cAAcC,UAAAA,eAAe,OAAO,SAAS;AAC7C,UAAA,gBAAgB,QAAQ,IAAIA,wBAAc;AAExC,YAAA,IAAI,mBAAmB,WAAW,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAE/C,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AACjC,WAAAC,kBAAA;AAAA,MACNC,+BAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IACH;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU;AAAA,IAC9F;AAAA,EAAA;AAEF;AAEO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,CAAA,OAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAA,QAAO,UAAU,KAAK,EAAE,CAAC,CAAC,EAChG,IAAI,CAAS,UAAA,wBAAwB,mBAAmB;AAAA,QACxD,YAAY,OAAO;AAAA,QACnB;AAAA,MAAA,CACA,CAAC;AAAA,IACJ;AAAA,EAAA;AAEF;;;;"}
1
+ {"version":3,"file":"CreateIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\t\tconst methodClause = this.data.index.method ? ` USING ${this.data.index.method}` : ''\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst methodText = this.data.index.method ? ` using ${this.data.index.method}` : ''\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')})${methodText} on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx, it)))\n\t\t\t\t.map(index =>\n\t\t\t\t\tcreateIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAQO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE3F,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAUA,MAAAA,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAED,UAAM,cAAcC,UAAAA,eAAe,OAAO,SAAS;AACnD,UAAM,gBAAgB,QAAQ,IAAIA,wBAAc;AAChD,UAAM,eAAe,KAAK,KAAK,MAAM,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK;AAEnF,YAAQ,IAAI,mBAAmB,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAEzF,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAOC,kBAAAA;AAAAA,MACNC,kBAAAA,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,WAAW;AACV,UAAM,aAAa,KAAK,KAAK,MAAM,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK;AACjF,WAAO;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,IAAI,UAAU,cAAc,KAAK,KAAK,UAAU;AAAA,IAAA;AAAA,EAE5G;AACD;AAEO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,QAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAA,QAAO,UAAU,KAAK,EAAE,CAAC,CAAC,EAChG;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB;AAAA,QAAA,CACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;;;;"}
@@ -21,7 +21,8 @@ class CreateIndexModificationHandler {
21
21
  });
22
22
  const tableNameId = wrapIdentifier(entity.tableName);
23
23
  const columnNameIds = columns.map(wrapIdentifier);
24
- builder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(", ")})`);
24
+ const methodClause = this.data.index.method ? ` USING ${this.data.index.method}` : "";
25
+ builder.sql(`CREATE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(", ")})`);
25
26
  invalidateDatabaseMetadata();
26
27
  }
27
28
  getSchemaUpdater() {
@@ -36,8 +37,9 @@ class CreateIndexModificationHandler {
36
37
  );
37
38
  }
38
39
  describe() {
40
+ const methodText = this.data.index.method ? ` using ${this.data.index.method}` : "";
39
41
  return {
40
- message: `Create index(${this.data.index.fields.join(", ")}) on entity ${this.data.entityName}`
42
+ message: `Create index(${this.data.index.fields.join(", ")})${methodText} on entity ${this.data.entityName}`
41
43
  };
42
44
  }
43
45
  }
@@ -48,10 +50,12 @@ const createIndexModification = createModificationType({
48
50
  class CreateIndexDiffer {
49
51
  createDiff(originalSchema, updatedSchema) {
50
52
  return Object.values(updatedSchema.model.entities).flatMap(
51
- (entity) => entity.indexes.filter((it) => !originalSchema.model.entities[entity.name].indexes.find((idx) => deepEqual(idx, it))).map((index) => createIndexModification.createModification({
52
- entityName: entity.name,
53
- index
54
- }))
53
+ (entity) => entity.indexes.filter((it) => !originalSchema.model.entities[entity.name].indexes.find((idx) => deepEqual(idx, it))).map(
54
+ (index) => createIndexModification.createModification({
55
+ entityName: entity.name,
56
+ index
57
+ })
58
+ )
55
59
  );
56
60
  }
57
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx, it)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAU,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAEK,UAAA,cAAc,eAAe,OAAO,SAAS;AAC7C,UAAA,gBAAgB,QAAQ,IAAI,cAAc;AAExC,YAAA,IAAI,mBAAmB,WAAW,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAE/C,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AACjC,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IACH;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU;AAAA,IAC9F;AAAA,EAAA;AAEF;AAEO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,CAAA,OAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAA,QAAO,UAAU,KAAK,EAAE,CAAC,CAAC,EAChG,IAAI,CAAS,UAAA,wBAAwB,mBAAmB;AAAA,QACxD,YAAY,OAAO;AAAA,QACnB;AAAA,MAAA,CACA,CAAC;AAAA,IACJ;AAAA,EAAA;AAEF;"}
1
+ {"version":3,"file":"CreateIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\t\tconst methodClause = this.data.index.method ? ` USING ${this.data.index.method}` : ''\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst methodText = this.data.index.method ? ` using ${this.data.index.method}` : ''\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')})${methodText} on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx, it)))\n\t\t\t\t.map(index =>\n\t\t\t\t\tcreateIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAQO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE3F,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAU,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAED,UAAM,cAAc,eAAe,OAAO,SAAS;AACnD,UAAM,gBAAgB,QAAQ,IAAI,cAAc;AAChD,UAAM,eAAe,KAAK,KAAK,MAAM,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK;AAEnF,YAAQ,IAAI,mBAAmB,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAEzF,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAO;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,WAAW;AACV,UAAM,aAAa,KAAK,KAAK,MAAM,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK;AACjF,WAAO;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,IAAI,UAAU,cAAc,KAAK,KAAK,UAAU;AAAA,IAAA;AAAA,EAE5G;AACD;AAEO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,QAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAA,QAAO,UAAU,KAAK,EAAE,CAAC,CAAC,EAChG;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB;AAAA,QAAA,CACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/RemoveIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getIndexColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {\n\tconstructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.getFields()\n\n\t\tconst columns = getIndexColumns({\n\t\t\tentity,\n\t\t\tfields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns, unique: false }).getNames()\n\n\t\tfor (const name of indexNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst fields = this.getFields()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst fields = this.getFields()\n\t\treturn { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetFields() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst fields = 'indexName' in this.data\n\t\t\t? entity.indexes.find(it => it.name === this.data.indexName)?.fields\n\t\t\t: this.data.fields\n\t\tif (!fields) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn fields\n\t}\n}\n\nexport const removeIndexModification = createModificationType({\n\tid: 'removeIndex',\n\thandler: RemoveIndexModificationHandler,\n})\n\n\nexport type RemoveIndexModificationData =\n\t| {\n\t\tentityName: string\n\t\tindexName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tindexName?: never\n\t}\n\nexport class RemoveIndexDiffer implements Differ {\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(\n\t\t\t\t\tit => {\n\t\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn !updatedEntity.indexes.find(index => deepEqual(index, it))\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.map(index =>\n\t\t\t\t\tremoveIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tfields: index.fields,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAaO,MAAM,+BAA4F;AAAA,EACxG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,UAAU;AAE9B,UAAM,UAAUA,MAAAA,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAED,UAAM,aAAa,iBAAiB,QAAQ,OAAO,EAAE,WAAW,OAAO,WAAW,aAAa,SAAS,QAAQ,MAAO,CAAA,EAAE,SAAS;AAElI,eAAW,QAAQ,YAAY;AAC9B,cAAQ,IAAI,cAAcC,UAAAA,eAAe,IAAI,CAAC,EAAE;AAAA,IAAA;AAEtB,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AAClC,UAAA,SAAS,KAAK,UAAU;AACvB,WAAAC,kBAAA;AAAA,MACNC,+BAAa,KAAK,KAAK,YAAY,CAAC,EAAE,aAAa;AAC5C,cAAA,UAAU,OAAO,QAAQ,OAAO,CAAA,OAAM,CAAC,UAAU,GAAG,QAAQ,MAAM,CAAC;AAClE,eAAA;AAAA,UACN,GAAG;AAAA,UACH;AAAA,QACD;AAAA,MACA,CAAA;AAAA,IACF;AAAA,EAAA;AAAA,EAGD,WAAW;AACJ,UAAA,SAAS,KAAK,UAAU;AACvB,WAAA,EAAE,SAAS,iBAAiB,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU,GAAG;AAAA,EAAA;AAAA,EAG3F,YAAY;AACX,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,SAAS,eAAe,KAAK,OAChC,OAAO,QAAQ,KAAK,CAAA,OAAM,GAAG,SAAS,KAAK,KAAK,SAAS,GAAG,SAC5D,KAAK,KAAK;AACb,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA;AAAA,EAAA;AAET;AAEO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAeM,MAAM,kBAAoC;AAAA,EAEhD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,eAAe,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC3D,OAAO,QACL;AAAA,QACA,CAAM,OAAA;AACL,gBAAM,gBAAgB,cAAc,MAAM,SAAS,OAAO,IAAI;AAC9D,cAAI,CAAC,eAAe;AACZ,mBAAA;AAAA,UAAA;AAED,iBAAA,CAAC,cAAc,QAAQ,KAAK,WAAS,UAAU,OAAO,EAAE,CAAC;AAAA,QAAA;AAAA,MACjE,EAEA;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB,QAAQ,MAAM;AAAA,QACd,CAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAEF;;;;"}
1
+ {"version":3,"file":"RemoveIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/RemoveIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getIndexColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {\n\tconstructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.getFields()\n\n\t\tconst columns = getIndexColumns({\n\t\t\tentity,\n\t\t\tfields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns, unique: false }).getNames()\n\n\t\tfor (const name of indexNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst fields = this.getFields()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst fields = this.getFields()\n\t\treturn { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetFields() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst fields = 'indexName' in this.data\n\t\t\t? entity.indexes.find(it => it.name === this.data.indexName)?.fields\n\t\t\t: this.data.fields\n\t\tif (!fields) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn fields\n\t}\n}\n\nexport const removeIndexModification = createModificationType({\n\tid: 'removeIndex',\n\thandler: RemoveIndexModificationHandler,\n})\n\nexport type RemoveIndexModificationData =\n\t| {\n\t\tentityName: string\n\t\tindexName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tindexName?: never\n\t}\n\nexport class RemoveIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(\n\t\t\t\t\tit => {\n\t\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn !updatedEntity.indexes.find(index => deepEqual(index, it))\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.map(index =>\n\t\t\t\t\tremoveIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tfields: index.fields,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAQO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE3F,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IACD;AACA,UAAM,SAAS,KAAK,UAAA;AAEpB,UAAM,UAAUA,MAAAA,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAED,UAAM,aAAa,iBAAiB,QAAQ,OAAO,EAAE,WAAW,OAAO,WAAW,aAAa,SAAS,QAAQ,MAAA,CAAO,EAAE,SAAA;AAEzH,eAAW,QAAQ,YAAY;AAC9B,cAAQ,IAAI,cAAcC,UAAAA,eAAe,IAAI,CAAC,EAAE;AAAA,IACjD;AACA,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,UAAM,SAAS,KAAK,UAAA;AACpB,WAAOC,kBAAAA;AAAAA,MACNC,kBAAAA,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,aAAa;AAClD,cAAM,UAAU,OAAO,QAAQ,OAAO,CAAA,OAAM,CAAC,UAAU,GAAG,QAAQ,MAAM,CAAC;AACzE,eAAO;AAAA,UACN,GAAG;AAAA,UACH;AAAA,QAAA;AAAA,MAEF,CAAC;AAAA,IAAA;AAAA,EAEH;AAAA,EAEA,WAAW;AACV,UAAM,SAAS,KAAK,UAAA;AACpB,WAAO,EAAE,SAAS,iBAAiB,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU,GAAA;AAAA,EACxF;AAAA,EAEA,YAAY;AACX,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,SAAS,eAAe,KAAK,OAChC,OAAO,QAAQ,KAAK,CAAA,OAAM,GAAG,SAAS,KAAK,KAAK,SAAS,GAAG,SAC5D,KAAK,KAAK;AACb,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAA;AAAA,IACX;AACA,WAAO;AAAA,EACR;AACD;AAEO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAcM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,eAAe,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC3D,OAAO,QACL;AAAA,QACA,CAAA,OAAM;AACL,gBAAM,gBAAgB,cAAc,MAAM,SAAS,OAAO,IAAI;AAC9D,cAAI,CAAC,eAAe;AACnB,mBAAO;AAAA,UACR;AACA,iBAAO,CAAC,cAAc,QAAQ,KAAK,WAAS,UAAU,OAAO,EAAE,CAAC;AAAA,QACjE;AAAA,MAAA,EAEA;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB,QAAQ,MAAM;AAAA,QAAA,CACd;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;;;;"}