@contember/schema-migrations 1.2.0 → 1.3.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/src/MigrationCreator.js +2 -2
  2. package/dist/src/MigrationCreator.js.map +1 -1
  3. package/dist/src/MigrationDescriber.d.ts +4 -4
  4. package/dist/src/MigrationDescriber.d.ts.map +1 -1
  5. package/dist/src/MigrationDescriber.js +8 -7
  6. package/dist/src/MigrationDescriber.js.map +1 -1
  7. package/dist/src/MigrationFilesManager.js +2 -2
  8. package/dist/src/MigrationFilesManager.js.map +1 -1
  9. package/dist/src/MigrationsResolver.js +3 -3
  10. package/dist/src/MigrationsResolver.js.map +1 -1
  11. package/dist/src/SchemaDiffer.d.ts.map +1 -1
  12. package/dist/src/SchemaDiffer.js +21 -2
  13. package/dist/src/SchemaDiffer.js.map +1 -1
  14. package/dist/src/SchemaMigrator.d.ts +1 -2
  15. package/dist/src/SchemaMigrator.d.ts.map +1 -1
  16. package/dist/src/SchemaMigrator.js +0 -1
  17. package/dist/src/SchemaMigrator.js.map +1 -1
  18. package/dist/src/index.d.ts +1 -1
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +3 -1
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/modifications/ModificationHandler.d.ts +9 -5
  23. package/dist/src/modifications/ModificationHandler.d.ts.map +1 -1
  24. package/dist/src/modifications/ModificationHandler.js.map +1 -1
  25. package/dist/src/modifications/ModificationHandlerFactory.d.ts +2 -2
  26. package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  27. package/dist/src/modifications/ModificationHandlerFactory.js +14 -0
  28. package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
  29. package/dist/src/modifications/ModificationVersions.d.ts +4 -2
  30. package/dist/src/modifications/ModificationVersions.d.ts.map +1 -1
  31. package/dist/src/modifications/ModificationVersions.js +5 -3
  32. package/dist/src/modifications/ModificationVersions.js.map +1 -1
  33. package/dist/src/modifications/actions/CreateTargetModification.d.ts +21 -0
  34. package/dist/src/modifications/actions/CreateTargetModification.d.ts.map +1 -0
  35. package/dist/src/modifications/actions/CreateTargetModification.js +40 -0
  36. package/dist/src/modifications/actions/CreateTargetModification.js.map +1 -0
  37. package/dist/src/modifications/actions/CreateTriggerModification.d.ts +21 -0
  38. package/dist/src/modifications/actions/CreateTriggerModification.d.ts.map +1 -0
  39. package/dist/src/modifications/actions/CreateTriggerModification.js +40 -0
  40. package/dist/src/modifications/actions/CreateTriggerModification.js.map +1 -0
  41. package/dist/src/modifications/actions/RemoveTargetModification.d.ts +21 -0
  42. package/dist/src/modifications/actions/RemoveTargetModification.d.ts.map +1 -0
  43. package/dist/src/modifications/actions/RemoveTargetModification.js +40 -0
  44. package/dist/src/modifications/actions/RemoveTargetModification.js.map +1 -0
  45. package/dist/src/modifications/actions/RemoveTriggerModification.d.ts +21 -0
  46. package/dist/src/modifications/actions/RemoveTriggerModification.d.ts.map +1 -0
  47. package/dist/src/modifications/actions/RemoveTriggerModification.js +40 -0
  48. package/dist/src/modifications/actions/RemoveTriggerModification.js.map +1 -0
  49. package/dist/src/modifications/actions/UpdateTargetModification.d.ts +22 -0
  50. package/dist/src/modifications/actions/UpdateTargetModification.d.ts.map +1 -0
  51. package/dist/src/modifications/actions/UpdateTargetModification.js +46 -0
  52. package/dist/src/modifications/actions/UpdateTargetModification.js.map +1 -0
  53. package/dist/src/modifications/actions/UpdateTriggerModification.d.ts +21 -0
  54. package/dist/src/modifications/actions/UpdateTriggerModification.d.ts.map +1 -0
  55. package/dist/src/modifications/actions/UpdateTriggerModification.js +46 -0
  56. package/dist/src/modifications/actions/UpdateTriggerModification.js.map +1 -0
  57. package/dist/src/modifications/actions/index.d.ts +4 -0
  58. package/dist/src/modifications/actions/index.d.ts.map +1 -0
  59. package/dist/src/modifications/actions/index.js +20 -0
  60. package/dist/src/modifications/actions/index.js.map +1 -0
  61. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  62. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +3 -3
  63. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  64. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts +3 -3
  65. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  66. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js +20 -32
  67. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  68. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts +11 -5
  69. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
  70. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js +37 -9
  71. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  72. package/dist/src/modifications/constraints/utils.d.ts +7 -0
  73. package/dist/src/modifications/constraints/utils.d.ts.map +1 -0
  74. package/dist/src/modifications/constraints/utils.js +33 -0
  75. package/dist/src/modifications/constraints/utils.js.map +1 -0
  76. package/dist/src/modifications/entities/CreateEntityModification.d.ts +4 -4
  77. package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  78. package/dist/src/modifications/entities/CreateEntityModification.js +18 -14
  79. package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
  80. package/dist/src/modifications/entities/CreateViewModification.d.ts +2 -2
  81. package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
  82. package/dist/src/modifications/entities/CreateViewModification.js +14 -10
  83. package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
  84. package/dist/src/modifications/entities/RemoveEntityModification.d.ts +3 -4
  85. package/dist/src/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
  86. package/dist/src/modifications/entities/RemoveEntityModification.js +3 -2
  87. package/dist/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  88. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts +2 -2
  89. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
  90. package/dist/src/modifications/entities/ToggleEventLogModification.js +3 -3
  91. package/dist/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  92. package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts +4 -5
  93. package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
  94. package/dist/src/modifications/entities/UpdateEntityNameModification.js +3 -19
  95. package/dist/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  96. package/dist/src/modifications/entities/UpdateEntityOrderByModification.d.ts +23 -0
  97. package/dist/src/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -0
  98. package/dist/src/modifications/entities/UpdateEntityOrderByModification.js +63 -0
  99. package/dist/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -0
  100. package/dist/src/modifications/entities/index.d.ts +1 -0
  101. package/dist/src/modifications/entities/index.d.ts.map +1 -1
  102. package/dist/src/modifications/entities/index.js +1 -0
  103. package/dist/src/modifications/entities/index.js.map +1 -1
  104. package/dist/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  105. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts +4 -5
  106. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
  107. package/dist/src/modifications/fields/UpdateFieldNameModification.js +18 -27
  108. package/dist/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  109. package/dist/src/modifications/indexes/CreateIndexModification.d.ts +5 -5
  110. package/dist/src/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
  111. package/dist/src/modifications/indexes/CreateIndexModification.js +24 -35
  112. package/dist/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  113. package/dist/src/modifications/indexes/RemoveIndexModification.d.ts +12 -6
  114. package/dist/src/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
  115. package/dist/src/modifications/indexes/RemoveIndexModification.js +36 -10
  116. package/dist/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  117. package/dist/src/modifications/indexes/utils.d.ts +7 -0
  118. package/dist/src/modifications/indexes/utils.d.ts.map +1 -0
  119. package/dist/src/modifications/indexes/utils.js +33 -0
  120. package/dist/src/modifications/indexes/utils.js.map +1 -0
  121. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +3 -4
  122. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
  123. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js +10 -10
  124. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  125. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts +3 -4
  126. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
  127. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js +14 -12
  128. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  129. package/dist/src/modifications/relations/CreateRelationModification.d.ts +3 -4
  130. package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
  131. package/dist/src/modifications/relations/CreateRelationModification.js +14 -26
  132. package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
  133. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts +3 -4
  134. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
  135. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js +4 -5
  136. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
  137. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts +2 -2
  138. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
  139. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js +20 -1
  140. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  141. package/dist/src/modifications/relations/helpers.d.ts +13 -0
  142. package/dist/src/modifications/relations/helpers.d.ts.map +1 -0
  143. package/dist/src/modifications/relations/helpers.js +29 -0
  144. package/dist/src/modifications/relations/helpers.js.map +1 -0
  145. package/dist/src/modifications/upgrade/RemoveIndexNamesModification.d.ts +19 -0
  146. package/dist/src/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -0
  147. package/dist/src/modifications/upgrade/RemoveIndexNamesModification.js +40 -0
  148. package/dist/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -0
  149. package/dist/src/modifications/utils/createJunctionTable.d.ts +2 -3
  150. package/dist/src/modifications/utils/createJunctionTable.d.ts.map +1 -1
  151. package/dist/src/modifications/utils/createJunctionTable.js +4 -6
  152. package/dist/src/modifications/utils/createJunctionTable.js.map +1 -1
  153. package/dist/src/modifications/utils/schemaUpdateUtils.d.ts +2 -4
  154. package/dist/src/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
  155. package/dist/src/modifications/utils/schemaUpdateUtils.js +5 -20
  156. package/dist/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  157. package/dist/src/modifications/utils/stringArrayEquals.d.ts +2 -0
  158. package/dist/src/modifications/utils/stringArrayEquals.d.ts.map +1 -0
  159. package/dist/src/modifications/utils/stringArrayEquals.js +9 -0
  160. package/dist/src/modifications/utils/stringArrayEquals.js.map +1 -0
  161. package/dist/src/tsconfig.tsbuildinfo +1 -1
  162. package/dist/src/utils/PartialEntity.d.ts +5 -3
  163. package/dist/src/utils/PartialEntity.d.ts.map +1 -1
  164. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js +1 -1
  165. package/dist/tests/cases/integration/convertOneToManyRelation.test.js +5 -5
  166. package/dist/tests/cases/integration/convertOneToManyRelation.test.js.map +1 -1
  167. package/dist/tests/cases/integration/createAndDropIndex.test.js +4 -4
  168. package/dist/tests/cases/integration/createAndDropIndex.test.js.map +1 -1
  169. package/dist/tests/cases/integration/createEntity.test.js +6 -9
  170. package/dist/tests/cases/integration/createEntity.test.js.map +1 -1
  171. package/dist/tests/cases/integration/createManyHasMany.test.js +3 -3
  172. package/dist/tests/cases/integration/createManyHasOne.test.js +4 -4
  173. package/dist/tests/cases/integration/createManyHasOne.test.js.map +1 -1
  174. package/dist/tests/cases/integration/createOneHasMany.test.js +6 -9
  175. package/dist/tests/cases/integration/createOneHasMany.test.js.map +1 -1
  176. package/dist/tests/cases/integration/createOneHasOne.test.js +6 -6
  177. package/dist/tests/cases/integration/createRelationInverseSide.test.js +1 -1
  178. package/dist/tests/cases/integration/createRelationInverseSide.test.js.map +1 -1
  179. package/dist/tests/cases/integration/createView.test.js +6 -6
  180. package/dist/tests/cases/integration/removeField.test.js +6 -6
  181. package/dist/tests/cases/integration/removeField.test.js.map +1 -1
  182. package/dist/tests/cases/integration/updateColumnDefinition.test.js +4 -4
  183. package/dist/tests/cases/integration/updateEntityName.test.js +6 -5
  184. package/dist/tests/cases/integration/updateEntityName.test.js.map +1 -1
  185. package/dist/tests/cases/integration/updateEntityOrderBy.test.d.ts +2 -0
  186. package/dist/tests/cases/integration/updateEntityOrderBy.test.d.ts.map +1 -0
  187. package/dist/tests/cases/integration/updateEntityOrderBy.test.js +57 -0
  188. package/dist/tests/cases/integration/updateEntityOrderBy.test.js.map +1 -0
  189. package/dist/tests/cases/integration/updateFieldName.test.js +8 -7
  190. package/dist/tests/cases/integration/updateFieldName.test.js.map +1 -1
  191. package/dist/tests/cases/integration/updateRelationOnDelete.test.js +2 -1
  192. package/dist/tests/cases/integration/updateRelationOnDelete.test.js.map +1 -1
  193. package/dist/tests/cases/integration/updateView.test.js +18 -18
  194. package/dist/tests/scripts/checkCreateConsistentMigrations.js +1 -1
  195. package/dist/tests/scripts/checkCreateConsistentMigrations.js.map +1 -1
  196. package/dist/tests/src/tests.d.ts.map +1 -1
  197. package/dist/tests/src/tests.js +12 -8
  198. package/dist/tests/src/tests.js.map +1 -1
  199. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +11 -7
  201. package/src/MigrationCreator.ts +1 -1
  202. package/src/MigrationDescriber.ts +11 -9
  203. package/src/MigrationFilesManager.ts +1 -1
  204. package/src/MigrationsResolver.ts +1 -1
  205. package/src/SchemaDiffer.ts +23 -12
  206. package/src/SchemaMigrator.ts +1 -3
  207. package/src/index.ts +1 -1
  208. package/src/modifications/ModificationHandler.ts +10 -5
  209. package/src/modifications/ModificationHandlerFactory.ts +24 -11
  210. package/src/modifications/ModificationVersions.ts +4 -2
  211. package/src/modifications/actions/CreateTargetModification.ts +46 -0
  212. package/src/modifications/actions/CreateTriggerModification.ts +46 -0
  213. package/src/modifications/actions/RemoveTargetModification.ts +46 -0
  214. package/src/modifications/actions/RemoveTriggerModification.ts +46 -0
  215. package/src/modifications/actions/UpdateTargetModification.ts +51 -0
  216. package/src/modifications/actions/UpdateTriggerModification.ts +49 -0
  217. package/src/modifications/actions/index.ts +3 -0
  218. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +1 -2
  219. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +31 -40
  220. package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +60 -15
  221. package/src/modifications/constraints/utils.ts +36 -0
  222. package/src/modifications/entities/CreateEntityModification.ts +9 -8
  223. package/src/modifications/entities/CreateViewModification.ts +4 -3
  224. package/src/modifications/entities/RemoveEntityModification.ts +5 -5
  225. package/src/modifications/entities/ToggleEventLogModification.ts +4 -3
  226. package/src/modifications/entities/UpdateEntityNameModification.ts +10 -25
  227. package/src/modifications/entities/UpdateEntityOrderByModification.ts +68 -0
  228. package/src/modifications/entities/index.ts +1 -0
  229. package/src/modifications/fields/RemoveFieldModification.ts +1 -1
  230. package/src/modifications/fields/UpdateFieldNameModification.ts +33 -39
  231. package/src/modifications/indexes/CreateIndexModification.ts +35 -41
  232. package/src/modifications/indexes/RemoveIndexModification.ts +57 -17
  233. package/src/modifications/indexes/utils.ts +30 -0
  234. package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +7 -19
  235. package/src/modifications/relations/ConvertOneToManyRelationModification.ts +21 -22
  236. package/src/modifications/relations/CreateRelationModification.ts +21 -49
  237. package/src/modifications/relations/ToggleJunctionEventLogModification.ts +4 -5
  238. package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +30 -3
  239. package/src/modifications/relations/helpers.ts +39 -0
  240. package/src/modifications/upgrade/RemoveIndexNamesModification.ts +46 -0
  241. package/src/modifications/utils/createJunctionTable.ts +8 -8
  242. package/src/modifications/utils/schemaUpdateUtils.ts +5 -17
  243. package/src/modifications/utils/stringArrayEquals.ts +4 -0
  244. package/src/tsconfig.json +4 -12
  245. package/src/utils/PartialEntity.ts +7 -1
  246. package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +1 -1
  247. package/tests/cases/integration/convertOneToManyRelation.test.ts +5 -5
  248. package/tests/cases/integration/createAndDropIndex.test.ts +4 -4
  249. package/tests/cases/integration/createEntity.test.ts +6 -9
  250. package/tests/cases/integration/createManyHasMany.test.ts +3 -3
  251. package/tests/cases/integration/createManyHasOne.test.ts +4 -4
  252. package/tests/cases/integration/createOneHasMany.test.ts +6 -9
  253. package/tests/cases/integration/createOneHasOne.test.ts +6 -6
  254. package/tests/cases/integration/createRelationInverseSide.test.ts +1 -1
  255. package/tests/cases/integration/createView.test.ts +6 -6
  256. package/tests/cases/integration/removeField.test.ts +6 -6
  257. package/tests/cases/integration/updateColumnDefinition.test.ts +4 -4
  258. package/tests/cases/integration/updateEntityName.test.ts +7 -5
  259. package/tests/cases/integration/updateEntityOrderBy.test.ts +43 -0
  260. package/tests/cases/integration/updateFieldName.test.ts +9 -7
  261. package/tests/cases/integration/updateRelationOnDelete.test.ts +2 -1
  262. package/tests/cases/integration/updateView.test.ts +18 -18
  263. package/tests/scripts/checkCreateConsistentMigrations.ts +1 -1
  264. package/tests/src/tests.ts +18 -15
  265. package/tests/tsconfig.json +2 -6
  266. package/dist/src/MigrationVersionHelper.d.ts +0 -9
  267. package/dist/src/MigrationVersionHelper.d.ts.map +0 -1
  268. package/dist/src/MigrationVersionHelper.js +0 -45
  269. package/dist/src/MigrationVersionHelper.js.map +0 -1
  270. package/dist/src/modifications/utils/renameConstraintsHelper.d.ts +0 -8
  271. package/dist/src/modifications/utils/renameConstraintsHelper.d.ts.map +0 -1
  272. package/dist/src/modifications/utils/renameConstraintsHelper.js +0 -31
  273. package/dist/src/modifications/utils/renameConstraintsHelper.js.map +0 -1
  274. package/dist/src/modifications/utils/schemaMeta.d.ts +0 -8
  275. package/dist/src/modifications/utils/schemaMeta.d.ts.map +0 -1
  276. package/dist/src/modifications/utils/schemaMeta.js +0 -13
  277. package/dist/src/modifications/utils/schemaMeta.js.map +0 -1
  278. package/dist/tests/cases/integration/takenIndexName.test.d.ts +0 -2
  279. package/dist/tests/cases/integration/takenIndexName.test.d.ts.map +0 -1
  280. package/dist/tests/cases/integration/takenIndexName.test.js +0 -307
  281. package/dist/tests/cases/integration/takenIndexName.test.js.map +0 -1
  282. package/src/MigrationVersionHelper.ts +0 -46
  283. package/src/modifications/utils/renameConstraintsHelper.ts +0 -34
  284. package/src/modifications/utils/schemaMeta.ts +0 -18
  285. package/tests/cases/integration/takenIndexName.test.ts +0 -314
