@contember/schema-migrations 2.0.0-alpha.32 → 2.0.0-alpha.35

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 (293) hide show
  1. package/dist/development/src/MigrationDescriber.cjs.map +1 -1
  2. package/dist/development/src/MigrationDescriber.js.map +1 -1
  3. package/dist/development/src/SchemaDiffer.cjs.map +1 -1
  4. package/dist/development/src/SchemaDiffer.js.map +1 -1
  5. package/dist/development/src/SchemaMigrator.cjs.map +1 -1
  6. package/dist/development/src/SchemaMigrator.js.map +1 -1
  7. package/dist/development/src/modifications/ModificationHandler.cjs.map +1 -1
  8. package/dist/development/src/modifications/ModificationHandler.js.map +1 -1
  9. package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  10. package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
  11. package/dist/development/src/modifications/NoopModification.cjs.map +1 -1
  12. package/dist/development/src/modifications/NoopModification.js.map +1 -1
  13. package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
  14. package/dist/development/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  15. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
  16. package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  17. package/dist/development/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
  18. package/dist/development/src/modifications/actions/CreateTargetModification.js.map +1 -1
  19. package/dist/development/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
  20. package/dist/development/src/modifications/actions/CreateTriggerModification.js.map +1 -1
  21. package/dist/development/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
  22. package/dist/development/src/modifications/actions/RemoveTargetModification.js.map +1 -1
  23. package/dist/development/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
  24. package/dist/development/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
  25. package/dist/development/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
  26. package/dist/development/src/modifications/actions/UpdateTargetModification.js.map +1 -1
  27. package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  28. package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  29. package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  30. package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
  31. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  32. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  33. package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
  34. package/dist/development/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  35. package/dist/development/src/modifications/columns/columnUtils.cjs.map +1 -1
  36. package/dist/development/src/modifications/columns/columnUtils.js.map +1 -1
  37. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  38. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  39. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  40. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  41. package/dist/development/src/modifications/constraints/utils.cjs.map +1 -1
  42. package/dist/development/src/modifications/constraints/utils.js.map +1 -1
  43. package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
  44. package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
  45. package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
  46. package/dist/development/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
  47. package/dist/development/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  48. package/dist/development/src/modifications/entities/CreateEntityModification.js.map +1 -1
  49. package/dist/development/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  50. package/dist/development/src/modifications/entities/CreateViewModification.js.map +1 -1
  51. package/dist/development/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  52. package/dist/development/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  53. package/dist/development/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
  54. package/dist/development/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  55. package/dist/development/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
  56. package/dist/development/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  57. package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
  58. package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
  59. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
  60. package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  61. package/dist/development/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
  62. package/dist/development/src/modifications/entities/UpdateViewModification.js.map +1 -1
  63. package/dist/development/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
  64. package/dist/development/src/modifications/enums/CreateEnumModification.js.map +1 -1
  65. package/dist/development/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
  66. package/dist/development/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  67. package/dist/development/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
  68. package/dist/development/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  69. package/dist/development/src/modifications/enums/enumUtils.cjs.map +1 -1
  70. package/dist/development/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
  71. package/dist/development/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  72. package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
  73. package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  74. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  75. package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  76. package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  77. package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  78. package/dist/development/src/modifications/indexes/utils.cjs.map +1 -1
  79. package/dist/development/src/modifications/indexes/utils.js.map +1 -1
  80. package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
  81. package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  82. package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
  83. package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
  84. package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
  85. package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  86. package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
  87. package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  88. package/dist/development/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
  89. package/dist/development/src/modifications/relations/CreateRelationModification.js.map +1 -1
  90. package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
  91. package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  92. package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
  93. package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  94. package/dist/development/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
  95. package/dist/development/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  96. package/dist/development/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
  97. package/dist/development/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  98. package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
  99. package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  100. package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
  101. package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  102. package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
  103. package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  104. package/dist/development/src/modifications/relations/helpers.cjs.map +1 -1
  105. package/dist/development/src/modifications/relations/helpers.js.map +1 -1
  106. package/dist/development/src/modifications/relations/normalization.cjs.map +1 -1
  107. package/dist/development/src/modifications/relations/normalization.js.map +1 -1
  108. package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
  109. package/dist/development/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
  110. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  111. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  112. package/dist/development/src/modifications/utils/createJunctionTable.cjs.map +1 -1
  113. package/dist/development/src/modifications/utils/createJunctionTable.js.map +1 -1
  114. package/dist/development/src/modifications/utils/diffUtils.cjs.map +1 -1
  115. package/dist/development/src/modifications/utils/diffUtils.js.map +1 -1
  116. package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  117. package/dist/development/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  118. package/dist/development/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
  119. package/dist/development/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
  120. package/dist/development/src/modifications/utils/viewDependencies.cjs.map +1 -1
  121. package/dist/development/src/modifications/utils/viewDependencies.js.map +1 -1
  122. package/dist/development/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
  123. package/dist/development/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  124. package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
  125. package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  126. package/dist/development/src/utils/deepCopy.cjs.map +1 -1
  127. package/dist/development/src/utils/deepCopy.js.map +1 -1
  128. package/dist/production/src/MigrationDescriber.cjs.map +1 -1
  129. package/dist/production/src/MigrationDescriber.js.map +1 -1
  130. package/dist/production/src/SchemaDiffer.cjs.map +1 -1
  131. package/dist/production/src/SchemaDiffer.js.map +1 -1
  132. package/dist/production/src/SchemaMigrator.cjs.map +1 -1
  133. package/dist/production/src/SchemaMigrator.js.map +1 -1
  134. package/dist/production/src/modifications/ModificationHandler.cjs.map +1 -1
  135. package/dist/production/src/modifications/ModificationHandler.js.map +1 -1
  136. package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  137. package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
  138. package/dist/production/src/modifications/NoopModification.cjs.map +1 -1
  139. package/dist/production/src/modifications/NoopModification.js.map +1 -1
  140. package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
  141. package/dist/production/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  142. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
  143. package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  144. package/dist/production/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
  145. package/dist/production/src/modifications/actions/CreateTargetModification.js.map +1 -1
  146. package/dist/production/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
  147. package/dist/production/src/modifications/actions/CreateTriggerModification.js.map +1 -1
  148. package/dist/production/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
  149. package/dist/production/src/modifications/actions/RemoveTargetModification.js.map +1 -1
  150. package/dist/production/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
  151. package/dist/production/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
  152. package/dist/production/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
  153. package/dist/production/src/modifications/actions/UpdateTargetModification.js.map +1 -1
  154. package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  155. package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  156. package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  157. package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
  158. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  159. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  160. package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
  161. package/dist/production/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  162. package/dist/production/src/modifications/columns/columnUtils.cjs.map +1 -1
  163. package/dist/production/src/modifications/columns/columnUtils.js.map +1 -1
  164. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  165. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  166. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  167. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  168. package/dist/production/src/modifications/constraints/utils.cjs.map +1 -1
  169. package/dist/production/src/modifications/constraints/utils.js.map +1 -1
  170. package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
  171. package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
  172. package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
  173. package/dist/production/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
  174. package/dist/production/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  175. package/dist/production/src/modifications/entities/CreateEntityModification.js.map +1 -1
  176. package/dist/production/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  177. package/dist/production/src/modifications/entities/CreateViewModification.js.map +1 -1
  178. package/dist/production/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  179. package/dist/production/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  180. package/dist/production/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
  181. package/dist/production/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  182. package/dist/production/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
  183. package/dist/production/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  184. package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
  185. package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
  186. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
  187. package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  188. package/dist/production/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
  189. package/dist/production/src/modifications/entities/UpdateViewModification.js.map +1 -1
  190. package/dist/production/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
  191. package/dist/production/src/modifications/enums/CreateEnumModification.js.map +1 -1
  192. package/dist/production/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
  193. package/dist/production/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  194. package/dist/production/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
  195. package/dist/production/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  196. package/dist/production/src/modifications/enums/enumUtils.cjs.map +1 -1
  197. package/dist/production/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
  198. package/dist/production/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  199. package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
  200. package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  201. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  202. package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  203. package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  204. package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  205. package/dist/production/src/modifications/indexes/utils.cjs.map +1 -1
  206. package/dist/production/src/modifications/indexes/utils.js.map +1 -1
  207. package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
  208. package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  209. package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
  210. package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
  211. package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
  212. package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  213. package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
  214. package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  215. package/dist/production/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
  216. package/dist/production/src/modifications/relations/CreateRelationModification.js.map +1 -1
  217. package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
  218. package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  219. package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
  220. package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  221. package/dist/production/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
  222. package/dist/production/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  223. package/dist/production/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
  224. package/dist/production/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  225. package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
  226. package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  227. package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
  228. package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  229. package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
  230. package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  231. package/dist/production/src/modifications/relations/helpers.cjs.map +1 -1
  232. package/dist/production/src/modifications/relations/helpers.js.map +1 -1
  233. package/dist/production/src/modifications/relations/normalization.cjs.map +1 -1
  234. package/dist/production/src/modifications/relations/normalization.js.map +1 -1
  235. package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
  236. package/dist/production/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
  237. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  238. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  239. package/dist/production/src/modifications/utils/createJunctionTable.cjs.map +1 -1
  240. package/dist/production/src/modifications/utils/createJunctionTable.js.map +1 -1
  241. package/dist/production/src/modifications/utils/diffUtils.cjs.map +1 -1
  242. package/dist/production/src/modifications/utils/diffUtils.js.map +1 -1
  243. package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  244. package/dist/production/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  245. package/dist/production/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
  246. package/dist/production/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
  247. package/dist/production/src/modifications/utils/viewDependencies.cjs.map +1 -1
  248. package/dist/production/src/modifications/utils/viewDependencies.js.map +1 -1
  249. package/dist/production/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
  250. package/dist/production/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  251. package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
  252. package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  253. package/dist/production/src/utils/deepCopy.cjs.map +1 -1
  254. package/dist/production/src/utils/deepCopy.js.map +1 -1
  255. package/dist/tests/src/tests.d.ts +1 -1
  256. package/dist/tests/src/tests.d.ts.map +1 -1
  257. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  258. package/dist/types/tsconfig.tsbuildinfo +1 -1
  259. package/package.json +8 -8
  260. package/tests/cases/integration/convertManyHasOneToOneHasOneRelation.test.ts +23 -19
  261. package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +57 -55
  262. package/tests/cases/integration/convertOneToManyRelation.test.ts +46 -42
  263. package/tests/cases/integration/createAndDropIndex.test.ts +5 -4
  264. package/tests/cases/integration/createColumn.test.ts +7 -6
  265. package/tests/cases/integration/createEntity.test.ts +5 -4
  266. package/tests/cases/integration/createEnum.test.ts +3 -2
  267. package/tests/cases/integration/createManyHasMany.test.ts +3 -2
  268. package/tests/cases/integration/createManyHasOne.test.ts +3 -2
  269. package/tests/cases/integration/createOneHasMany.test.ts +3 -2
  270. package/tests/cases/integration/createOneHasOne.test.ts +3 -2
  271. package/tests/cases/integration/createRelationInverseSide.test.ts +5 -4
  272. package/tests/cases/integration/createUnique.test.ts +11 -10
  273. package/tests/cases/integration/createView.test.ts +5 -4
  274. package/tests/cases/integration/disableOrphanRemoval.test.ts +3 -2
  275. package/tests/cases/integration/enableOrphanRemoval.test.ts +3 -2
  276. package/tests/cases/integration/makeColumnNotNull.test.ts +3 -2
  277. package/tests/cases/integration/makeRelationNotNull.test.ts +3 -2
  278. package/tests/cases/integration/makeRelationNullable.test.ts +5 -4
  279. package/tests/cases/integration/patchAclSchema.test.ts +3 -2
  280. package/tests/cases/integration/removeEntity.test.ts +15 -14
  281. package/tests/cases/integration/removeEnum.test.ts +3 -2
  282. package/tests/cases/integration/removeField.test.ts +13 -12
  283. package/tests/cases/integration/toggleEventLog.test.ts +5 -4
  284. package/tests/cases/integration/toggleJunctionEventLog.test.ts +5 -4
  285. package/tests/cases/integration/updateColumnDefinition.test.ts +11 -10
  286. package/tests/cases/integration/updateEntityName.test.ts +9 -8
  287. package/tests/cases/integration/updateEntityOrderBy.test.ts +5 -4
  288. package/tests/cases/integration/updateEnum.test.ts +3 -2
  289. package/tests/cases/integration/updateFieldName.test.ts +13 -12
  290. package/tests/cases/integration/updateRelationOnDelete.test.ts +4 -2
  291. package/tests/cases/integration/updateRelationOrderBy.test.ts +3 -2
  292. package/tests/cases/integration/updateView.test.ts +9 -8
  293. package/tests/src/tests.ts +17 -19
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveIndexModification.js","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) {\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 }).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.fields, it.fields))\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":[],"mappings":";;;;;AAaO,MAAM,+BAA4F;AAAA,EACxG,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,MAAM;AAChB;AAAA,IACD;AACM,UAAA,SAAS,KAAK;AAEpB,UAAM,UAAU,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,EAAE,SAAS;AAEnH,eAAW,QAAQ,YAAY;AAC9B,cAAQ,IAAI,cAAc,eAAe,IAAI,CAAC,EAAE;AAAA,IACjD;AAC2B;EAC5B;AAAA,EAEO,mBAAkC;AAClC,UAAA,SAAS,KAAK;AACb,WAAA;AAAA,MACN,aAAa,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,QAAA;AAAA,MACD,CACA;AAAA,IAAA;AAAA,EAEH;AAAA,EAEA,WAAW;AACJ,UAAA,SAAS,KAAK;AACb,WAAA,EAAE,SAAS,iBAAiB,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU,GAAG;AAAA,EAC3F;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,MAAM;AAAA,IACjB;AACO,WAAA;AAAA,EACR;AACD;AAEO,MAAM,0BAA0B,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,UACR;AACO,iBAAA,CAAC,cAAc,QAAQ,KAAK,CAAA,UAAS,UAAU,MAAM,QAAQ,GAAG,MAAM,CAAC;AAAA,QAC/E;AAAA,MAAA,EAEA;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB,QAAQ,MAAM;AAAA,QAAA,CACd;AAAA,MACF;AAAA,IAAA;AAAA,EAEH;AACD;"}
1
+ {"version":3,"file":"RemoveIndexModification.js","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) {\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 }).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.fields, it.fields))\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":[],"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,MAAM;AAChB;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,UAAU;AAE9B,UAAM,UAAU,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,QAAS,CAAA,EAAE,SAAS;AAEnH,eAAW,QAAQ,YAAY;AAC9B,cAAQ,IAAI,cAAc,eAAe,IAAI,CAAC,EAAE;AAAA,IAAA;AAEtB,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AAClC,UAAA,SAAS,KAAK,UAAU;AACvB,WAAA;AAAA,MACN,aAAa,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,0BAA0B,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,CAAA,UAAS,UAAU,MAAM,QAAQ,GAAG,MAAM,CAAC;AAAA,QAAA;AAAA,MAC/E,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 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":["acceptFieldVisitor"],"mappings":";;;AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAAA,+BAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,IAAA,CACA;AAAA,EAAA,CACD;AACF;;"}
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":["acceptFieldVisitor"],"mappings":";;;AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAAA,+BAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAAA;AAAA,IAC7F,CACA;AAAA,EAAA,CACD;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAA,mBAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,IAAA,CACA;AAAA,EAAA,CACD;AACF;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAA,mBAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAAA;AAAA,IAC7F,CACA;AAAA,EAAA,CACD;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","createJunctionTableSql","normalizeManyHasManyRelation","wrapIdentifier","updateSchema","updateModel","updateEntity","addField","Model","createModificationType","updateRelations","isInverseRelation","isOwningRelation"],"mappings":"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"}
1
+ {"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","createJunctionTableSql","normalizeManyHasManyRelation","wrapIdentifier","updateSchema","updateModel","updateEntity","addField","Model","createModificationType","updateRelations","isInverseRelation","isOwningRelation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","NoopModification","wrapIdentifier","updateSchema","updateModel","updateEntity","updateField","Model","createModificationType","updateRelations","isOwningRelation"],"mappings":"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"}
1
+ {"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","NoopModification","wrapIdentifier","updateSchema","updateModel","updateEntity","updateField","Model","createModificationType","updateRelations","isOwningRelation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertOneToManyRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneToManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneToManyRelationModificationHandler implements ModificationHandler<ConvertOneToManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneToManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.uniqueConstraints.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t}\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.OneHasOneOwningRelation, Model.ManyHasOneRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, orphanRemoval, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.ManyHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasOneInverseRelation, Model.OneHasManyRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, nullable, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasMany,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasOne relation to ManyHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.OneHasOne || !isOwningRelation(relation)) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneToManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneToManyRelationModification = createModificationType({\n\tid: 'convertOneToManyRelation',\n\thandler: ConvertOneToManyRelationModificationHandler,\n})\n\nexport class ConvertOneToManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneToManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","NoopModification","wrapIdentifier","updateSchema","updateModel","updateEntity","updateField","Model","isOwningRelation","createModificationType","updateRelations"],"mappings":"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"}
1
+ {"version":3,"file":"ConvertOneToManyRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneToManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneToManyRelationModificationHandler implements ModificationHandler<ConvertOneToManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneToManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.uniqueConstraints.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t}\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.OneHasOneOwningRelation, Model.ManyHasOneRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, orphanRemoval, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.ManyHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasOneInverseRelation, Model.OneHasManyRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, nullable, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasMany,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasOne relation to ManyHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.OneHasOne || !isOwningRelation(relation)) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneToManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneToManyRelationModification = createModificationType({\n\tid: 'convertOneToManyRelation',\n\thandler: ConvertOneToManyRelationModificationHandler,\n})\n\nexport class ConvertOneToManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneToManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","NoopModification","wrapIdentifier","updateSchema","updateModel","updateEntity","updateField","Model","isOwningRelation","createModificationType","updateRelations"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertOneToManyRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneToManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneToManyRelationModificationHandler implements ModificationHandler<ConvertOneToManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneToManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.uniqueConstraints.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t}\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.OneHasOneOwningRelation, Model.ManyHasOneRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, orphanRemoval, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.ManyHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasOneInverseRelation, Model.OneHasManyRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, nullable, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasMany,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasOne relation to ManyHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.OneHasOne || !isOwningRelation(relation)) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneToManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneToManyRelationModification = createModificationType({\n\tid: 'convertOneToManyRelation',\n\thandler: ConvertOneToManyRelationModificationHandler,\n})\n\nexport class ConvertOneToManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneToManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConvertOneToManyRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneToManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneToManyRelationModificationHandler implements ModificationHandler<ConvertOneToManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneToManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.uniqueConstraints.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t}\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.OneHasOneOwningRelation, Model.ManyHasOneRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, orphanRemoval, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.ManyHasOne,\n\t\t\t\t\t\t\t...field,\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\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasOneInverseRelation, Model.OneHasManyRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, nullable, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasMany,\n\t\t\t\t\t\t\t\t...field,\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) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasOne relation to ManyHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.OneHasOne || !isOwningRelation(relation)) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneToManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneToManyRelationModification = createModificationType({\n\tid: 'convertOneToManyRelation',\n\thandler: ConvertOneToManyRelationModificationHandler,\n})\n\nexport class ConvertOneToManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneToManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAgBO,MAAM,4CAAqH;AAAA,EAGjI,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AALV,kBAAA,MAAA,iBAAA;AAOP,UAAM,EAAE,SAAA,IAAa,KAAK,YAAY;AACtC,SAAK,kBAAkB,KAAK,2BAA2B,SAAS,aAC/D,4BAA4B;AAAA,MAC3B;AAAA,QACC,YAAY,SAAS;AAAA,QACrB,WAAW,SAAS;AAAA,QACpB,cAAc,KAAK;AAAA,MACpB;AAAA,MACA;AAAA,MACA,KAAK;AAAA,IACN,IACE,IAAI,iBAAiB;AAAA,EAAA;AAAA,EAGlB,UAAU,SAA2B,SAAoD;AAC/F,UAAM,EAAE,QAAQ,aAAa,KAAK,YAAY;AACxC,UAAA,aAAa,SAAS,cAAc;AAEpC,UAAA,cAAc,eAAe,OAAO,SAAS;AAC7C,UAAA,eAAe,eAAe,UAAU;AAC9C,YAAQ,IAAI,mBAAmB,WAAW,KAAK,YAAY,GAAG;AAE9D,UAAM,wBAAwB,QAAQ,iBAAiB,kBAAkB,OAAO;AAAA,MAC/E,WAAW,OAAO;AAAA,MAClB,aAAa,CAAC,UAAU;AAAA,IACxB,CAAA,EAAE,SAAS;AAEZ,eAAW,QAAQ,uBAAuB;AACjC,cAAA,IAAI,eAAe,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,IAAI,CAAC,EAAE;AAAA,IAAA;AAEtG,YAAQ,2BAA2B;AAE9B,SAAA,gBAAgB,UAAU,SAAS,OAAO;AAAA,EAAA;AAAA,EAGzC,mBAAkC;AACxC,UAAM,EAAE,SAAA,IAAa,KAAK,YAAY;AACtC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AAEvC,UAAM,mBAAmB,KAAK,KAAK,2BAA2B,SAAS;AAChE,WAAA;AAAA,MACN;AAAA,QACC;AAAA,UACC;AAAA,UACA;AAAA,YACC;AAAA,YACA,CAAC,EAAE,OAAO,EAAE,MAAM,eAAe,GAAG,MAAM,SAAS;AAAA,cAClD,MAAM,MAAM,aAAa;AAAA,cACzB,GAAG;AAAA,YACJ;AAAA,UAAA;AAAA,QACD;AAAA,MAEF;AAAA,MACA,KAAK,gBAAgB,iBAAiB;AAAA,MACtC,mBACC;AAAA,QACC;AAAA,UACC,SAAS;AAAA,UACT;AAAA,YACC;AAAA,YACA,CAAC,EAAE,OAAO,EAAE,MAAO,UAAU,GAAG,MAAM,SAAS;AAAA,cAC9C,MAAM,MAAM,aAAa;AAAA,cACzB,GAAG;AAAA,YACJ;AAAA,UAAA;AAAA,QACD;AAAA,MACD,IACG;AAAA,IACN;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gDAAgD,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IACrG;AAAA,EAAA;AAAA,EAGO,cAAc;AACrB,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,WAAW,OAAO,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAA,SAAS,SAAS,MAAM,aAAa,aAAa,CAAC,iBAAiB,QAAQ,GAAG;AAClF,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,EAAE,QAAQ,SAAS;AAAA,EAAA;AAE5B;AAQO,MAAM,uCAAuC,uBAAuB;AAAA,EAC1E,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,+BAAiD;AAAA,EAC7D,WAAW,gBAAwB,eAAuB;AAClD,WAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAC/G,UACC,iBAAiB,gBAAgB,KACjC,iBAAiB,eAAe,KAChC,iBAAiB,SAAS,MAAM,aAAa,aAC7C,gBAAgB,SAAS,MAAM,aAAa,YAC3C;AACD,cAAM,uBAAuB,iBAAiB,cAAc,gBAAgB,cAAc,iBAAiB,eAAe,gBAAgB;AAC1I,eAAO,qCAAqC,mBAAmB;AAAA,UAC9D,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,UAC3B,GAAI,uBAAuB;AAAA,YAC1B,yBAAyB,gBAAgB;AAAA,UAAA,IACtC,CAAA;AAAA,QAAC,CACL;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRelationInverseSideModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationInverseSideModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { createFields } from '../utils/diffUtils'\nimport { isInverseRelation, isRelation } from '@contember/schema-utils'\n\nexport class CreateRelationInverseSideModificationHandler implements ModificationHandler<CreateRelationInverseSideModificationData> {\n\tconstructor(private readonly data: CreateRelationInverseSideModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, addField(this.data.relation)),\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.relation.target,\n\t\t\t\tupdateField<Model.AnyRelation & Model.OwningRelation>(this.data.relation.ownedBy, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\tinversedBy: this.data.relation.name,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.relation.name}` }\n\t}\n}\n\nexport interface CreateRelationInverseSideModificationData {\n\tentityName: string\n\trelation: Model.AnyRelation & Model.InverseRelation\n}\n\nexport const createRelationInverseSideModification = createModificationType({\n\tid: 'createRelationInverseSide',\n\thandler: CreateRelationInverseSideModificationHandler,\n})\n\nexport class CreateRelationInverseSideDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isInverseRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createRelationInverseSideModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\trelation: newField,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["updateModel","updateEntity","addField","updateField","createModificationType","createFields","isRelation","isInverseRelation"],"mappings":";;;;;;AAMO,MAAM,6CAAuH;AAAA,EACnI,YAA6B,MAAkE,QAAgB;AAAlF,SAAA,OAAA;AAAkE,SAAA,SAAA;AAAA,EAAiB;AAAA,EAEzG,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACjC,WAAAA,kBAAA;AAAA,MACNC,+BAAa,KAAK,KAAK,YAAYC,2BAAS,KAAK,KAAK,QAAQ,CAAC;AAAA,MAC/DD,kBAAA;AAAA,QACC,KAAK,KAAK,SAAS;AAAA,QACnBE,kBAAA,YAAsD,KAAK,KAAK,SAAS,SAAS,CAAC,EAAE,aAAa;AAAA,UACjG,GAAG;AAAA,UACH,YAAY,KAAK,KAAK,SAAS;AAAA,QAAA,EAC9B;AAAA,MACH;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,EACrF;AACD;AAOO,MAAM,wCAAwCC,oBAAAA,uBAAuB;AAAA,EAC3E,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,gCAAkD;AAAA,EAC9D,WAAW,gBAAwB,eAAuB;AACzD,WAAOC,UAAAA,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAACC,YAAW,WAAA,QAAQ,KAAK,CAACC,YAAA,kBAAkB,QAAQ,GAAG;AACnD,eAAA;AAAA,MACR;AACA,aAAO,sCAAsC,mBAAmB;AAAA,QAC/D,YAAY,cAAc;AAAA,QAC1B,UAAU;AAAA,MAAA,CACV;AAAA,IAAA,CACD;AAAA,EACF;AACD;;;;"}
1
+ {"version":3,"file":"CreateRelationInverseSideModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationInverseSideModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { createFields } from '../utils/diffUtils'\nimport { isInverseRelation, isRelation } from '@contember/schema-utils'\n\nexport class CreateRelationInverseSideModificationHandler implements ModificationHandler<CreateRelationInverseSideModificationData> {\n\tconstructor(private readonly data: CreateRelationInverseSideModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, addField(this.data.relation)),\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.relation.target,\n\t\t\t\tupdateField<Model.AnyRelation & Model.OwningRelation>(this.data.relation.ownedBy, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\tinversedBy: this.data.relation.name,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.relation.name}` }\n\t}\n}\n\nexport interface CreateRelationInverseSideModificationData {\n\tentityName: string\n\trelation: Model.AnyRelation & Model.InverseRelation\n}\n\nexport const createRelationInverseSideModification = createModificationType({\n\tid: 'createRelationInverseSide',\n\thandler: CreateRelationInverseSideModificationHandler,\n})\n\nexport class CreateRelationInverseSideDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isInverseRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createRelationInverseSideModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\trelation: newField,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["updateModel","updateEntity","addField","updateField","createModificationType","createFields","isRelation","isInverseRelation"],"mappings":";;;;;;AAMO,MAAM,6CAAuH;AAAA,EACnI,YAA6B,MAAkE,QAAgB;AAAlF,SAAA,OAAA;AAAkE,SAAA,SAAA;AAAA,EAAA;AAAA,EAExF,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAAA,kBAAA;AAAA,MACNC,+BAAa,KAAK,KAAK,YAAYC,2BAAS,KAAK,KAAK,QAAQ,CAAC;AAAA,MAC/DD,kBAAA;AAAA,QACC,KAAK,KAAK,SAAS;AAAA,QACnBE,kBAAA,YAAsD,KAAK,KAAK,SAAS,SAAS,CAAC,EAAE,aAAa;AAAA,UACjG,GAAG;AAAA,UACH,YAAY,KAAK,KAAK,SAAS;AAAA,QAAA,EAC9B;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,EAAA;AAEtF;AAOO,MAAM,wCAAwCC,oBAAAA,uBAAuB;AAAA,EAC3E,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,gCAAkD;AAAA,EAC9D,WAAW,gBAAwB,eAAuB;AACzD,WAAOC,UAAAA,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAACC,YAAW,WAAA,QAAQ,KAAK,CAACC,YAAA,kBAAkB,QAAQ,GAAG;AACnD,eAAA;AAAA,MAAA;AAER,aAAO,sCAAsC,mBAAmB;AAAA,QAC/D,YAAY,cAAc;AAAA,QAC1B,UAAU;AAAA,MAAA,CACV;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRelationInverseSideModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationInverseSideModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { createFields } from '../utils/diffUtils'\nimport { isInverseRelation, isRelation } from '@contember/schema-utils'\n\nexport class CreateRelationInverseSideModificationHandler implements ModificationHandler<CreateRelationInverseSideModificationData> {\n\tconstructor(private readonly data: CreateRelationInverseSideModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, addField(this.data.relation)),\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.relation.target,\n\t\t\t\tupdateField<Model.AnyRelation & Model.OwningRelation>(this.data.relation.ownedBy, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\tinversedBy: this.data.relation.name,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.relation.name}` }\n\t}\n}\n\nexport interface CreateRelationInverseSideModificationData {\n\tentityName: string\n\trelation: Model.AnyRelation & Model.InverseRelation\n}\n\nexport const createRelationInverseSideModification = createModificationType({\n\tid: 'createRelationInverseSide',\n\thandler: CreateRelationInverseSideModificationHandler,\n})\n\nexport class CreateRelationInverseSideDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isInverseRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createRelationInverseSideModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\trelation: newField,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,6CAAuH;AAAA,EACnI,YAA6B,MAAkE,QAAgB;AAAlF,SAAA,OAAA;AAAkE,SAAA,SAAA;AAAA,EAAiB;AAAA,EAEzG,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACjC,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,SAAS,KAAK,KAAK,QAAQ,CAAC;AAAA,MAC/D;AAAA,QACC,KAAK,KAAK,SAAS;AAAA,QACnB,YAAsD,KAAK,KAAK,SAAS,SAAS,CAAC,EAAE,aAAa;AAAA,UACjG,GAAG;AAAA,UACH,YAAY,KAAK,KAAK,SAAS;AAAA,QAAA,EAC9B;AAAA,MACH;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,EACrF;AACD;AAOO,MAAM,wCAAwC,uBAAuB;AAAA,EAC3E,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,gCAAkD;AAAA,EAC9D,WAAW,gBAAwB,eAAuB;AACzD,WAAO,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAAC,WAAW,QAAQ,KAAK,CAAC,kBAAkB,QAAQ,GAAG;AACnD,eAAA;AAAA,MACR;AACA,aAAO,sCAAsC,mBAAmB;AAAA,QAC/D,YAAY,cAAc;AAAA,QAC1B,UAAU;AAAA,MAAA,CACV;AAAA,IAAA,CACD;AAAA,EACF;AACD;"}
1
+ {"version":3,"file":"CreateRelationInverseSideModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationInverseSideModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { createFields } from '../utils/diffUtils'\nimport { isInverseRelation, isRelation } from '@contember/schema-utils'\n\nexport class CreateRelationInverseSideModificationHandler implements ModificationHandler<CreateRelationInverseSideModificationData> {\n\tconstructor(private readonly data: CreateRelationInverseSideModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, addField(this.data.relation)),\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.relation.target,\n\t\t\t\tupdateField<Model.AnyRelation & Model.OwningRelation>(this.data.relation.ownedBy, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\tinversedBy: this.data.relation.name,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.relation.name}` }\n\t}\n}\n\nexport interface CreateRelationInverseSideModificationData {\n\tentityName: string\n\trelation: Model.AnyRelation & Model.InverseRelation\n}\n\nexport const createRelationInverseSideModification = createModificationType({\n\tid: 'createRelationInverseSide',\n\thandler: CreateRelationInverseSideModificationHandler,\n})\n\nexport class CreateRelationInverseSideDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isInverseRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createRelationInverseSideModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\trelation: newField,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,6CAAuH;AAAA,EACnI,YAA6B,MAAkE,QAAgB;AAAlF,SAAA,OAAA;AAAkE,SAAA,SAAA;AAAA,EAAA;AAAA,EAExF,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,SAAS,KAAK,KAAK,QAAQ,CAAC;AAAA,MAC/D;AAAA,QACC,KAAK,KAAK,SAAS;AAAA,QACnB,YAAsD,KAAK,KAAK,SAAS,SAAS,CAAC,EAAE,aAAa;AAAA,UACjG,GAAG;AAAA,UACH,YAAY,KAAK,KAAK,SAAS;AAAA,QAAA,EAC9B;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,EAAA;AAEtF;AAOO,MAAM,wCAAwC,uBAAuB;AAAA,EAC3E,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,gCAAkD;AAAA,EAC9D,WAAW,gBAAwB,eAAuB;AACzD,WAAO,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAAC,WAAW,QAAQ,KAAK,CAAC,kBAAkB,QAAQ,GAAG;AACnD,eAAA;AAAA,MAAA;AAER,aAAO,sCAAsC,mBAAmB;AAAA,QAC/D,YAAY,cAAc;AAAA,QAC1B,UAAU;AAAA,MAAA,CACV;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { acceptRelationTypeVisitor, isInverseRelation, isOwningRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isIt } from '../../utils/isIt'\nimport { createFields } from '../utils/diffUtils'\nimport { getPrimaryColumnType } from '../utils/getPrimaryColumnType'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { addForeignKeyConstraint } from './helpers'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\n\nexport class CreateRelationModificationHandler implements ModificationHandler<CreateRelationModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: CreateRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder, {\n\t\tdatabaseMetadata,\n\t\tsystemSchema,\n\t\tinvalidateDatabaseMetadata,\n\t}: 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\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst createOwningSide = (relation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation) => {\n\t\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t\t[relation.joiningColumn.columnName]: {\n\t\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\t\tnotNull: !relation.nullable,\n\t\t\t\t},\n\t\t\t})\n\t\t\taddForeignKeyConstraint({ builder, entity, targetEntity, relation, databaseMetadata, invalidateDatabaseMetadata })\n\t\t}\n\t\tacceptRelationTypeVisitor(this.schema.model, entity, this.getNormalizedOwningSide(), {\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst columnName = relation.joiningColumn.columnName\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\t\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(relation.joiningColumn.columnName)\n\t\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, relation)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(this.data.entityName, addField(this.getNormalizedOwningSide())),\n\t\t\t\tthis.data.inverseSide !== undefined\n\t\t\t\t\t? updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = isIt<Model.NullableRelation>(this.data.owningSide, 'nullable') && !this.data.owningSide.nullable\n\t\tconst failureWarning =\n\t\t\tnotNull && !createdEntities.includes(this.data.entityName)\n\t\t\t\t? `May fail in runtime, because relation is not-null`\n\t\t\t\t: undefined\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.owningSide.name}`, failureWarning }\n\t}\n\n\n\tprivate getNormalizedOwningSide(): Model.AnyOwningRelation {\n\t\tif (this.data.owningSide.type === Model.RelationType.ManyHasMany) {\n\t\t\treturn normalizeManyHasManyRelation(this.data.owningSide)\n\t\t}\n\t\treturn this.data.owningSide\n\t}\n}\n\n\nexport type CreateRelationModificationData = {\n\tentityName: string\n\towningSide:\n\t\t| Model.ManyHasOneRelation\n\t\t| Model.OneHasOneOwningRelation\n\t\t| PartialManyHasManyRelation\n\tinverseSide?: Model.AnyInverseRelation\n}\n\nexport const createRelationModification = createModificationType({\n\tid: 'createRelation',\n\thandler: CreateRelationModificationHandler,\n})\n\nexport class CreateRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isOwningRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst inverseSide = newField.inversedBy\n\t\t\t\t? updatedSchema.model.entities[newField.target].fields[newField.inversedBy]\n\t\t\t\t: undefined\n\t\t\tif (inverseSide && !(isRelation(inverseSide) && isInverseRelation(inverseSide))) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn createRelationModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\towningSide: newField,\n\t\t\t\t...(inverseSide ? { inverseSide } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["schema","getPrimaryColumnType","addForeignKeyConstraint","acceptRelationTypeVisitor","wrapIdentifier","createJunctionTableSql","updateSchema","updateModel","updateEntity","addField","isIt","Model","normalizeManyHasManyRelation","createModificationType","createFields","isRelation","isOwningRelation","isInverseRelation"],"mappings":"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"}
1
+ {"version":3,"file":"CreateRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { acceptRelationTypeVisitor, isInverseRelation, isOwningRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isIt } from '../../utils/isIt'\nimport { createFields } from '../utils/diffUtils'\nimport { getPrimaryColumnType } from '../utils/getPrimaryColumnType'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { addForeignKeyConstraint } from './helpers'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\n\nexport class CreateRelationModificationHandler implements ModificationHandler<CreateRelationModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: CreateRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder, {\n\t\tdatabaseMetadata,\n\t\tsystemSchema,\n\t\tinvalidateDatabaseMetadata,\n\t}: 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\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst createOwningSide = (relation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation) => {\n\t\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t\t[relation.joiningColumn.columnName]: {\n\t\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\t\tnotNull: !relation.nullable,\n\t\t\t\t},\n\t\t\t})\n\t\t\taddForeignKeyConstraint({ builder, entity, targetEntity, relation, databaseMetadata, invalidateDatabaseMetadata })\n\t\t}\n\t\tacceptRelationTypeVisitor(this.schema.model, entity, this.getNormalizedOwningSide(), {\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst columnName = relation.joiningColumn.columnName\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\t\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(relation.joiningColumn.columnName)\n\t\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, relation)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(this.data.entityName, addField(this.getNormalizedOwningSide())),\n\t\t\t\tthis.data.inverseSide !== undefined\n\t\t\t\t\t? updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = isIt<Model.NullableRelation>(this.data.owningSide, 'nullable') && !this.data.owningSide.nullable\n\t\tconst failureWarning =\n\t\t\tnotNull && !createdEntities.includes(this.data.entityName)\n\t\t\t\t? `May fail in runtime, because relation is not-null`\n\t\t\t\t: undefined\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.owningSide.name}`, failureWarning }\n\t}\n\n\n\tprivate getNormalizedOwningSide(): Model.AnyOwningRelation {\n\t\tif (this.data.owningSide.type === Model.RelationType.ManyHasMany) {\n\t\t\treturn normalizeManyHasManyRelation(this.data.owningSide)\n\t\t}\n\t\treturn this.data.owningSide\n\t}\n}\n\n\nexport type CreateRelationModificationData = {\n\tentityName: string\n\towningSide:\n\t\t| Model.ManyHasOneRelation\n\t\t| Model.OneHasOneOwningRelation\n\t\t| PartialManyHasManyRelation\n\tinverseSide?: Model.AnyInverseRelation\n}\n\nexport const createRelationModification = createModificationType({\n\tid: 'createRelation',\n\thandler: CreateRelationModificationHandler,\n})\n\nexport class CreateRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isOwningRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst inverseSide = newField.inversedBy\n\t\t\t\t? updatedSchema.model.entities[newField.target].fields[newField.inversedBy]\n\t\t\t\t: undefined\n\t\t\tif (inverseSide && !(isRelation(inverseSide) && isInverseRelation(inverseSide))) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn createRelationModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\towningSide: newField,\n\t\t\t\t...(inverseSide ? { inverseSide } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["schema","getPrimaryColumnType","addForeignKeyConstraint","acceptRelationTypeVisitor","wrapIdentifier","createJunctionTableSql","updateSchema","updateModel","updateEntity","addField","isIt","Model","normalizeManyHasManyRelation","createModificationType","createFields","isRelation","isOwningRelation","isInverseRelation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { acceptRelationTypeVisitor, isInverseRelation, isOwningRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isIt } from '../../utils/isIt'\nimport { createFields } from '../utils/diffUtils'\nimport { getPrimaryColumnType } from '../utils/getPrimaryColumnType'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { addForeignKeyConstraint } from './helpers'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\n\nexport class CreateRelationModificationHandler implements ModificationHandler<CreateRelationModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: CreateRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder, {\n\t\tdatabaseMetadata,\n\t\tsystemSchema,\n\t\tinvalidateDatabaseMetadata,\n\t}: 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\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst createOwningSide = (relation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation) => {\n\t\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t\t[relation.joiningColumn.columnName]: {\n\t\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\t\tnotNull: !relation.nullable,\n\t\t\t\t},\n\t\t\t})\n\t\t\taddForeignKeyConstraint({ builder, entity, targetEntity, relation, databaseMetadata, invalidateDatabaseMetadata })\n\t\t}\n\t\tacceptRelationTypeVisitor(this.schema.model, entity, this.getNormalizedOwningSide(), {\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst columnName = relation.joiningColumn.columnName\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\t\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(relation.joiningColumn.columnName)\n\t\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, relation)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(this.data.entityName, addField(this.getNormalizedOwningSide())),\n\t\t\t\tthis.data.inverseSide !== undefined\n\t\t\t\t\t? updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = isIt<Model.NullableRelation>(this.data.owningSide, 'nullable') && !this.data.owningSide.nullable\n\t\tconst failureWarning =\n\t\t\tnotNull && !createdEntities.includes(this.data.entityName)\n\t\t\t\t? `May fail in runtime, because relation is not-null`\n\t\t\t\t: undefined\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.owningSide.name}`, failureWarning }\n\t}\n\n\n\tprivate getNormalizedOwningSide(): Model.AnyOwningRelation {\n\t\tif (this.data.owningSide.type === Model.RelationType.ManyHasMany) {\n\t\t\treturn normalizeManyHasManyRelation(this.data.owningSide)\n\t\t}\n\t\treturn this.data.owningSide\n\t}\n}\n\n\nexport type CreateRelationModificationData = {\n\tentityName: string\n\towningSide:\n\t\t| Model.ManyHasOneRelation\n\t\t| Model.OneHasOneOwningRelation\n\t\t| PartialManyHasManyRelation\n\tinverseSide?: Model.AnyInverseRelation\n}\n\nexport const createRelationModification = createModificationType({\n\tid: 'createRelation',\n\thandler: CreateRelationModificationHandler,\n})\n\nexport class CreateRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isOwningRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst inverseSide = newField.inversedBy\n\t\t\t\t? updatedSchema.model.entities[newField.target].fields[newField.inversedBy]\n\t\t\t\t: undefined\n\t\t\tif (inverseSide && !(isRelation(inverseSide) && isInverseRelation(inverseSide))) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn createRelationModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\towningSide: newField,\n\t\t\t\t...(inverseSide ? { inverseSide } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/CreateRelationModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { acceptRelationTypeVisitor, isInverseRelation, isOwningRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isIt } from '../../utils/isIt'\nimport { createFields } from '../utils/diffUtils'\nimport { getPrimaryColumnType } from '../utils/getPrimaryColumnType'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { addForeignKeyConstraint } from './helpers'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\n\nexport class CreateRelationModificationHandler implements ModificationHandler<CreateRelationModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: CreateRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder, {\n\t\tdatabaseMetadata,\n\t\tsystemSchema,\n\t\tinvalidateDatabaseMetadata,\n\t}: 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\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst createOwningSide = (relation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation) => {\n\t\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t\t[relation.joiningColumn.columnName]: {\n\t\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\t\tnotNull: !relation.nullable,\n\t\t\t\t},\n\t\t\t})\n\t\t\taddForeignKeyConstraint({ builder, entity, targetEntity, relation, databaseMetadata, invalidateDatabaseMetadata })\n\t\t}\n\t\tacceptRelationTypeVisitor(this.schema.model, entity, this.getNormalizedOwningSide(), {\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst columnName = relation.joiningColumn.columnName\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(columnName)\n\t\t\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\tcreateOwningSide(relation)\n\t\t\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\t\t\tconst columnNameId = wrapIdentifier(relation.joiningColumn.columnName)\n\t\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\t\t\t\tinvalidateDatabaseMetadata()\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, relation)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(this.data.entityName, addField(this.getNormalizedOwningSide())),\n\t\t\t\tthis.data.inverseSide !== undefined\n\t\t\t\t\t? updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = isIt<Model.NullableRelation>(this.data.owningSide, 'nullable') && !this.data.owningSide.nullable\n\t\tconst failureWarning =\n\t\t\tnotNull && !createdEntities.includes(this.data.entityName)\n\t\t\t\t? `May fail in runtime, because relation is not-null`\n\t\t\t\t: undefined\n\t\treturn { message: `Add relation ${this.data.entityName}.${this.data.owningSide.name}`, failureWarning }\n\t}\n\n\n\tprivate getNormalizedOwningSide(): Model.AnyOwningRelation {\n\t\tif (this.data.owningSide.type === Model.RelationType.ManyHasMany) {\n\t\t\treturn normalizeManyHasManyRelation(this.data.owningSide)\n\t\t}\n\t\treturn this.data.owningSide\n\t}\n}\n\n\nexport type CreateRelationModificationData = {\n\tentityName: string\n\towningSide:\n\t\t| Model.ManyHasOneRelation\n\t\t| Model.OneHasOneOwningRelation\n\t\t| PartialManyHasManyRelation\n\tinverseSide?: Model.AnyInverseRelation\n}\n\nexport const createRelationModification = createModificationType({\n\tid: 'createRelation',\n\thandler: CreateRelationModificationHandler,\n})\n\nexport class CreateRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isRelation(newField) || !isOwningRelation(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst inverseSide = newField.inversedBy\n\t\t\t\t? updatedSchema.model.entities[newField.target].fields[newField.inversedBy]\n\t\t\t\t: undefined\n\t\t\tif (inverseSide && !(isRelation(inverseSide) && isInverseRelation(inverseSide))) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\treturn createRelationModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\towningSide: newField,\n\t\t\t\t...(inverseSide ? { inverseSide } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DisableOrphanRemovalModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/DisableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class DisableOrphanRemovalModificationHandler implements ModificationHandler<DisableOrphanRemovalModificationData> {\n\n\tconstructor(private readonly data: DisableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field: { orphanRemoval, ...field } }) => field),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Disable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n}\n\nexport interface DisableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const disableOrphanRemovalModification = createModificationType({\n\tid: 'disableOrphanRemoval',\n\thandler: DisableOrphanRemovalModificationHandler,\n})\n\nexport class DisableOrphanRemovalDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\toriginalRelation.orphanRemoval &&\n\t\t\t\t!updatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn disableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateModel","updateEntity","updateField","createModificationType","updateRelations","isOwningRelation","Model"],"mappings":";;;;;;;AAMO,MAAM,wCAA6G;AAAA,EAEzH,YAA6B,MAA6DA,SAAgB;AAA7E,SAAA,OAAA;AAA6D,SAAA,SAAAA;AAAA,EAAiB;AAAA,EAEpG,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,UAAM,EAAE,YAAY,cAAc,KAAK;AAChC,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACC;AAAA,QACAC,8BAA2C,WAAW,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,MAAM,KAAK;AAAA,MACxG;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA;AAAA,MACN,SAAS,6BAA6B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IAAA;AAAA,EAEnF;AACD;AAOO,MAAM,mCAAmCC,oBAAAA,uBAAuB;AAAA,EACtE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,2BAA6C;AAAA,EACzD,WAAW,gBAAwB,eAAuB;AAClD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAAC,YAAA,iBAAiB,gBAAgB,KACjCA,YAAA,iBAAiB,eAAe,KAChC,iBAAiB,SAASC,OAAAA,MAAM,aAAa,aAC7C,gBAAgB,SAASA,aAAM,aAAa,aAC5C,iBAAiB,iBACjB,CAAC,gBAAgB,eAChB;AACD,eAAO,iCAAiC,mBAAmB;AAAA,UAC1D,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MACF;AACO,aAAA;AAAA,IAAA,CACP;AAAA,EACF;AACD;;;;"}
1
+ {"version":3,"file":"DisableOrphanRemovalModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/DisableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class DisableOrphanRemovalModificationHandler implements ModificationHandler<DisableOrphanRemovalModificationData> {\n\n\tconstructor(private readonly data: DisableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field: { orphanRemoval, ...field } }) => field),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Disable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n}\n\nexport interface DisableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const disableOrphanRemovalModification = createModificationType({\n\tid: 'disableOrphanRemoval',\n\thandler: DisableOrphanRemovalModificationHandler,\n})\n\nexport class DisableOrphanRemovalDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\toriginalRelation.orphanRemoval &&\n\t\t\t\t!updatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn disableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateModel","updateEntity","updateField","createModificationType","updateRelations","isOwningRelation","Model"],"mappings":";;;;;;;AAMO,MAAM,wCAA6G;AAAA,EAEzH,YAA6B,MAA6DA,SAAgB;AAA7E,SAAA,OAAA;AAA6D,SAAA,SAAAA;AAAA,EAAA;AAAA,EAEnF,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACxC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AAChC,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACC;AAAA,QACAC,8BAA2C,WAAW,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,MAAQ,EAAA,MAAM,KAAK;AAAA,MAAA;AAAA,IAEzG;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,6BAA6B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IAClF;AAAA,EAAA;AAEF;AAOO,MAAM,mCAAmCC,oBAAAA,uBAAuB;AAAA,EACtE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,2BAA6C;AAAA,EACzD,WAAW,gBAAwB,eAAuB;AAClD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAAC,YAAA,iBAAiB,gBAAgB,KACjCA,YAAA,iBAAiB,eAAe,KAChC,iBAAiB,SAASC,OAAAA,MAAM,aAAa,aAC7C,gBAAgB,SAASA,aAAM,aAAa,aAC5C,iBAAiB,iBACjB,CAAC,gBAAgB,eAChB;AACD,eAAO,iCAAiC,mBAAmB;AAAA,UAC1D,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DisableOrphanRemovalModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/DisableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class DisableOrphanRemovalModificationHandler implements ModificationHandler<DisableOrphanRemovalModificationData> {\n\n\tconstructor(private readonly data: DisableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field: { orphanRemoval, ...field } }) => field),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Disable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n}\n\nexport interface DisableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const disableOrphanRemovalModification = createModificationType({\n\tid: 'disableOrphanRemoval',\n\thandler: DisableOrphanRemovalModificationHandler,\n})\n\nexport class DisableOrphanRemovalDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\toriginalRelation.orphanRemoval &&\n\t\t\t\t!updatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn disableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;AAMO,MAAM,wCAA6G;AAAA,EAEzH,YAA6B,MAA6D,QAAgB;AAA7E,SAAA,OAAA;AAA6D,SAAA,SAAA;AAAA,EAAiB;AAAA,EAEpG,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,UAAM,EAAE,YAAY,cAAc,KAAK;AAChC,WAAA;AAAA,MACN;AAAA,QACC;AAAA,QACA,YAA2C,WAAW,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,MAAM,KAAK;AAAA,MACxG;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA;AAAA,MACN,SAAS,6BAA6B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IAAA;AAAA,EAEnF;AACD;AAOO,MAAM,mCAAmC,uBAAuB;AAAA,EACtE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,2BAA6C;AAAA,EACzD,WAAW,gBAAwB,eAAuB;AAClD,WAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAA,iBAAiB,gBAAgB,KACjC,iBAAiB,eAAe,KAChC,iBAAiB,SAAS,MAAM,aAAa,aAC7C,gBAAgB,SAAS,MAAM,aAAa,aAC5C,iBAAiB,iBACjB,CAAC,gBAAgB,eAChB;AACD,eAAO,iCAAiC,mBAAmB;AAAA,UAC1D,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MACF;AACO,aAAA;AAAA,IAAA,CACP;AAAA,EACF;AACD;"}
1
+ {"version":3,"file":"DisableOrphanRemovalModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/DisableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class DisableOrphanRemovalModificationHandler implements ModificationHandler<DisableOrphanRemovalModificationData> {\n\n\tconstructor(private readonly data: DisableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field: { orphanRemoval, ...field } }) => field),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Disable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n}\n\nexport interface DisableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const disableOrphanRemovalModification = createModificationType({\n\tid: 'disableOrphanRemoval',\n\thandler: DisableOrphanRemovalModificationHandler,\n})\n\nexport class DisableOrphanRemovalDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\toriginalRelation.orphanRemoval &&\n\t\t\t\t!updatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn disableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;AAMO,MAAM,wCAA6G;AAAA,EAEzH,YAA6B,MAA6D,QAAgB;AAA7E,SAAA,OAAA;AAA6D,SAAA,SAAA;AAAA,EAAA;AAAA,EAEnF,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACxC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AAChC,WAAA;AAAA,MACN;AAAA,QACC;AAAA,QACA,YAA2C,WAAW,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,MAAQ,EAAA,MAAM,KAAK;AAAA,MAAA;AAAA,IAEzG;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,6BAA6B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IAClF;AAAA,EAAA;AAEF;AAOO,MAAM,mCAAmC,uBAAuB;AAAA,EACtE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,2BAA6C;AAAA,EACzD,WAAW,gBAAwB,eAAuB;AAClD,WAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAA,iBAAiB,gBAAgB,KACjC,iBAAiB,eAAe,KAChC,iBAAiB,SAAS,MAAM,aAAa,aAC7C,gBAAgB,SAAS,MAAM,aAAa,aAC5C,iBAAiB,iBACjB,CAAC,gBAAgB,eAChB;AACD,eAAO,iCAAiC,mBAAmB;AAAA,UAC1D,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnableOrphanRemovalModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/EnableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {\n\tconstructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\torphanRemoval: true,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Enable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n}\n\nexport interface EnableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const enableOrphanRemovalModification = createModificationType({\n\tid: 'enableOrphanRemoval',\n\thandler: EnableOrphanRemovalModificationHandler,\n})\n\nexport class EnableOrphanRemovalDiffer implements Differ {\n\t createDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\t!originalRelation.orphanRemoval &&\n\t\t\t\tupdatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn enableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateModel","updateEntity","updateField","createModificationType","updateRelations","isOwningRelation","Model"],"mappings":";;;;;;;AAMO,MAAM,uCAA2G;AAAA,EACvH,YAA6B,MAA4DA,SAAgB;AAA5E,SAAA,OAAA;AAA4D,SAAA,SAAAA;AAAA,EAAiB;AAAA,EAEnG,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,UAAM,EAAE,YAAY,cAAc,KAAK;AAChC,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACC;AAAA,QACAC,kBAAAA,YAA2C,WAAW,CAAC,EAAE,aAAa;AAAA,UACrE,GAAG;AAAA,UACH,eAAe;AAAA,QAAA,EACd;AAAA,MACH;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA;AAAA,MACN,SAAS,4BAA4B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IAAA;AAAA,EAElF;AAED;AAOO,MAAM,kCAAkCC,oBAAAA,uBAAuB;AAAA,EACrE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,0BAA4C;AAAA,EACvD,WAAW,gBAAwB,eAAuB;AACnD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAAC,YAAA,iBAAiB,gBAAgB,KACjCA,YAAA,iBAAiB,eAAe,KAChC,iBAAiB,SAASC,OAAAA,MAAM,aAAa,aAC7C,gBAAgB,SAASA,aAAM,aAAa,aAC5C,CAAC,iBAAiB,iBAClB,gBAAgB,eACf;AACD,eAAO,gCAAgC,mBAAmB;AAAA,UACzD,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MACF;AACO,aAAA;AAAA,IAAA,CACP;AAAA,EACF;AACD;;;;"}
1
+ {"version":3,"file":"EnableOrphanRemovalModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/EnableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {\n\tconstructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\torphanRemoval: true,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Enable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n}\n\nexport interface EnableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const enableOrphanRemovalModification = createModificationType({\n\tid: 'enableOrphanRemoval',\n\thandler: EnableOrphanRemovalModificationHandler,\n})\n\nexport class EnableOrphanRemovalDiffer implements Differ {\n\t createDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\t!originalRelation.orphanRemoval &&\n\t\t\t\tupdatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn enableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateModel","updateEntity","updateField","createModificationType","updateRelations","isOwningRelation","Model"],"mappings":";;;;;;;AAMO,MAAM,uCAA2G;AAAA,EACvH,YAA6B,MAA4DA,SAAgB;AAA5E,SAAA,OAAA;AAA4D,SAAA,SAAAA;AAAA,EAAA;AAAA,EAElF,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACxC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AAChC,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACC;AAAA,QACAC,kBAAAA,YAA2C,WAAW,CAAC,EAAE,aAAa;AAAA,UACrE,GAAG;AAAA,UACH,eAAe;AAAA,QAAA,EACd;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,4BAA4B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IACjF;AAAA,EAAA;AAGF;AAOO,MAAM,kCAAkCC,oBAAAA,uBAAuB;AAAA,EACrE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,0BAA4C;AAAA,EACvD,WAAW,gBAAwB,eAAuB;AACnD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAAC,YAAA,iBAAiB,gBAAgB,KACjCA,YAAA,iBAAiB,eAAe,KAChC,iBAAiB,SAASC,OAAAA,MAAM,aAAa,aAC7C,gBAAgB,SAASA,aAAM,aAAa,aAC5C,CAAC,iBAAiB,iBAClB,gBAAgB,eACf;AACD,eAAO,gCAAgC,mBAAmB;AAAA,UACzD,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnableOrphanRemovalModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/EnableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {\n\tconstructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\torphanRemoval: true,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Enable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n}\n\nexport interface EnableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const enableOrphanRemovalModification = createModificationType({\n\tid: 'enableOrphanRemoval',\n\thandler: EnableOrphanRemovalModificationHandler,\n})\n\nexport class EnableOrphanRemovalDiffer implements Differ {\n\t createDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\t!originalRelation.orphanRemoval &&\n\t\t\t\tupdatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn enableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;AAMO,MAAM,uCAA2G;AAAA,EACvH,YAA6B,MAA4D,QAAgB;AAA5E,SAAA,OAAA;AAA4D,SAAA,SAAA;AAAA,EAAiB;AAAA,EAEnG,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,UAAM,EAAE,YAAY,cAAc,KAAK;AAChC,WAAA;AAAA,MACN;AAAA,QACC;AAAA,QACA,YAA2C,WAAW,CAAC,EAAE,aAAa;AAAA,UACrE,GAAG;AAAA,UACH,eAAe;AAAA,QAAA,EACd;AAAA,MACH;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA;AAAA,MACN,SAAS,4BAA4B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IAAA;AAAA,EAElF;AAED;AAOO,MAAM,kCAAkC,uBAAuB;AAAA,EACrE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,0BAA4C;AAAA,EACvD,WAAW,gBAAwB,eAAuB;AACnD,WAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAA,iBAAiB,gBAAgB,KACjC,iBAAiB,eAAe,KAChC,iBAAiB,SAAS,MAAM,aAAa,aAC7C,gBAAgB,SAAS,MAAM,aAAa,aAC5C,CAAC,iBAAiB,iBAClB,gBAAgB,eACf;AACD,eAAO,gCAAgC,mBAAmB;AAAA,UACzD,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MACF;AACO,aAAA;AAAA,IAAA,CACP;AAAA,EACF;AACD;"}
1
+ {"version":3,"file":"EnableOrphanRemovalModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/EnableOrphanRemovalModification.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {\n\tconstructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.OneHasOneOwningRelation>(fieldName, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\torphanRemoval: true,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Enable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n}\n\nexport interface EnableOrphanRemovalModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const enableOrphanRemovalModification = createModificationType({\n\tid: 'enableOrphanRemoval',\n\thandler: EnableOrphanRemovalModificationHandler,\n})\n\nexport class EnableOrphanRemovalDiffer implements Differ {\n\t createDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne &&\n\t\t\t\t!originalRelation.orphanRemoval &&\n\t\t\t\tupdatedRelation.orphanRemoval\n\t\t\t) {\n\t\t\t\treturn enableOrphanRemovalModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;AAMO,MAAM,uCAA2G;AAAA,EACvH,YAA6B,MAA4D,QAAgB;AAA5E,SAAA,OAAA;AAA4D,SAAA,SAAA;AAAA,EAAA;AAAA,EAElF,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACxC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AAChC,WAAA;AAAA,MACN;AAAA,QACC;AAAA,QACA,YAA2C,WAAW,CAAC,EAAE,aAAa;AAAA,UACrE,GAAG;AAAA,UACH,eAAe;AAAA,QAAA,EACd;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,4BAA4B,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,IACjF;AAAA,EAAA;AAGF;AAOO,MAAM,kCAAkC,uBAAuB;AAAA,EACrE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,0BAA4C;AAAA,EACvD,WAAW,gBAAwB,eAAuB;AACnD,WAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAE9G,UAAA,iBAAiB,gBAAgB,KACjC,iBAAiB,eAAe,KAChC,iBAAiB,SAAS,MAAM,aAAa,aAC7C,gBAAgB,SAAS,MAAM,aAAa,aAC5C,CAAC,iBAAiB,iBAClB,gBAAgB,eACf;AACD,eAAO,gCAAgC,mBAAmB;AAAA,UACzD,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MakeRelationNotNullModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/MakeRelationNotNullModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { getEntity, tryGetColumnName } from '@contember/schema-utils'\nimport { isIt } from '../../utils/isIt'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class MakeRelationNotNullModificationHandler implements ModificationHandler<MakeRelationNotNullModificationData> {\n\tconstructor(private readonly data: MakeRelationNotNullModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = getEntity(this.schema.model, this.data.entityName)\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst columnName = tryGetColumnName(this.schema.model, entity, this.data.fieldName)\n\t\tif (!columnName) {\n\t\t\treturn\n\t\t}\n\t\tbuilder.alterColumn(entity.tableName, columnName, {\n\t\t\tnotNull: true,\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.AnyRelation & Model.NullableRelation>(fieldName, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\tnullable: false,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Make relation ${this.data.entityName}.${this.data.fieldName} not-nullable`,\n\t\t\tfailureWarning: 'Changing to not-null may fail in runtime',\n\t\t}\n\t}\n}\n\nexport interface MakeRelationNotNullModificationData {\n\tentityName: string\n\tfieldName: string\n\t// todo fillValue\n}\n\nexport const makeRelationNotNullModification = createModificationType({\n\tid: 'makeRelationNotNull',\n\thandler: MakeRelationNotNullModificationHandler,\n})\n\nexport class MakeRelationNotNullDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\toriginalRelation.type === updatedRelation.type &&\n\t\t\t\tisIt<Model.NullableRelation>(updatedRelation, 'nullable') &&\n\t\t\t\tisIt<Model.NullableRelation>(originalRelation, 'nullable') &&\n\t\t\t\t!updatedRelation.nullable &&\n\t\t\t\toriginalRelation.nullable\n\t\t\t) {\n\t\t\t\treturn makeRelationNotNullModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["getEntity","tryGetColumnName","updateModel","updateEntity","updateField","createModificationType","updateRelations","isIt"],"mappings":";;;;;;;AAQO,MAAM,uCAA2G;AAAA,EACvH,YAA6B,MAA4D,QAAgB;AAA5E,SAAA,OAAA;AAA4D,SAAA,SAAA;AAAA,EAAiB;AAAA,EAEnG,UAAU,SAAiC;AACjD,UAAM,SAASA,YAAU,UAAA,KAAK,OAAO,OAAO,KAAK,KAAK,UAAU;AAChE,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACM,UAAA,aAAaC,6BAAiB,KAAK,OAAO,OAAO,QAAQ,KAAK,KAAK,SAAS;AAClF,QAAI,CAAC,YAAY;AAChB;AAAA,IACD;AACQ,YAAA,YAAY,OAAO,WAAW,YAAY;AAAA,MACjD,SAAS;AAAA,IAAA,CACT;AAAA,EACF;AAAA,EAEO,mBAAkC;AACxC,UAAM,EAAE,YAAY,cAAc,KAAK;AAChC,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACC;AAAA,QACAC,kBAAAA,YAAwD,WAAW,CAAC,EAAE,aAAa;AAAA,UAClF,GAAG;AAAA,UACH,UAAU;AAAA,QAAA,EACT;AAAA,MACH;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,WAAW;AACH,WAAA;AAAA,MACN,SAAS,iBAAiB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,MACrE,gBAAgB;AAAA,IAAA;AAAA,EAElB;AACD;AAQO,MAAM,kCAAkCC,oBAAAA,uBAAuB;AAAA,EACrE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,0BAA4C;AAAA,EACxD,WAAW,gBAAwB,eAAuB;AAClD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAC/G,UACC,iBAAiB,SAAS,gBAAgB,QAC1CC,KAAAA,KAA6B,iBAAiB,UAAU,KACxDA,KAAAA,KAA6B,kBAAkB,UAAU,KACzD,CAAC,gBAAgB,YACjB,iBAAiB,UAChB;AACD,eAAO,gCAAgC,mBAAmB;AAAA,UACzD,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MACF;AACO,aAAA;AAAA,IAAA,CACP;AAAA,EACF;AACD;;;;"}
1
+ {"version":3,"file":"MakeRelationNotNullModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/MakeRelationNotNullModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { getEntity, tryGetColumnName } from '@contember/schema-utils'\nimport { isIt } from '../../utils/isIt'\nimport { updateRelations } from '../utils/diffUtils'\n\nexport class MakeRelationNotNullModificationHandler implements ModificationHandler<MakeRelationNotNullModificationData> {\n\tconstructor(private readonly data: MakeRelationNotNullModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = getEntity(this.schema.model, this.data.entityName)\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst columnName = tryGetColumnName(this.schema.model, entity, this.data.fieldName)\n\t\tif (!columnName) {\n\t\t\treturn\n\t\t}\n\t\tbuilder.alterColumn(entity.tableName, columnName, {\n\t\t\tnotNull: true,\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName, fieldName } = this.data\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tentityName,\n\t\t\t\tupdateField<Model.AnyRelation & Model.NullableRelation>(fieldName, ({ field }) => ({\n\t\t\t\t\t...field,\n\t\t\t\t\tnullable: false,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Make relation ${this.data.entityName}.${this.data.fieldName} not-nullable`,\n\t\t\tfailureWarning: 'Changing to not-null may fail in runtime',\n\t\t}\n\t}\n}\n\nexport interface MakeRelationNotNullModificationData {\n\tentityName: string\n\tfieldName: string\n\t// todo fillValue\n}\n\nexport const makeRelationNotNullModification = createModificationType({\n\tid: 'makeRelationNotNull',\n\thandler: MakeRelationNotNullModificationHandler,\n})\n\nexport class MakeRelationNotNullDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\toriginalRelation.type === updatedRelation.type &&\n\t\t\t\tisIt<Model.NullableRelation>(updatedRelation, 'nullable') &&\n\t\t\t\tisIt<Model.NullableRelation>(originalRelation, 'nullable') &&\n\t\t\t\t!updatedRelation.nullable &&\n\t\t\t\toriginalRelation.nullable\n\t\t\t) {\n\t\t\t\treturn makeRelationNotNullModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["getEntity","tryGetColumnName","updateModel","updateEntity","updateField","createModificationType","updateRelations","isIt"],"mappings":";;;;;;;AAQO,MAAM,uCAA2G;AAAA,EACvH,YAA6B,MAA4D,QAAgB;AAA5E,SAAA,OAAA;AAA4D,SAAA,SAAA;AAAA,EAAA;AAAA,EAElF,UAAU,SAAiC;AACjD,UAAM,SAASA,YAAU,UAAA,KAAK,OAAO,OAAO,KAAK,KAAK,UAAU;AAChE,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEK,UAAA,aAAaC,6BAAiB,KAAK,OAAO,OAAO,QAAQ,KAAK,KAAK,SAAS;AAClF,QAAI,CAAC,YAAY;AAChB;AAAA,IAAA;AAEO,YAAA,YAAY,OAAO,WAAW,YAAY;AAAA,MACjD,SAAS;AAAA,IAAA,CACT;AAAA,EAAA;AAAA,EAGK,mBAAkC;AACxC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AAChC,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACC;AAAA,QACAC,kBAAAA,YAAwD,WAAW,CAAC,EAAE,aAAa;AAAA,UAClF,GAAG;AAAA,UACH,UAAU;AAAA,QAAA,EACT;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,iBAAiB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,MACrE,gBAAgB;AAAA,IACjB;AAAA,EAAA;AAEF;AAQO,MAAM,kCAAkCC,oBAAAA,uBAAuB;AAAA,EACrE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,0BAA4C;AAAA,EACxD,WAAW,gBAAwB,eAAuB;AAClD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAC/G,UACC,iBAAiB,SAAS,gBAAgB,QAC1CC,KAAAA,KAA6B,iBAAiB,UAAU,KACxDA,KAAAA,KAA6B,kBAAkB,UAAU,KACzD,CAAC,gBAAgB,YACjB,iBAAiB,UAChB;AACD,eAAO,gCAAgC,mBAAmB;AAAA,UACzD,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,QAAA,CAC3B;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;;;;"}