@@ -5,7 +5,7 @@ import {
5
5
  createModificationType,
6
6
  Differ,
7
7
  ModificationHandler,
8
- ModificationHandlerOptions,
8
+ ModificationHandlerCreateSqlOptions,
9
9
  } from '../ModificationHandler'
10
10
  import {
11
11
  createEventTrigger,
@@ -22,11 +22,10 @@ export class ToggleJunctionEventLogModificationHandler implements ModificationHa
22
22
  constructor(
23
23
  private readonly data: ToggleJunctionEventLogModificationData,
24
24
  private readonly schema: Schema,
25
- private readonly options: ModificationHandlerOptions,
26
25
  ) {
27
26
  }
28
27
 
29
- public createSql(builder: MigrationBuilder): void {
28
+ public createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {
30
29
  const entity = this.schema.model.entities[this.data.entityName]
31
30
  const relation = entity.fields[this.data.fieldName]
32
31
  if (!isRelation(relation) || relation.type !== Model.RelationType.ManyHasMany || !isOwningRelation(relation)) {
@@ -38,8 +37,8 @@ export class ToggleJunctionEventLogModificationHandler implements ModificationHa
38
37
  relation.joiningTable.joiningColumn.columnName,
39
38
  relation.joiningTable.inverseJoiningColumn.columnName,
40
39
  ]
41
- createEventTrigger(builder, this.options.systemSchema, tableName, primaryColumns)
42
- createEventTrxTrigger(builder, this.options.systemSchema, tableName)
40
+ createEventTrigger(builder, systemSchema, tableName, primaryColumns)
41
+ createEventTrxTrigger(builder, systemSchema, tableName)
43
42
  } else {
44
43
  dropEventTrigger(builder, tableName)
45
44
  dropEventTrxTrigger(builder, tableName)
@@ -1,14 +1,41 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
4
- import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
4
+ import {
5
+ createModificationType,
6
+ Differ,
7
+ ModificationHandler,
8
+ ModificationHandlerCreateSqlOptions,
9
+ } from '../ModificationHandler'
5
10
  import { isIt } from '../../utils/isIt'
6
11
  import { updateRelations } from '../utils/diffUtils'
12
+ import { acceptRelationTypeVisitor } from '@contember/schema-utils'
13
+ import { addForeignKeyConstraint } from './helpers'
7
14
 
8
15
  export class UpdateRelationOnDeleteModificationHandler implements ModificationHandler<UpdateRelationOnDeleteModificationData> {
9
- constructor(private readonly data: UpdateRelationOnDeleteModificationData, private readonly schema: Schema) {}
16
+ constructor(
17
+ private readonly data: UpdateRelationOnDeleteModificationData,
18
+ private readonly schema: Schema,
19
+ ) {}
10
20
 
11
- public createSql(builder: MigrationBuilder): void {}
21
+ public createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {
22
+ const entity = this.schema.model.entities[this.data.entityName]
23
+ if (entity.view) {
24
+ return
25
+ }
26
+ acceptRelationTypeVisitor(this.schema.model, entity, this.data.fieldName, {
27
+ visitManyHasOne: ({ entity, relation, targetEntity }) => {
28
+ addForeignKeyConstraint({ builder, entity, targetEntity, relation, recreate: true, databaseMetadata, invalidateDatabaseMetadata })
29
+ },
30
+ visitOneHasOneOwning: ({ entity, relation, targetEntity }) => {
31
+ addForeignKeyConstraint({ builder, entity, targetEntity, relation, recreate: true, databaseMetadata, invalidateDatabaseMetadata })
32
+ },
33
+ visitOneHasMany: () => {},
34
+ visitOneHasOneInverse: () => {},
35
+ visitManyHasManyOwning: () => {},
36
+ visitManyHasManyInverse: () => {},
37
+ })
38
+ }
12
39
 
13
40
  public getSchemaUpdater(): SchemaUpdater {
14
41
  const { entityName, fieldName, onDelete } = this.data
@@ -0,0 +1,39 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Model } from '@contember/schema'
3
+ import { wrapIdentifier } from '../../utils/dbHelpers'
4
+ import { SchemaDatabaseMetadata } from '@contember/schema-utils'
5
+
6
+ export const addForeignKeyConstraint = ({ builder, entity, relation, targetEntity, recreate = false, databaseMetadata, invalidateDatabaseMetadata }: {
7
+ recreate?: boolean
8
+ builder: MigrationBuilder
9
+ entity: Model.Entity
10
+ targetEntity: Model.Entity
11
+ relation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation
12
+ databaseMetadata: SchemaDatabaseMetadata
13
+ invalidateDatabaseMetadata: () => void
14
+ }) => {
15
+ if (recreate) {
16
+ const fkNames = databaseMetadata.getForeignKeyConstraintNames(
17
+ {
18
+ fromTable: entity.tableName,
19
+ fromColumn: relation.joiningColumn.columnName,
20
+ toTable: targetEntity.tableName,
21
+ toColumn: targetEntity.primaryColumn,
22
+ },
23
+ )
24
+ for (const name of fkNames) {
25
+ builder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)
26
+ }
27
+ }
28
+
29
+ const onDelete = ({
30
+ [Model.OnDelete.setNull]: 'SET NULL',
31
+ [Model.OnDelete.cascade]: 'CASCADE',
32
+ [Model.OnDelete.restrict]: 'NO ACTION',
33
+ } as const)[relation.joiningColumn.onDelete]
34
+ builder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)}
35
+ ADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)})
36
+ REFERENCES ${wrapIdentifier(targetEntity.tableName)}(${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE`)
37
+
38
+ invalidateDatabaseMetadata()
39
+ }
@@ -0,0 +1,46 @@
1
+ import { Schema } from '@contember/schema'
2
+ import { SchemaUpdater, updateEveryEntity, updateModel } from '../utils/schemaUpdateUtils'
3
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
4
+
5
+ export class RemoveIndexNamesModificationHandler implements ModificationHandler<RemoveIndexNamesModificationData> {
6
+ constructor() {}
7
+
8
+ public createSql(): void {
9
+ }
10
+
11
+ public getSchemaUpdater(): SchemaUpdater {
12
+ return updateModel(
13
+ updateEveryEntity(({ entity }) => {
14
+ return {
15
+ ...entity,
16
+ indexes: entity.indexes.map(({ name, ...other }) => other),
17
+ unique: entity.unique.map(({ name, ...other }) => other),
18
+ }
19
+ }),
20
+ )
21
+ }
22
+
23
+ describe() {
24
+ return { message: `Schema upgrade: remove names of indexes and unique constraints` }
25
+ }
26
+ }
27
+
28
+ export const removeIndexNamesModification = createModificationType({
29
+ id: 'removeIndexNames',
30
+ handler: RemoveIndexNamesModificationHandler,
31
+ })
32
+
33
+
34
+ export type RemoveIndexNamesModificationData = {}
35
+
36
+ export class RemoveIndexNamesDiffer implements Differ {
37
+ createDiff(originalSchema: Schema) {
38
+ const hasNames = !!Object.values(originalSchema.model.entities).find(it => {
39
+ return it.indexes.find(it => !!it.name) || it.unique.find(it => !!it.name)
40
+ })
41
+ if (hasNames) {
42
+ return [removeIndexNamesModification.createModification({})]
43
+ }
44
+ return []
45
+ }
46
+ }
@@ -1,13 +1,13 @@
1
1
  import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'
2
2
  import { MigrationBuilder } from '@contember/database-migrations'
3
- import { Model } from '@contember/schema'
3
+ import { Model, Schema } from '@contember/schema'
4
4
  import { getPrimaryColumnType } from './getPrimaryColumnType'
5
- import { resolveIndexName, SchemaWithMeta } from './schemaMeta'
5
+ import { wrapIdentifier } from '../../utils/dbHelpers'
6
6
 
7
7
  export const createJunctionTableSql = (
8
8
  builder: MigrationBuilder,
9
9
  systemSchema: string,
10
- schema: SchemaWithMeta,
10
+ schema: Schema,
11
11
  entity: Model.Entity,
12
12
  targetEntity: Model.Entity,
13
13
  relation: Model.ManyHasManyOwningRelation,
@@ -33,11 +33,11 @@ export const createJunctionTableSql = (
33
33
  },
34
34
  },
35
35
  )
36
- const proposedIndexName = `${relation.joiningTable.tableName}_pkey`
37
- const indexName = resolveIndexName(schema, proposedIndexName)
38
- builder.addConstraint(relation.joiningTable.tableName, indexName, {
39
- primaryKey: primaryColumns,
40
- })
36
+
37
+ const tableNameId = wrapIdentifier(relation.joiningTable.tableName)
38
+ const columnNameId = primaryColumns.map(wrapIdentifier)
39
+ builder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${columnNameId.join(', ')})`)
40
+
41
41
  if (relation.joiningTable.eventLog.enabled) {
42
42
  createEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)
43
43
  createEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)
@@ -3,10 +3,9 @@ import { SchemaUpdateError } from '../exceptions'
3
3
  import { isDefined } from '../../utils/isDefined'
4
4
  import { isInverseRelation, isOwningRelation, isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'
5
5
  import { VERSION_ACL_PATCH, VERSION_REMOVE_RELATION_INVERSE_SIDE } from '../ModificationVersions'
6
- import { resolveIndexName, SchemaWithMeta } from './schemaMeta'
7
6
 
8
7
 
9
- export type SchemaUpdater = (args: { schema: SchemaWithMeta }) => SchemaWithMeta
8
+ export type SchemaUpdater = (args: { schema: Schema }) => Schema
10
9
  export type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema
11
10
  export type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity
12
11
  export type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {
@@ -271,13 +270,13 @@ export const removeField = (entityName: string, fieldName: string, version: numb
271
270
  updateModel(
272
271
  updateEntity(entity.name, ({ entity }) => {
273
272
  const { [field.name]: removed, ...fields } = entity.fields
274
- const indexes = Object.entries(entity.indexes).filter(([, index]) => !index.fields.includes(field.name))
275
- const unique = Object.entries(entity.unique).filter(([, index]) => !index.fields.includes(field.name))
273
+ const indexes = entity.indexes.filter(index => !index.fields.includes(field.name))
274
+ const unique = entity.unique.filter(index => !index.fields.includes(field.name))
276
275
  return {
277
276
  ...entity,
278
277
  fields,
279
- indexes: Object.fromEntries(indexes),
280
- unique: Object.fromEntries(unique),
278
+ indexes,
279
+ unique,
281
280
  }
282
281
  }),
283
282
  isRelation(field) && isInverseRelation(field)
@@ -290,14 +289,3 @@ export const removeField = (entityName: string, fieldName: string, version: numb
290
289
  )({ schema })
291
290
  }
292
291
  }
293
-
294
- export const addTakenIndexName = (indexName: string): SchemaUpdater => ({ schema }) => ({
295
- ...schema,
296
- meta: {
297
- ...schema.meta,
298
- takenIndexNames: {
299
- ...schema.meta?.takenIndexNames,
300
- [resolveIndexName(schema, indexName)]: true,
301
- },
302
- },
303
- })
@@ -0,0 +1,4 @@
1
+ export const stringArrayEquals = (colA: string[], colB: string[]) => {
2
+ return colA.length === colB.length
3
+ && colA.every((it, index) => it === colB[index])
4
+ }
package/src/tsconfig.json CHANGED
@@ -6,17 +6,9 @@
6
6
  "downlevelIteration": true
7
7
  },
8
8
  "references": [
9
- {
10
- "path": "../../database/src"
11
- },
12
- {
13
- "path": "../../database-migrations/src"
14
- },
15
- {
16
- "path": "../../schema/src"
17
- },
18
- {
19
- "path": "../../schema-utils/src"
20
- }
9
+ { "path": "../../database-migrations/src" },
10
+ { "path": "../../engine-common/src" },
11
+ { "path": "../../schema/src" },
12
+ { "path": "../../schema-utils/src" }
21
13
  ]
22
14
  }
@@ -2,4 +2,10 @@ import { Model } from '@contember/schema'
2
2
 
3
3
  type SomePartial<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>
4
4
 
5
- export type PartialEntity = SomePartial<Model.Entity, 'eventLog' | 'indexes'>
5
+ export type PossibleEntityShapeInMigrations =
6
+ & Omit<Model.Entity, 'eventLog' | 'indexes' | 'unique'>
7
+ & {
8
+ eventLog?: Model.Entity['eventLog']
9
+ indexes?: (readonly Model.Index[]) | Readonly<Record<string, Model.Index>>
10
+ unique: (readonly Model.UniqueConstraint[]) | Readonly<Record<string, Model.UniqueConstraint>>
11
+ }
@@ -67,7 +67,7 @@ testMigrations('convert one has many to many has many', {
67
67
  "category_id" uuid NOT NULL REFERENCES "category"("id") ON DELETE CASCADE
68
68
  );
69
69
  ALTER TABLE "article_categories"
70
- ADD CONSTRAINT "article_categories_pkey" PRIMARY KEY ("article_id", "category_id");
70
+ ADD PRIMARY KEY ("article_id", "category_id");
71
71
 
72
72
  CREATE TRIGGER "log_event" AFTER INSERT OR UPDATE OR DELETE
73
73
  ON "article_categories" FOR EACH ROW
@@ -24,8 +24,8 @@ testMigrations('convert one has one to many has one relation without inverse sid
24
24
  },
25
25
  ],
26
26
  sql: SQL`
27
- CREATE INDEX "post_image_id_index" ON "post" ("image_id");
28
- ALTER TABLE "post" DROP CONSTRAINT "unique_Post_image_a85d6d";
27
+ CREATE INDEX ON "post" ("image_id");
28
+ ALTER TABLE "post" DROP CONSTRAINT "uniq_post_image_id";
29
29
  `,
30
30
  })
31
31
 
@@ -52,8 +52,8 @@ testMigrations('convert one has one to many has one relation with inverse side',
52
52
  },
53
53
  ],
54
54
  sql: SQL`
55
- CREATE INDEX "post_image_id_index" ON "post" ("image_id");
56
- ALTER TABLE "post" DROP CONSTRAINT "unique_Post_image_a85d6d";
57
- `,
55
+ CREATE INDEX ON "post" ("image_id");
56
+ ALTER TABLE "post" DROP CONSTRAINT "uniq_post_image_id";
57
+ `,
58
58
  })
59
59
 
@@ -23,10 +23,10 @@ testMigrations('create index', {
23
23
  {
24
24
  modification: 'createIndex',
25
25
  entityName: 'Article',
26
- index: { name: 'idx_Article_title_2dc66a', fields: ['title'] },
26
+ index: { fields: ['title'] },
27
27
  },
28
28
  ],
29
- sql: SQL`CREATE INDEX "idx_Article_title_2dc66a" ON "article" ("title");`,
29
+ sql: SQL`CREATE INDEX ON "article" ("title");`,
30
30
  })
31
31
 
32
32
 
@@ -37,8 +37,8 @@ testMigrations('drop index', {
37
37
  {
38
38
  modification: 'removeIndex',
39
39
  entityName: 'Article',
40
- indexName: 'idx_Article_title_2dc66a',
40
+ fields: ['title'],
41
41
  },
42
42
  ],
43
- sql: SQL`DROP INDEX "idx_Article_title_2dc66a";`,
43
+ sql: SQL`DROP INDEX "idx_article_title";`,
44
44
  })
@@ -31,11 +31,11 @@ testMigrations('create a table (no relations, unique on column)', {
31
31
  primary: 'id',
32
32
  primaryColumn: 'id',
33
33
  tableName: 'author',
34
- unique: {},
34
+ unique: [],
35
35
  eventLog: {
36
36
  enabled: true,
37
37
  },
38
- indexes: {},
38
+ indexes: [],
39
39
  },
40
40
  },
41
41
  {
@@ -74,10 +74,7 @@ testMigrations('create a table (no relations, unique on column)', {
74
74
  {
75
75
  modification: 'createUniqueConstraint',
76
76
  entityName: 'Author',
77
- unique: {
78
- name: 'unique_Author_email_a3e587',
79
- fields: ['email'],
80
- },
77
+ unique: { fields: ['email'] },
81
78
  },
82
79
  ],
83
80
  sql: SQL`CREATE TABLE "author" (
@@ -101,7 +98,7 @@ testMigrations('create a table (no relations, unique on column)', {
101
98
  ALTER TABLE "author"
102
99
  ADD "registered_at" date;
103
100
  ALTER TABLE "author"
104
- ADD CONSTRAINT "unique_Author_email_a3e587" UNIQUE ("email");`,
101
+ ADD UNIQUE ("email");`,
105
102
  })
106
103
 
107
104
  namespace ViewEntityUpdatedSchema {
@@ -137,12 +134,12 @@ testMigrations('create a view', {
137
134
  primary: 'id',
138
135
  primaryColumn: 'id',
139
136
  tableName: 'author',
140
- unique: {},
137
+ unique: [],
141
138
  view: { sql: "SELECT null as id, 'John' AS name" },
142
139
  eventLog: {
143
140
  enabled: true,
144
141
  },
145
- indexes: {},
142
+ indexes: [],
146
143
  },
147
144
  },
148
145
  ],
@@ -30,11 +30,11 @@ testMigrations('create many has many relation (post with categories)', {
30
30
  primary: 'id',
31
31
  primaryColumn: 'id',
32
32
  tableName: 'category',
33
- unique: {},
33
+ unique: [],
34
34
  eventLog: {
35
35
  enabled: true,
36
36
  },
37
- indexes: {},
37
+ indexes: [],
38
38
  },
39
39
  },
40
40
  {
@@ -93,7 +93,7 @@ testMigrations('create many has many relation (post with categories)', {
93
93
  "category_id" uuid NOT NULL REFERENCES "category"("id") ON DELETE CASCADE
94
94
  );
95
95
  ALTER TABLE "post_categories"
96
- ADD CONSTRAINT "post_categories_pkey" PRIMARY KEY ("post_id", "category_id");
96
+ ADD PRIMARY KEY ("post_id", "category_id");
97
97
  CREATE TRIGGER "log_event"
98
98
  AFTER INSERT OR UPDATE OR DELETE
99
99
  ON "post_categories"
@@ -32,11 +32,11 @@ testMigrations('create many has one relation (post with author)', {
32
32
  primary: 'id',
33
33
  primaryColumn: 'id',
34
34
  tableName: 'post',
35
- unique: {},
35
+ unique: [],
36
36
  eventLog: {
37
37
  enabled: true,
38
38
  },
39
- indexes: {},
39
+ indexes: [],
40
40
  },
41
41
  },
42
42
  {
@@ -84,6 +84,6 @@ testMigrations('create many has one relation (post with author)', {
84
84
  ALTER TABLE "post"
85
85
  ADD "author_id" uuid;
86
86
  ALTER TABLE "post"
87
- ADD CONSTRAINT "fk_post_author_id_87ef9a" FOREIGN KEY ("author_id") REFERENCES "author"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
88
- CREATE INDEX "post_author_id_index" ON "post" ("author_id");`,
87
+ ADD FOREIGN KEY ("author_id") REFERENCES "author"("id") ON DELETE CASCADE DEFERRABLE INITIALLY IMMEDIATE;
88
+ CREATE INDEX ON "post" ("author_id");`,
89
89
  })
@@ -33,11 +33,11 @@ testMigrations('create one has many relation (post with locales)', {
33
33
  primary: 'id',
34
34
  primaryColumn: 'id',
35
35
  tableName: 'post_locale',
36
- unique: {},
36
+ unique: [],
37
37
  eventLog: {
38
38
  enabled: true,
39
39
  },
40
- indexes: {},
40
+ indexes: [],
41
41
  },
42
42
  },
43
43
  {
@@ -92,10 +92,7 @@ testMigrations('create one has many relation (post with locales)', {
92
92
  {
93
93
  modification: 'createUniqueConstraint',
94
94
  entityName: 'PostLocale',
95
- unique: {
96
- name: 'unique_PostLocale_post_locale_5759e8',
97
- fields: ['post', 'locale'],
98
- },
95
+ unique: { fields: ['post', 'locale'] },
99
96
  },
100
97
  ],
101
98
  sql: SQL`CREATE TABLE "post_locale" (
@@ -119,8 +116,8 @@ testMigrations('create one has many relation (post with locales)', {
119
116
  ALTER TABLE "post_locale"
120
117
  ADD "post_id" uuid NOT NULL;
121
118
  ALTER TABLE "post_locale"
122
- ADD CONSTRAINT "fk_post_locale_post_id_f3d2e5" FOREIGN KEY ("post_id") REFERENCES "post"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
123
- CREATE INDEX "post_locale_post_id_index" ON "post_locale" ("post_id");
119
+ ADD FOREIGN KEY ("post_id") REFERENCES "post"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
120
+ CREATE INDEX ON "post_locale" ("post_id");
124
121
  ALTER TABLE "post_locale"
125
- ADD CONSTRAINT "unique_PostLocale_post_locale_5759e8" UNIQUE ("post_id", "locale");`,
122
+ ADD UNIQUE ("post_id", "locale");`,
126
123
  })
@@ -30,11 +30,11 @@ testMigrations('create one has one relation (site with settings)', {
30
30
  primary: 'id',
31
31
  primaryColumn: 'id',
32
32
  tableName: 'site',
33
- unique: {},
33
+ unique: [],
34
34
  eventLog: {
35
35
  enabled: true,
36
36
  },
37
- indexes: {},
37
+ indexes: [],
38
38
  },
39
39
  },
40
40
  {
@@ -53,11 +53,11 @@ testMigrations('create one has one relation (site with settings)', {
53
53
  primary: 'id',
54
54
  primaryColumn: 'id',
55
55
  tableName: 'site_setting',
56
- unique: {},
56
+ unique: [],
57
57
  eventLog: {
58
58
  enabled: true,
59
59
  },
60
- indexes: {},
60
+ indexes: [],
61
61
  },
62
62
  },
63
63
  {
@@ -140,8 +140,8 @@ testMigrations('create one has one relation (site with settings)', {
140
140
  ALTER TABLE "site"
141
141
  ADD "setting_id" uuid;
142
142
  ALTER TABLE "site"
143
- ADD CONSTRAINT "fk_site_setting_id_6a4aa6" FOREIGN KEY ("setting_id") REFERENCES "site_setting"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
143
+ ADD FOREIGN KEY ("setting_id") REFERENCES "site_setting"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
144
144
  ALTER TABLE "site"
145
- ADD CONSTRAINT "unique_Site_setting_8653a0" UNIQUE ("setting_id");
145
+ ADD UNIQUE ("setting_id");
146
146
  `,
147
147
  })
@@ -56,5 +56,5 @@ testMigrations('create inverse side relation together with changing onDelete beh
56
56
  },
57
57
  },
58
58
  ],
59
- sql: SQL``,
59
+ sql: SQL`ALTER TABLE "post_locale" DROP CONSTRAINT "fk_post_locale_post_id_post_id"; ALTER TABLE "post_locale" ADD FOREIGN KEY ("post_id") REFERENCES "post"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;`,
60
60
  })
@@ -33,7 +33,7 @@ testMigrations('create view', {
33
33
  name: 'AuthorStats',
34
34
  primary: 'id',
35
35
  primaryColumn: 'id',
36
- unique: {},
36
+ unique: [],
37
37
  fields: {
38
38
  id: {
39
39
  name: 'id',
@@ -68,7 +68,7 @@ testMigrations('create view', {
68
68
  eventLog: {
69
69
  enabled: true,
70
70
  },
71
- indexes: {},
71
+ indexes: [],
72
72
  },
73
73
  },
74
74
  {
@@ -129,8 +129,8 @@ testMigrations('create a relation and a view', {
129
129
  entity: { name: 'ArticleStats',
130
130
  primary: 'id',
131
131
  primaryColumn: 'id',
132
- unique: {},
133
- indexes: {},
132
+ unique: [],
133
+ indexes: [],
134
134
  fields: { id: { name: 'id', columnName: 'id', nullable: false, type: 'Uuid', columnType: 'uuid' },
135
135
  article: { name: 'article', inversedBy: 'stats', nullable: true, type: 'OneHasOne', target: 'Article', joiningColumn: { columnName: 'article_id', onDelete: 'restrict' } },
136
136
  visitCount: { name: 'visitCount', columnName: 'visit_count', nullable: true, type: 'Integer', columnType: 'integer' } },
@@ -151,8 +151,8 @@ testMigrations('create a relation and a view', {
151
151
  },
152
152
  ],
153
153
  sql: SQL`ALTER TABLE "article" ADD "category_id" uuid;
154
- ALTER TABLE "article" ADD CONSTRAINT "fk_article_category_id_703b8b" FOREIGN KEY ("category_id") REFERENCES "category"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
155
- CREATE INDEX "article_category_id_index" ON "article" ("category_id");
154
+ ALTER TABLE "article" ADD FOREIGN KEY ("category_id") REFERENCES "category"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
155
+ CREATE INDEX ON "article" ("category_id");
156
156
  CREATE VIEW "article_stats" AS SELECT 1;`,
157
157
  })
158
158
 
@@ -47,8 +47,8 @@ testMigrations('remove relation (one has many)', {
47
47
  .buildSchema(),
48
48
  diff: [
49
49
  {
50
- constraintName: 'unique_PostLocale_post_locale_5759e8',
51
50
  entityName: 'PostLocale',
51
+ fields: ['post', 'locale'],
52
52
  modification: 'removeUniqueConstraint',
53
53
  },
54
54
  {
@@ -57,7 +57,7 @@ testMigrations('remove relation (one has many)', {
57
57
  fieldName: 'post',
58
58
  },
59
59
  ],
60
- sql: SQL`ALTER TABLE "post_locale" DROP CONSTRAINT "unique_PostLocale_post_locale_5759e8";
60
+ sql: SQL`ALTER TABLE "post_locale" DROP CONSTRAINT "uniq_post_locale_post_id_locale";
61
61
  ALTER TABLE "post_locale" DROP "post_id";`,
62
62
  })
63
63
 
@@ -173,15 +173,15 @@ testMigrations('test drop index / unique when removing a field', {
173
173
  }, {
174
174
  modification: 'createUniqueConstraint',
175
175
  entityName: 'Article',
176
- unique: { name: 'unique_Article_title_author_7157ea', fields: ['title', 'author'] },
176
+ unique: { fields: ['title', 'author'] },
177
177
  }, {
178
178
  modification: 'createIndex',
179
179
  entityName: 'Article',
180
- index: { name: 'idx_Article_title_author_7157ea', fields: ['title', 'author'] },
180
+ index: { fields: ['title', 'author'] },
181
181
  }],
182
182
  sql: SQL`ALTER TABLE "article" DROP "author_id";
183
183
  ALTER TABLE "article" ADD "author" text;
184
- ALTER TABLE "article" ADD CONSTRAINT "unique_Article_title_author_7157ea" UNIQUE ("title", "author");
185
- CREATE INDEX "idx_Article_title_author_7157ea" ON "article" ("title", "author");`,
184
+ ALTER TABLE "article" ADD UNIQUE ("title", "author");
185
+ CREATE INDEX ON "article" ("title", "author");`,
186
186
  })
187
187
 
@@ -124,8 +124,8 @@ testMigrations('recreate view dependent on entity after changing column type', {
124
124
  name: 'AuthorMetaX',
125
125
  primary: 'id',
126
126
  primaryColumn: 'id',
127
- unique: {},
128
- indexes: {},
127
+ unique: [],
128
+ indexes: [],
129
129
  fields: {
130
130
  id: {
131
131
  name: 'id',
@@ -145,8 +145,8 @@ testMigrations('recreate view dependent on entity after changing column type', {
145
145
  name: 'AuthorMetaY',
146
146
  primary: 'id',
147
147
  primaryColumn: 'id',
148
- unique: {},
149
- indexes: {},
148
+ unique: [],
149
+ indexes: [],
150
150
  fields: {
151
151
  id: {
152
152
  name: 'id',
@@ -43,12 +43,15 @@ testMigrations('rename entity and table', {
43
43
  noDiff: true,
44
44
  })
45
45
 
46
- testMigrations('rename entity with a constraint', {
46
+
47
+ testMigrations('rename entity with one-has-one (constraint)', {
47
48
  originalSchema: new SchemaBuilder()
48
- .entity('Author', e => e.column('slug', c => c.type(Model.ColumnType.String).unique()))
49
+ .entity('Author', e => e.oneHasOne('content', r => r.target('Content')))
50
+ .entity('Content', e => e.column('foo'))
49
51
  .buildSchema(),
50
52
  updatedSchema: new SchemaBuilder()
51
- .entity('User', e => e.tableName('author').column('slug', c => c.type(Model.ColumnType.String).unique()))
53
+ .entity('User', e => e.tableName('author').oneHasOne('content', r => r.target('Content')))
54
+ .entity('Content', e => e.column('foo'))
52
55
  .buildSchema(),
53
56
  diff: [
54
57
  {
@@ -57,8 +60,7 @@ testMigrations('rename entity with a constraint', {
57
60
  newEntityName: 'User',
58
61
  },
59
62
  ],
60
- sql: SQL`ALTER TABLE "author"
61
- RENAME CONSTRAINT "unique_Author_slug_a645b0" TO "unique_User_slug_d61dea";`,
63
+ sql: SQL``,
62
64
  noDiff: true,
63
65
  })
64
66