@strapi/database 5.12.1 → 5.12.3

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 (321) hide show
  1. package/dist/connection.js +43 -0
  2. package/dist/connection.js.map +1 -0
  3. package/dist/connection.mjs +41 -0
  4. package/dist/connection.mjs.map +1 -0
  5. package/dist/dialects/dialect.js +54 -0
  6. package/dist/dialects/dialect.js.map +1 -0
  7. package/dist/dialects/dialect.mjs +52 -0
  8. package/dist/dialects/dialect.mjs.map +1 -0
  9. package/dist/dialects/index.js +44 -0
  10. package/dist/dialects/index.js.map +1 -0
  11. package/dist/dialects/index.mjs +42 -0
  12. package/dist/dialects/index.mjs.map +1 -0
  13. package/dist/dialects/mysql/constants.js +8 -0
  14. package/dist/dialects/mysql/constants.js.map +1 -0
  15. package/dist/dialects/mysql/constants.mjs +5 -0
  16. package/dist/dialects/mysql/constants.mjs.map +1 -0
  17. package/dist/dialects/mysql/database-inspector.js +35 -0
  18. package/dist/dialects/mysql/database-inspector.js.map +1 -0
  19. package/dist/dialects/mysql/database-inspector.mjs +33 -0
  20. package/dist/dialects/mysql/database-inspector.mjs.map +1 -0
  21. package/dist/dialects/mysql/index.js +75 -0
  22. package/dist/dialects/mysql/index.js.map +1 -0
  23. package/dist/dialects/mysql/index.mjs +73 -0
  24. package/dist/dialects/mysql/index.mjs.map +1 -0
  25. package/dist/dialects/mysql/schema-inspector.js +297 -0
  26. package/dist/dialects/mysql/schema-inspector.js.map +1 -0
  27. package/dist/dialects/mysql/schema-inspector.mjs +295 -0
  28. package/dist/dialects/mysql/schema-inspector.mjs.map +1 -0
  29. package/dist/dialects/postgresql/index.js +62 -0
  30. package/dist/dialects/postgresql/index.js.map +1 -0
  31. package/dist/dialects/postgresql/index.mjs +60 -0
  32. package/dist/dialects/postgresql/index.mjs.map +1 -0
  33. package/dist/dialects/postgresql/schema-inspector.js +316 -0
  34. package/dist/dialects/postgresql/schema-inspector.js.map +1 -0
  35. package/dist/dialects/postgresql/schema-inspector.mjs +314 -0
  36. package/dist/dialects/postgresql/schema-inspector.mjs.map +1 -0
  37. package/dist/dialects/sqlite/index.js +82 -0
  38. package/dist/dialects/sqlite/index.js.map +1 -0
  39. package/dist/dialects/sqlite/index.mjs +80 -0
  40. package/dist/dialects/sqlite/index.mjs.map +1 -0
  41. package/dist/dialects/sqlite/schema-inspector.js +211 -0
  42. package/dist/dialects/sqlite/schema-inspector.js.map +1 -0
  43. package/dist/dialects/sqlite/schema-inspector.mjs +209 -0
  44. package/dist/dialects/sqlite/schema-inspector.mjs.map +1 -0
  45. package/dist/entity-manager/entity-repository.js +139 -0
  46. package/dist/entity-manager/entity-repository.js.map +1 -0
  47. package/dist/entity-manager/entity-repository.mjs +137 -0
  48. package/dist/entity-manager/entity-repository.mjs.map +1 -0
  49. package/dist/entity-manager/index.js +1186 -0
  50. package/dist/entity-manager/index.js.map +1 -0
  51. package/dist/entity-manager/index.mjs +1184 -0
  52. package/dist/entity-manager/index.mjs.map +1 -0
  53. package/dist/entity-manager/morph-relations.js +73 -0
  54. package/dist/entity-manager/morph-relations.js.map +1 -0
  55. package/dist/entity-manager/morph-relations.mjs +69 -0
  56. package/dist/entity-manager/morph-relations.mjs.map +1 -0
  57. package/dist/entity-manager/regular-relations.js +247 -0
  58. package/dist/entity-manager/regular-relations.js.map +1 -0
  59. package/dist/entity-manager/regular-relations.mjs +242 -0
  60. package/dist/entity-manager/regular-relations.mjs.map +1 -0
  61. package/dist/entity-manager/relations-orderer.js +221 -0
  62. package/dist/entity-manager/relations-orderer.js.map +1 -0
  63. package/dist/entity-manager/relations-orderer.mjs +218 -0
  64. package/dist/entity-manager/relations-orderer.mjs.map +1 -0
  65. package/dist/errors/database.js +13 -0
  66. package/dist/errors/database.js.map +1 -0
  67. package/dist/errors/database.mjs +11 -0
  68. package/dist/errors/database.mjs.map +1 -0
  69. package/dist/errors/index.js +18 -0
  70. package/dist/errors/index.js.map +1 -0
  71. package/dist/errors/index.mjs +7 -0
  72. package/dist/errors/index.mjs.map +1 -0
  73. package/dist/errors/invalid-date.js +13 -0
  74. package/dist/errors/invalid-date.js.map +1 -0
  75. package/dist/errors/invalid-date.mjs +11 -0
  76. package/dist/errors/invalid-date.mjs.map +1 -0
  77. package/dist/errors/invalid-datetime.js +13 -0
  78. package/dist/errors/invalid-datetime.js.map +1 -0
  79. package/dist/errors/invalid-datetime.mjs +11 -0
  80. package/dist/errors/invalid-datetime.mjs.map +1 -0
  81. package/dist/errors/invalid-relation.js +13 -0
  82. package/dist/errors/invalid-relation.js.map +1 -0
  83. package/dist/errors/invalid-relation.mjs +11 -0
  84. package/dist/errors/invalid-relation.mjs.map +1 -0
  85. package/dist/errors/invalid-time.js +13 -0
  86. package/dist/errors/invalid-time.js.map +1 -0
  87. package/dist/errors/invalid-time.mjs +11 -0
  88. package/dist/errors/invalid-time.mjs.map +1 -0
  89. package/dist/errors/not-null.js +17 -0
  90. package/dist/errors/not-null.js.map +1 -0
  91. package/dist/errors/not-null.mjs +15 -0
  92. package/dist/errors/not-null.mjs.map +1 -0
  93. package/dist/fields/biginteger.js +9 -0
  94. package/dist/fields/biginteger.js.map +1 -0
  95. package/dist/fields/biginteger.mjs +7 -0
  96. package/dist/fields/biginteger.mjs.map +1 -0
  97. package/dist/fields/boolean.js +48 -0
  98. package/dist/fields/boolean.js.map +1 -0
  99. package/dist/fields/boolean.mjs +46 -0
  100. package/dist/fields/boolean.mjs.map +1 -0
  101. package/dist/fields/date.js +16 -0
  102. package/dist/fields/date.js.map +1 -0
  103. package/dist/fields/date.mjs +14 -0
  104. package/dist/fields/date.mjs.map +1 -0
  105. package/dist/fields/datetime.js +37 -0
  106. package/dist/fields/datetime.js.map +1 -0
  107. package/dist/fields/datetime.mjs +16 -0
  108. package/dist/fields/datetime.mjs.map +1 -0
  109. package/dist/fields/field.js +16 -0
  110. package/dist/fields/field.js.map +1 -0
  111. package/dist/fields/field.mjs +14 -0
  112. package/dist/fields/field.mjs.map +1 -0
  113. package/dist/fields/index.js +45 -0
  114. package/dist/fields/index.js.map +1 -0
  115. package/dist/fields/index.mjs +43 -0
  116. package/dist/fields/index.mjs.map +1 -0
  117. package/dist/fields/json.js +36 -0
  118. package/dist/fields/json.js.map +1 -0
  119. package/dist/fields/json.mjs +34 -0
  120. package/dist/fields/json.mjs.map +1 -0
  121. package/dist/fields/number.js +20 -0
  122. package/dist/fields/number.js.map +1 -0
  123. package/dist/fields/number.mjs +18 -0
  124. package/dist/fields/number.mjs.map +1 -0
  125. package/dist/fields/shared/parsers.js +91 -0
  126. package/dist/fields/shared/parsers.js.map +1 -0
  127. package/dist/fields/shared/parsers.mjs +68 -0
  128. package/dist/fields/shared/parsers.mjs.map +1 -0
  129. package/dist/fields/string.js +16 -0
  130. package/dist/fields/string.js.map +1 -0
  131. package/dist/fields/string.mjs +14 -0
  132. package/dist/fields/string.mjs.map +1 -0
  133. package/dist/fields/time.js +17 -0
  134. package/dist/fields/time.js.map +1 -0
  135. package/dist/fields/time.mjs +15 -0
  136. package/dist/fields/time.mjs.map +1 -0
  137. package/dist/fields/timestamp.js +37 -0
  138. package/dist/fields/timestamp.js.map +1 -0
  139. package/dist/fields/timestamp.mjs +16 -0
  140. package/dist/fields/timestamp.mjs.map +1 -0
  141. package/dist/index.js +33 -8569
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.mjs +16 -8532
  144. package/dist/index.mjs.map +1 -1
  145. package/dist/lifecycles/index.js +73 -0
  146. package/dist/lifecycles/index.js.map +1 -0
  147. package/dist/lifecycles/index.mjs +71 -0
  148. package/dist/lifecycles/index.mjs.map +1 -0
  149. package/dist/lifecycles/subscribers/index.js +10 -0
  150. package/dist/lifecycles/subscribers/index.js.map +1 -0
  151. package/dist/lifecycles/subscribers/index.mjs +8 -0
  152. package/dist/lifecycles/subscribers/index.mjs.map +1 -0
  153. package/dist/lifecycles/subscribers/models-lifecycles.js +13 -0
  154. package/dist/lifecycles/subscribers/models-lifecycles.js.map +1 -0
  155. package/dist/lifecycles/subscribers/models-lifecycles.mjs +11 -0
  156. package/dist/lifecycles/subscribers/models-lifecycles.mjs.map +1 -0
  157. package/dist/lifecycles/subscribers/timestamps.js +55 -0
  158. package/dist/lifecycles/subscribers/timestamps.js.map +1 -0
  159. package/dist/lifecycles/subscribers/timestamps.mjs +53 -0
  160. package/dist/lifecycles/subscribers/timestamps.mjs.map +1 -0
  161. package/dist/metadata/index.js +24 -0
  162. package/dist/metadata/index.js.map +1 -0
  163. package/dist/metadata/index.mjs +16 -0
  164. package/dist/metadata/index.mjs.map +1 -0
  165. package/dist/metadata/metadata.js +100 -0
  166. package/dist/metadata/metadata.js.map +1 -0
  167. package/dist/metadata/metadata.mjs +98 -0
  168. package/dist/metadata/metadata.mjs.map +1 -0
  169. package/dist/metadata/relations.js +545 -0
  170. package/dist/metadata/relations.js.map +1 -0
  171. package/dist/metadata/relations.mjs +536 -0
  172. package/dist/metadata/relations.mjs.map +1 -0
  173. package/dist/migrations/common.js +8 -0
  174. package/dist/migrations/common.js.map +1 -0
  175. package/dist/migrations/common.mjs +6 -0
  176. package/dist/migrations/common.mjs.map +1 -0
  177. package/dist/migrations/index.js +39 -0
  178. package/dist/migrations/index.js.map +1 -0
  179. package/dist/migrations/index.mjs +37 -0
  180. package/dist/migrations/index.mjs.map +1 -0
  181. package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.js +179 -0
  182. package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.js.map +1 -0
  183. package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.mjs +177 -0
  184. package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.mjs.map +1 -0
  185. package/dist/migrations/internal-migrations/5.0.0-02-document-id.js +125 -0
  186. package/dist/migrations/internal-migrations/5.0.0-02-document-id.js.map +1 -0
  187. package/dist/migrations/internal-migrations/5.0.0-02-document-id.mjs +123 -0
  188. package/dist/migrations/internal-migrations/5.0.0-02-document-id.mjs.map +1 -0
  189. package/dist/migrations/internal-migrations/5.0.0-03-locale.js +41 -0
  190. package/dist/migrations/internal-migrations/5.0.0-03-locale.js.map +1 -0
  191. package/dist/migrations/internal-migrations/5.0.0-03-locale.mjs +39 -0
  192. package/dist/migrations/internal-migrations/5.0.0-03-locale.mjs.map +1 -0
  193. package/dist/migrations/internal-migrations/5.0.0-04-published-at.js +45 -0
  194. package/dist/migrations/internal-migrations/5.0.0-04-published-at.js.map +1 -0
  195. package/dist/migrations/internal-migrations/5.0.0-04-published-at.mjs +43 -0
  196. package/dist/migrations/internal-migrations/5.0.0-04-published-at.mjs.map +1 -0
  197. package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.js +43 -0
  198. package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.js.map +1 -0
  199. package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.mjs +41 -0
  200. package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.mjs.map +1 -0
  201. package/dist/migrations/internal-migrations/index.js +26 -0
  202. package/dist/migrations/internal-migrations/index.js.map +1 -0
  203. package/dist/migrations/internal-migrations/index.mjs +24 -0
  204. package/dist/migrations/internal-migrations/index.mjs.map +1 -0
  205. package/dist/migrations/internal.js +63 -0
  206. package/dist/migrations/internal.js.map +1 -0
  207. package/dist/migrations/internal.mjs +61 -0
  208. package/dist/migrations/internal.mjs.map +1 -0
  209. package/dist/migrations/logger.js +24 -0
  210. package/dist/migrations/logger.js.map +1 -0
  211. package/dist/migrations/logger.mjs +22 -0
  212. package/dist/migrations/logger.mjs.map +1 -0
  213. package/dist/migrations/storage.js +39 -0
  214. package/dist/migrations/storage.js.map +1 -0
  215. package/dist/migrations/storage.mjs +37 -0
  216. package/dist/migrations/storage.mjs.map +1 -0
  217. package/dist/migrations/users.js +87 -0
  218. package/dist/migrations/users.js.map +1 -0
  219. package/dist/migrations/users.mjs +85 -0
  220. package/dist/migrations/users.mjs.map +1 -0
  221. package/dist/query/helpers/join.js +127 -0
  222. package/dist/query/helpers/join.js.map +1 -0
  223. package/dist/query/helpers/join.mjs +122 -0
  224. package/dist/query/helpers/join.mjs.map +1 -0
  225. package/dist/query/helpers/order-by.js +167 -0
  226. package/dist/query/helpers/order-by.js.map +1 -0
  227. package/dist/query/helpers/order-by.mjs +163 -0
  228. package/dist/query/helpers/order-by.mjs.map +1 -0
  229. package/dist/query/helpers/populate/apply.js +592 -0
  230. package/dist/query/helpers/populate/apply.js.map +1 -0
  231. package/dist/query/helpers/populate/apply.mjs +590 -0
  232. package/dist/query/helpers/populate/apply.mjs.map +1 -0
  233. package/dist/query/helpers/populate/process.js +92 -0
  234. package/dist/query/helpers/populate/process.js.map +1 -0
  235. package/dist/query/helpers/populate/process.mjs +90 -0
  236. package/dist/query/helpers/populate/process.mjs.map +1 -0
  237. package/dist/query/helpers/search.js +67 -0
  238. package/dist/query/helpers/search.js.map +1 -0
  239. package/dist/query/helpers/search.mjs +65 -0
  240. package/dist/query/helpers/search.mjs.map +1 -0
  241. package/dist/query/helpers/streams/readable.js +131 -0
  242. package/dist/query/helpers/streams/readable.js.map +1 -0
  243. package/dist/query/helpers/streams/readable.mjs +129 -0
  244. package/dist/query/helpers/streams/readable.mjs.map +1 -0
  245. package/dist/query/helpers/transform.js +77 -0
  246. package/dist/query/helpers/transform.js.map +1 -0
  247. package/dist/query/helpers/transform.mjs +73 -0
  248. package/dist/query/helpers/transform.mjs.map +1 -0
  249. package/dist/query/helpers/where.js +372 -0
  250. package/dist/query/helpers/where.js.map +1 -0
  251. package/dist/query/helpers/where.mjs +369 -0
  252. package/dist/query/helpers/where.mjs.map +1 -0
  253. package/dist/query/query-builder.js +507 -0
  254. package/dist/query/query-builder.js.map +1 -0
  255. package/dist/query/query-builder.mjs +505 -0
  256. package/dist/query/query-builder.mjs.map +1 -0
  257. package/dist/repairs/index.js +13 -0
  258. package/dist/repairs/index.js.map +1 -0
  259. package/dist/repairs/index.mjs +11 -0
  260. package/dist/repairs/index.mjs.map +1 -0
  261. package/dist/repairs/operations/remove-orphan-morph-types.js +54 -0
  262. package/dist/repairs/operations/remove-orphan-morph-types.js.map +1 -0
  263. package/dist/repairs/operations/remove-orphan-morph-types.mjs +52 -0
  264. package/dist/repairs/operations/remove-orphan-morph-types.mjs.map +1 -0
  265. package/dist/schema/builder.js +354 -0
  266. package/dist/schema/builder.js.map +1 -0
  267. package/dist/schema/builder.mjs +352 -0
  268. package/dist/schema/builder.mjs.map +1 -0
  269. package/dist/schema/diff.js +379 -0
  270. package/dist/schema/diff.js.map +1 -0
  271. package/dist/schema/diff.mjs +377 -0
  272. package/dist/schema/diff.mjs.map +1 -0
  273. package/dist/schema/index.js +93 -0
  274. package/dist/schema/index.js.map +1 -0
  275. package/dist/schema/index.mjs +91 -0
  276. package/dist/schema/index.mjs.map +1 -0
  277. package/dist/schema/schema.js +266 -0
  278. package/dist/schema/schema.js.map +1 -0
  279. package/dist/schema/schema.mjs +264 -0
  280. package/dist/schema/schema.mjs.map +1 -0
  281. package/dist/schema/storage.js +58 -0
  282. package/dist/schema/storage.js.map +1 -0
  283. package/dist/schema/storage.mjs +56 -0
  284. package/dist/schema/storage.mjs.map +1 -0
  285. package/dist/transaction-context.js +65 -0
  286. package/dist/transaction-context.js.map +1 -0
  287. package/dist/transaction-context.mjs +63 -0
  288. package/dist/transaction-context.mjs.map +1 -0
  289. package/dist/utils/async-curry.js +19 -0
  290. package/dist/utils/async-curry.js.map +1 -0
  291. package/dist/utils/async-curry.mjs +17 -0
  292. package/dist/utils/async-curry.mjs.map +1 -0
  293. package/dist/utils/identifiers/hash.js +30 -0
  294. package/dist/utils/identifiers/hash.js.map +1 -0
  295. package/dist/utils/identifiers/hash.mjs +28 -0
  296. package/dist/utils/identifiers/hash.mjs.map +1 -0
  297. package/dist/utils/identifiers/index.js +414 -0
  298. package/dist/utils/identifiers/index.js.map +1 -0
  299. package/dist/utils/identifiers/index.mjs +411 -0
  300. package/dist/utils/identifiers/index.mjs.map +1 -0
  301. package/dist/utils/knex.js +21 -0
  302. package/dist/utils/knex.js.map +1 -0
  303. package/dist/utils/knex.mjs +18 -0
  304. package/dist/utils/knex.mjs.map +1 -0
  305. package/dist/utils/types.js +51 -0
  306. package/dist/utils/types.js.map +1 -0
  307. package/dist/utils/types.mjs +44 -0
  308. package/dist/utils/types.mjs.map +1 -0
  309. package/dist/validations/index.js +12 -0
  310. package/dist/validations/index.js.map +1 -0
  311. package/dist/validations/index.mjs +10 -0
  312. package/dist/validations/index.mjs.map +1 -0
  313. package/dist/validations/relations/bidirectional.js +64 -0
  314. package/dist/validations/relations/bidirectional.js.map +1 -0
  315. package/dist/validations/relations/bidirectional.mjs +62 -0
  316. package/dist/validations/relations/bidirectional.mjs.map +1 -0
  317. package/dist/validations/relations/index.js +13 -0
  318. package/dist/validations/relations/index.js.map +1 -0
  319. package/dist/validations/relations/index.mjs +11 -0
  320. package/dist/validations/relations/index.mjs.map +1 -0
  321. package/package.json +4 -4
@@ -0,0 +1,123 @@
1
+ import { createId } from '@paralleldrive/cuid2';
2
+ import { snakeCase } from 'lodash/fp';
3
+
4
+ const QUERIES = {
5
+ async postgres (knex, params) {
6
+ const res = await knex.raw(`
7
+ SELECT :tableName:.id as id, string_agg(DISTINCT :inverseJoinColumn:::character varying, ',') as other_ids
8
+ FROM :tableName:
9
+ LEFT JOIN :joinTableName: ON :tableName:.id = :joinTableName:.:joinColumn:
10
+ WHERE :tableName:.document_id IS NULL
11
+ GROUP BY :tableName:.id, :joinTableName:.:joinColumn:
12
+ LIMIT 1;
13
+ `, params);
14
+ return res.rows;
15
+ },
16
+ async mysql (knex, params) {
17
+ const [res] = await knex.raw(`
18
+ SELECT :tableName:.id as id, group_concat(DISTINCT :inverseJoinColumn:) as other_ids
19
+ FROM :tableName:
20
+ LEFT JOIN :joinTableName: ON :tableName:.id = :joinTableName:.:joinColumn:
21
+ WHERE :tableName:.document_id IS NULL
22
+ GROUP BY :tableName:.id, :joinTableName:.:joinColumn:
23
+ LIMIT 1;
24
+ `, params);
25
+ return res;
26
+ },
27
+ async sqlite (knex, params) {
28
+ return knex.raw(`
29
+ SELECT :tableName:.id as id, group_concat(DISTINCT :inverseJoinColumn:) as other_ids
30
+ FROM :tableName:
31
+ LEFT JOIN :joinTableName: ON :tableName:.id = :joinTableName:.:joinColumn:
32
+ WHERE :tableName:.document_id IS NULL
33
+ GROUP BY :joinTableName:.:joinColumn:
34
+ LIMIT 1;
35
+ `, params);
36
+ }
37
+ };
38
+ const getNextIdsToCreateDocumentId = async (db, knex, { joinColumn, inverseJoinColumn, tableName, joinTableName })=>{
39
+ const res = await QUERIES[db.dialect.client](knex, {
40
+ joinColumn,
41
+ inverseJoinColumn,
42
+ tableName,
43
+ joinTableName
44
+ });
45
+ if (res.length > 0) {
46
+ const row = res[0];
47
+ const otherIds = row.other_ids ? row.other_ids.split(',').map((v)=>parseInt(v, 10)) : [];
48
+ return [
49
+ row.id,
50
+ ...otherIds
51
+ ];
52
+ }
53
+ return [];
54
+ };
55
+ // Migrate document ids for tables that have localizations
56
+ const migrateDocumentIdsWithLocalizations = async (db, knex, meta)=>{
57
+ const singularName = meta.singularName.toLowerCase();
58
+ const joinColumn = snakeCase(`${singularName}_id`);
59
+ const inverseJoinColumn = snakeCase(`inv_${singularName}_id`);
60
+ let ids;
61
+ do {
62
+ ids = await getNextIdsToCreateDocumentId(db, knex, {
63
+ joinColumn,
64
+ inverseJoinColumn,
65
+ tableName: meta.tableName,
66
+ joinTableName: snakeCase(`${meta.tableName}_localizations_links`)
67
+ });
68
+ if (ids.length > 0) {
69
+ await knex(meta.tableName).update({
70
+ document_id: createId()
71
+ }).whereIn('id', ids);
72
+ }
73
+ }while (ids.length > 0)
74
+ };
75
+ // Migrate document ids for tables that don't have localizations
76
+ const migrationDocumentIds = async (db, knex, meta)=>{
77
+ let updatedRows;
78
+ do {
79
+ updatedRows = await knex(meta.tableName).update({
80
+ document_id: createId()
81
+ }).whereIn('id', knex(meta.tableName).select('id').from(knex(meta.tableName).select('id').whereNull('document_id').limit(1).as('sub_query')));
82
+ }while (updatedRows > 0)
83
+ };
84
+ const createDocumentIdColumn = async (knex, tableName)=>{
85
+ await knex.schema.alterTable(tableName, (table)=>{
86
+ table.string('document_id');
87
+ });
88
+ };
89
+ const hasLocalizationsJoinTable = async (knex, tableName)=>{
90
+ const joinTableName = snakeCase(`${tableName}_localizations_links`);
91
+ return knex.schema.hasTable(joinTableName);
92
+ };
93
+ const createdDocumentId = {
94
+ name: '5.0.0-02-created-document-id',
95
+ async up (knex, db) {
96
+ // do sth
97
+ for (const meta of db.metadata.values()){
98
+ const hasTable = await knex.schema.hasTable(meta.tableName);
99
+ if (!hasTable) {
100
+ continue;
101
+ }
102
+ if ('documentId' in meta.attributes) {
103
+ // add column if doesn't exist
104
+ const hasDocumentIdColumn = await knex.schema.hasColumn(meta.tableName, 'document_id');
105
+ if (hasDocumentIdColumn) {
106
+ continue;
107
+ }
108
+ await createDocumentIdColumn(knex, meta.tableName);
109
+ if (await hasLocalizationsJoinTable(knex, meta.tableName)) {
110
+ await migrateDocumentIdsWithLocalizations(db, knex, meta);
111
+ } else {
112
+ await migrationDocumentIds(db, knex, meta);
113
+ }
114
+ }
115
+ }
116
+ },
117
+ async down () {
118
+ throw new Error('not implemented');
119
+ }
120
+ };
121
+
122
+ export { createdDocumentId };
123
+ //# sourceMappingURL=5.0.0-02-document-id.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-02-document-id.mjs","sources":["../../../src/migrations/internal-migrations/5.0.0-02-document-id.ts"],"sourcesContent":["/**\n * NOTE: This migration avoids using the `identifiers` utility.\n * As the `5.0.0-01-convert-identifiers-long-than-max-length`\n * migration does not convert the `localizations` join tables, as they are not\n * tables that exist anymore in v5 and are not in the db metadata.\n *\n * This migration therefore relies on the fact that those tables still exist, and\n * references them directly.\n *\n * Database join table name: `categories_localizations_links`\n * Actual `identifiers` returned join table name: `categories_localizations_lnk`\n *\n */\nimport { createId } from '@paralleldrive/cuid2';\nimport { snakeCase } from 'lodash/fp';\nimport type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\nimport type { Database } from '../..';\nimport type { Meta } from '../../metadata';\n\ninterface Params {\n joinColumn: string;\n inverseJoinColumn: string;\n tableName: string;\n joinTableName: string;\n}\n\nconst QUERIES = {\n async postgres(knex: Knex, params: Params) {\n const res = await knex.raw(\n `\n SELECT :tableName:.id as id, string_agg(DISTINCT :inverseJoinColumn:::character varying, ',') as other_ids\n FROM :tableName:\n LEFT JOIN :joinTableName: ON :tableName:.id = :joinTableName:.:joinColumn:\n WHERE :tableName:.document_id IS NULL\n GROUP BY :tableName:.id, :joinTableName:.:joinColumn:\n LIMIT 1;\n `,\n params\n );\n\n return res.rows;\n },\n async mysql(knex: Knex, params: Params) {\n const [res] = await knex.raw(\n `\n SELECT :tableName:.id as id, group_concat(DISTINCT :inverseJoinColumn:) as other_ids\n FROM :tableName:\n LEFT JOIN :joinTableName: ON :tableName:.id = :joinTableName:.:joinColumn:\n WHERE :tableName:.document_id IS NULL\n GROUP BY :tableName:.id, :joinTableName:.:joinColumn:\n LIMIT 1;\n `,\n params\n );\n\n return res;\n },\n async sqlite(knex: Knex, params: Params) {\n return knex.raw(\n `\n SELECT :tableName:.id as id, group_concat(DISTINCT :inverseJoinColumn:) as other_ids\n FROM :tableName:\n LEFT JOIN :joinTableName: ON :tableName:.id = :joinTableName:.:joinColumn:\n WHERE :tableName:.document_id IS NULL\n GROUP BY :joinTableName:.:joinColumn:\n LIMIT 1;\n `,\n params\n );\n },\n};\n\nconst getNextIdsToCreateDocumentId = async (\n db: Database,\n knex: Knex,\n {\n joinColumn,\n inverseJoinColumn,\n tableName,\n joinTableName,\n }: {\n joinColumn: string;\n inverseJoinColumn: string;\n tableName: string;\n joinTableName: string;\n }\n): Promise<number[]> => {\n const res = await QUERIES[db.dialect.client as keyof typeof QUERIES](knex, {\n joinColumn,\n inverseJoinColumn,\n tableName,\n joinTableName,\n });\n\n if (res.length > 0) {\n const row = res[0];\n const otherIds = row.other_ids\n ? row.other_ids.split(',').map((v: string) => parseInt(v, 10))\n : [];\n\n return [row.id, ...otherIds];\n }\n\n return [];\n};\n\n// Migrate document ids for tables that have localizations\nconst migrateDocumentIdsWithLocalizations = async (db: Database, knex: Knex, meta: Meta) => {\n const singularName = meta.singularName.toLowerCase();\n const joinColumn = snakeCase(`${singularName}_id`);\n const inverseJoinColumn = snakeCase(`inv_${singularName}_id`);\n let ids: number[];\n\n do {\n ids = await getNextIdsToCreateDocumentId(db, knex, {\n joinColumn,\n inverseJoinColumn,\n tableName: meta.tableName,\n joinTableName: snakeCase(`${meta.tableName}_localizations_links`),\n });\n\n if (ids.length > 0) {\n await knex(meta.tableName).update({ document_id: createId() }).whereIn('id', ids);\n }\n } while (ids.length > 0);\n};\n\n// Migrate document ids for tables that don't have localizations\nconst migrationDocumentIds = async (db: Database, knex: Knex, meta: Meta) => {\n let updatedRows: number;\n\n do {\n updatedRows = await knex(meta.tableName)\n .update({ document_id: createId() })\n .whereIn(\n 'id',\n knex(meta.tableName)\n .select('id')\n .from(knex(meta.tableName).select('id').whereNull('document_id').limit(1).as('sub_query'))\n );\n } while (updatedRows > 0);\n};\n\nconst createDocumentIdColumn = async (knex: Knex, tableName: string) => {\n await knex.schema.alterTable(tableName, (table) => {\n table.string('document_id');\n });\n};\n\nconst hasLocalizationsJoinTable = async (knex: Knex, tableName: string) => {\n const joinTableName = snakeCase(`${tableName}_localizations_links`);\n return knex.schema.hasTable(joinTableName);\n};\n\nexport const createdDocumentId: Migration = {\n name: '5.0.0-02-created-document-id',\n async up(knex, db) {\n // do sth\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n continue;\n }\n\n if ('documentId' in meta.attributes) {\n // add column if doesn't exist\n const hasDocumentIdColumn = await knex.schema.hasColumn(meta.tableName, 'document_id');\n\n if (hasDocumentIdColumn) {\n continue;\n }\n\n await createDocumentIdColumn(knex, meta.tableName);\n\n if (await hasLocalizationsJoinTable(knex, meta.tableName)) {\n await migrateDocumentIdsWithLocalizations(db, knex, meta);\n } else {\n await migrationDocumentIds(db, knex, meta);\n }\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["QUERIES","postgres","knex","params","res","raw","rows","mysql","sqlite","getNextIdsToCreateDocumentId","db","joinColumn","inverseJoinColumn","tableName","joinTableName","dialect","client","length","row","otherIds","other_ids","split","map","v","parseInt","id","migrateDocumentIdsWithLocalizations","meta","singularName","toLowerCase","snakeCase","ids","update","document_id","createId","whereIn","migrationDocumentIds","updatedRows","select","from","whereNull","limit","as","createDocumentIdColumn","schema","alterTable","table","string","hasLocalizationsJoinTable","hasTable","createdDocumentId","name","up","metadata","values","attributes","hasDocumentIdColumn","hasColumn","down","Error"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * In v4, content types with disabled i18n did not have any locale column.
5
+ * In v5, we need to add a `locale` column to all content types.
6
+ * Other downstream migrations will make use of this column.
7
+ *
8
+ * This function creates the `locale` column if it doesn't exist.
9
+ */ const createLocaleColumn = async (db, tableName)=>{
10
+ await db.schema.alterTable(tableName, (table)=>{
11
+ table.string('locale');
12
+ });
13
+ };
14
+ const createdLocale = {
15
+ name: '5.0.0-03-created-locale',
16
+ async up (knex, db) {
17
+ for (const meta of db.metadata.values()){
18
+ const hasTable = await knex.schema.hasTable(meta.tableName);
19
+ if (!hasTable) {
20
+ continue;
21
+ }
22
+ // Ignore non-content types
23
+ const uid = meta.uid;
24
+ const model = strapi.getModel(uid);
25
+ if (!model) {
26
+ continue;
27
+ }
28
+ // Create locale column if it doesn't exist
29
+ const hasLocaleColumn = await knex.schema.hasColumn(meta.tableName, 'locale');
30
+ if (meta.attributes.locale && !hasLocaleColumn) {
31
+ await createLocaleColumn(knex, meta.tableName);
32
+ }
33
+ }
34
+ },
35
+ async down () {
36
+ throw new Error('not implemented');
37
+ }
38
+ };
39
+
40
+ exports.createdLocale = createdLocale;
41
+ //# sourceMappingURL=5.0.0-03-locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-03-locale.js","sources":["../../../src/migrations/internal-migrations/5.0.0-03-locale.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\n\n/**\n * In v4, content types with disabled i18n did not have any locale column.\n * In v5, we need to add a `locale` column to all content types.\n * Other downstream migrations will make use of this column.\n *\n * This function creates the `locale` column if it doesn't exist.\n */\nconst createLocaleColumn = async (db: Knex, tableName: string) => {\n await db.schema.alterTable(tableName, (table) => {\n table.string('locale');\n });\n};\n\nexport const createdLocale: Migration = {\n name: '5.0.0-03-created-locale',\n async up(knex, db) {\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n continue;\n }\n\n // Ignore non-content types\n const uid = meta.uid;\n const model = strapi.getModel(uid);\n if (!model) {\n continue;\n }\n\n // Create locale column if it doesn't exist\n const hasLocaleColumn = await knex.schema.hasColumn(meta.tableName, 'locale');\n\n if (meta.attributes.locale && !hasLocaleColumn) {\n await createLocaleColumn(knex, meta.tableName);\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["createLocaleColumn","db","tableName","schema","alterTable","table","string","createdLocale","name","up","knex","meta","metadata","values","hasTable","uid","model","strapi","getModel","hasLocaleColumn","hasColumn","attributes","locale","down","Error"],"mappings":";;AAIA;;;;;;IAOA,MAAMA,kBAAqB,GAAA,OAAOC,EAAUC,EAAAA,SAAAA,GAAAA;AAC1C,IAAA,MAAMD,GAAGE,MAAM,CAACC,UAAU,CAACF,WAAW,CAACG,KAAAA,GAAAA;AACrCA,QAAAA,KAAAA,CAAMC,MAAM,CAAC,QAAA,CAAA;AACf,KAAA,CAAA;AACF,CAAA;MAEaC,aAA2B,GAAA;IACtCC,IAAM,EAAA,yBAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,IAAI,EAAET,EAAE,EAAA;AACf,QAAA,KAAK,MAAMU,IAAQV,IAAAA,EAAAA,CAAGW,QAAQ,CAACC,MAAM,EAAI,CAAA;YACvC,MAAMC,QAAAA,GAAW,MAAMJ,IAAKP,CAAAA,MAAM,CAACW,QAAQ,CAACH,KAAKT,SAAS,CAAA;AAE1D,YAAA,IAAI,CAACY,QAAU,EAAA;AACb,gBAAA;AACF;;YAGA,MAAMC,GAAAA,GAAMJ,KAAKI,GAAG;YACpB,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;AAC9B,YAAA,IAAI,CAACC,KAAO,EAAA;AACV,gBAAA;AACF;;YAGA,MAAMG,eAAAA,GAAkB,MAAMT,IAAKP,CAAAA,MAAM,CAACiB,SAAS,CAACT,IAAKT,CAAAA,SAAS,EAAE,QAAA,CAAA;AAEpE,YAAA,IAAIS,KAAKU,UAAU,CAACC,MAAM,IAAI,CAACH,eAAiB,EAAA;gBAC9C,MAAMnB,kBAAAA,CAAmBU,IAAMC,EAAAA,IAAAA,CAAKT,SAAS,CAAA;AAC/C;AACF;AACF,KAAA;IACA,MAAMqB,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * In v4, content types with disabled i18n did not have any locale column.
3
+ * In v5, we need to add a `locale` column to all content types.
4
+ * Other downstream migrations will make use of this column.
5
+ *
6
+ * This function creates the `locale` column if it doesn't exist.
7
+ */ const createLocaleColumn = async (db, tableName)=>{
8
+ await db.schema.alterTable(tableName, (table)=>{
9
+ table.string('locale');
10
+ });
11
+ };
12
+ const createdLocale = {
13
+ name: '5.0.0-03-created-locale',
14
+ async up (knex, db) {
15
+ for (const meta of db.metadata.values()){
16
+ const hasTable = await knex.schema.hasTable(meta.tableName);
17
+ if (!hasTable) {
18
+ continue;
19
+ }
20
+ // Ignore non-content types
21
+ const uid = meta.uid;
22
+ const model = strapi.getModel(uid);
23
+ if (!model) {
24
+ continue;
25
+ }
26
+ // Create locale column if it doesn't exist
27
+ const hasLocaleColumn = await knex.schema.hasColumn(meta.tableName, 'locale');
28
+ if (meta.attributes.locale && !hasLocaleColumn) {
29
+ await createLocaleColumn(knex, meta.tableName);
30
+ }
31
+ }
32
+ },
33
+ async down () {
34
+ throw new Error('not implemented');
35
+ }
36
+ };
37
+
38
+ export { createdLocale };
39
+ //# sourceMappingURL=5.0.0-03-locale.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-03-locale.mjs","sources":["../../../src/migrations/internal-migrations/5.0.0-03-locale.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\n\n/**\n * In v4, content types with disabled i18n did not have any locale column.\n * In v5, we need to add a `locale` column to all content types.\n * Other downstream migrations will make use of this column.\n *\n * This function creates the `locale` column if it doesn't exist.\n */\nconst createLocaleColumn = async (db: Knex, tableName: string) => {\n await db.schema.alterTable(tableName, (table) => {\n table.string('locale');\n });\n};\n\nexport const createdLocale: Migration = {\n name: '5.0.0-03-created-locale',\n async up(knex, db) {\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n continue;\n }\n\n // Ignore non-content types\n const uid = meta.uid;\n const model = strapi.getModel(uid);\n if (!model) {\n continue;\n }\n\n // Create locale column if it doesn't exist\n const hasLocaleColumn = await knex.schema.hasColumn(meta.tableName, 'locale');\n\n if (meta.attributes.locale && !hasLocaleColumn) {\n await createLocaleColumn(knex, meta.tableName);\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["createLocaleColumn","db","tableName","schema","alterTable","table","string","createdLocale","name","up","knex","meta","metadata","values","hasTable","uid","model","strapi","getModel","hasLocaleColumn","hasColumn","attributes","locale","down","Error"],"mappings":"AAIA;;;;;;IAOA,MAAMA,kBAAqB,GAAA,OAAOC,EAAUC,EAAAA,SAAAA,GAAAA;AAC1C,IAAA,MAAMD,GAAGE,MAAM,CAACC,UAAU,CAACF,WAAW,CAACG,KAAAA,GAAAA;AACrCA,QAAAA,KAAAA,CAAMC,MAAM,CAAC,QAAA,CAAA;AACf,KAAA,CAAA;AACF,CAAA;MAEaC,aAA2B,GAAA;IACtCC,IAAM,EAAA,yBAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,IAAI,EAAET,EAAE,EAAA;AACf,QAAA,KAAK,MAAMU,IAAQV,IAAAA,EAAAA,CAAGW,QAAQ,CAACC,MAAM,EAAI,CAAA;YACvC,MAAMC,QAAAA,GAAW,MAAMJ,IAAKP,CAAAA,MAAM,CAACW,QAAQ,CAACH,KAAKT,SAAS,CAAA;AAE1D,YAAA,IAAI,CAACY,QAAU,EAAA;AACb,gBAAA;AACF;;YAGA,MAAMC,GAAAA,GAAMJ,KAAKI,GAAG;YACpB,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;AAC9B,YAAA,IAAI,CAACC,KAAO,EAAA;AACV,gBAAA;AACF;;YAGA,MAAMG,eAAAA,GAAkB,MAAMT,IAAKP,CAAAA,MAAM,CAACiB,SAAS,CAACT,IAAKT,CAAAA,SAAS,EAAE,QAAA,CAAA;AAEpE,YAAA,IAAIS,KAAKU,UAAU,CAACC,MAAM,IAAI,CAACH,eAAiB,EAAA;gBAC9C,MAAMnB,kBAAAA,CAAmBU,IAAMC,EAAAA,IAAAA,CAAKT,SAAS,CAAA;AAC/C;AACF;AACF,KAAA;IACA,MAAMqB,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * In v4, content types with disabled D&P did not have any `published_at` column.
5
+ * In v5, we need to add a `published_at` column to all content types.
6
+ * Other downstream migrations will make use of this column.
7
+ *
8
+ * This function creates the `published_at` column if it doesn't exist.
9
+ */ const createPublishedAtColumn = async (db, tableName)=>{
10
+ await db.schema.alterTable(tableName, (table)=>{
11
+ table.string('published_at');
12
+ });
13
+ // Non DP content types should have their `published_at` column set to a date
14
+ await db(tableName).update({
15
+ published_at: new Date()
16
+ });
17
+ };
18
+ const createdPublishedAt = {
19
+ name: '5.0.0-04-created-published-at',
20
+ async up (knex, db) {
21
+ for (const meta of db.metadata.values()){
22
+ const hasTable = await knex.schema.hasTable(meta.tableName);
23
+ if (!hasTable) {
24
+ continue;
25
+ }
26
+ // Ignore non-content types
27
+ const uid = meta.uid;
28
+ const model = strapi.getModel(uid);
29
+ if (!model) {
30
+ continue;
31
+ }
32
+ // Create publishedAt column if it doesn't exist
33
+ const hasPublishedAtColumn = await knex.schema.hasColumn(meta.tableName, 'published_at');
34
+ if (meta.attributes.publishedAt && !hasPublishedAtColumn) {
35
+ await createPublishedAtColumn(knex, meta.tableName);
36
+ }
37
+ }
38
+ },
39
+ async down () {
40
+ throw new Error('not implemented');
41
+ }
42
+ };
43
+
44
+ exports.createdPublishedAt = createdPublishedAt;
45
+ //# sourceMappingURL=5.0.0-04-published-at.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-04-published-at.js","sources":["../../../src/migrations/internal-migrations/5.0.0-04-published-at.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\n\n/**\n * In v4, content types with disabled D&P did not have any `published_at` column.\n * In v5, we need to add a `published_at` column to all content types.\n * Other downstream migrations will make use of this column.\n *\n * This function creates the `published_at` column if it doesn't exist.\n */\nconst createPublishedAtColumn = async (db: Knex, tableName: string) => {\n await db.schema.alterTable(tableName, (table) => {\n table.string('published_at');\n });\n\n // Non DP content types should have their `published_at` column set to a date\n await db(tableName).update({ published_at: new Date() });\n};\n\nexport const createdPublishedAt: Migration = {\n name: '5.0.0-04-created-published-at',\n async up(knex, db) {\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n continue;\n }\n\n // Ignore non-content types\n const uid = meta.uid;\n const model = strapi.getModel(uid);\n if (!model) {\n continue;\n }\n\n // Create publishedAt column if it doesn't exist\n const hasPublishedAtColumn = await knex.schema.hasColumn(meta.tableName, 'published_at');\n\n if (meta.attributes.publishedAt && !hasPublishedAtColumn) {\n await createPublishedAtColumn(knex, meta.tableName);\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["createPublishedAtColumn","db","tableName","schema","alterTable","table","string","update","published_at","Date","createdPublishedAt","name","up","knex","meta","metadata","values","hasTable","uid","model","strapi","getModel","hasPublishedAtColumn","hasColumn","attributes","publishedAt","down","Error"],"mappings":";;AAIA;;;;;;IAOA,MAAMA,uBAA0B,GAAA,OAAOC,EAAUC,EAAAA,SAAAA,GAAAA;AAC/C,IAAA,MAAMD,GAAGE,MAAM,CAACC,UAAU,CAACF,WAAW,CAACG,KAAAA,GAAAA;AACrCA,QAAAA,KAAAA,CAAMC,MAAM,CAAC,cAAA,CAAA;AACf,KAAA,CAAA;;IAGA,MAAML,EAAAA,CAAGC,SAAWK,CAAAA,CAAAA,MAAM,CAAC;AAAEC,QAAAA,YAAAA,EAAc,IAAIC,IAAAA;AAAO,KAAA,CAAA;AACxD,CAAA;MAEaC,kBAAgC,GAAA;IAC3CC,IAAM,EAAA,+BAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,IAAI,EAAEZ,EAAE,EAAA;AACf,QAAA,KAAK,MAAMa,IAAQb,IAAAA,EAAAA,CAAGc,QAAQ,CAACC,MAAM,EAAI,CAAA;YACvC,MAAMC,QAAAA,GAAW,MAAMJ,IAAKV,CAAAA,MAAM,CAACc,QAAQ,CAACH,KAAKZ,SAAS,CAAA;AAE1D,YAAA,IAAI,CAACe,QAAU,EAAA;AACb,gBAAA;AACF;;YAGA,MAAMC,GAAAA,GAAMJ,KAAKI,GAAG;YACpB,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;AAC9B,YAAA,IAAI,CAACC,KAAO,EAAA;AACV,gBAAA;AACF;;YAGA,MAAMG,oBAAAA,GAAuB,MAAMT,IAAKV,CAAAA,MAAM,CAACoB,SAAS,CAACT,IAAKZ,CAAAA,SAAS,EAAE,cAAA,CAAA;AAEzE,YAAA,IAAIY,KAAKU,UAAU,CAACC,WAAW,IAAI,CAACH,oBAAsB,EAAA;gBACxD,MAAMtB,uBAAAA,CAAwBa,IAAMC,EAAAA,IAAAA,CAAKZ,SAAS,CAAA;AACpD;AACF;AACF,KAAA;IACA,MAAMwB,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * In v4, content types with disabled D&P did not have any `published_at` column.
3
+ * In v5, we need to add a `published_at` column to all content types.
4
+ * Other downstream migrations will make use of this column.
5
+ *
6
+ * This function creates the `published_at` column if it doesn't exist.
7
+ */ const createPublishedAtColumn = async (db, tableName)=>{
8
+ await db.schema.alterTable(tableName, (table)=>{
9
+ table.string('published_at');
10
+ });
11
+ // Non DP content types should have their `published_at` column set to a date
12
+ await db(tableName).update({
13
+ published_at: new Date()
14
+ });
15
+ };
16
+ const createdPublishedAt = {
17
+ name: '5.0.0-04-created-published-at',
18
+ async up (knex, db) {
19
+ for (const meta of db.metadata.values()){
20
+ const hasTable = await knex.schema.hasTable(meta.tableName);
21
+ if (!hasTable) {
22
+ continue;
23
+ }
24
+ // Ignore non-content types
25
+ const uid = meta.uid;
26
+ const model = strapi.getModel(uid);
27
+ if (!model) {
28
+ continue;
29
+ }
30
+ // Create publishedAt column if it doesn't exist
31
+ const hasPublishedAtColumn = await knex.schema.hasColumn(meta.tableName, 'published_at');
32
+ if (meta.attributes.publishedAt && !hasPublishedAtColumn) {
33
+ await createPublishedAtColumn(knex, meta.tableName);
34
+ }
35
+ }
36
+ },
37
+ async down () {
38
+ throw new Error('not implemented');
39
+ }
40
+ };
41
+
42
+ export { createdPublishedAt };
43
+ //# sourceMappingURL=5.0.0-04-published-at.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-04-published-at.mjs","sources":["../../../src/migrations/internal-migrations/5.0.0-04-published-at.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\n\n/**\n * In v4, content types with disabled D&P did not have any `published_at` column.\n * In v5, we need to add a `published_at` column to all content types.\n * Other downstream migrations will make use of this column.\n *\n * This function creates the `published_at` column if it doesn't exist.\n */\nconst createPublishedAtColumn = async (db: Knex, tableName: string) => {\n await db.schema.alterTable(tableName, (table) => {\n table.string('published_at');\n });\n\n // Non DP content types should have their `published_at` column set to a date\n await db(tableName).update({ published_at: new Date() });\n};\n\nexport const createdPublishedAt: Migration = {\n name: '5.0.0-04-created-published-at',\n async up(knex, db) {\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n continue;\n }\n\n // Ignore non-content types\n const uid = meta.uid;\n const model = strapi.getModel(uid);\n if (!model) {\n continue;\n }\n\n // Create publishedAt column if it doesn't exist\n const hasPublishedAtColumn = await knex.schema.hasColumn(meta.tableName, 'published_at');\n\n if (meta.attributes.publishedAt && !hasPublishedAtColumn) {\n await createPublishedAtColumn(knex, meta.tableName);\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["createPublishedAtColumn","db","tableName","schema","alterTable","table","string","update","published_at","Date","createdPublishedAt","name","up","knex","meta","metadata","values","hasTable","uid","model","strapi","getModel","hasPublishedAtColumn","hasColumn","attributes","publishedAt","down","Error"],"mappings":"AAIA;;;;;;IAOA,MAAMA,uBAA0B,GAAA,OAAOC,EAAUC,EAAAA,SAAAA,GAAAA;AAC/C,IAAA,MAAMD,GAAGE,MAAM,CAACC,UAAU,CAACF,WAAW,CAACG,KAAAA,GAAAA;AACrCA,QAAAA,KAAAA,CAAMC,MAAM,CAAC,cAAA,CAAA;AACf,KAAA,CAAA;;IAGA,MAAML,EAAAA,CAAGC,SAAWK,CAAAA,CAAAA,MAAM,CAAC;AAAEC,QAAAA,YAAAA,EAAc,IAAIC,IAAAA;AAAO,KAAA,CAAA;AACxD,CAAA;MAEaC,kBAAgC,GAAA;IAC3CC,IAAM,EAAA,+BAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,IAAI,EAAEZ,EAAE,EAAA;AACf,QAAA,KAAK,MAAMa,IAAQb,IAAAA,EAAAA,CAAGc,QAAQ,CAACC,MAAM,EAAI,CAAA;YACvC,MAAMC,QAAAA,GAAW,MAAMJ,IAAKV,CAAAA,MAAM,CAACc,QAAQ,CAACH,KAAKZ,SAAS,CAAA;AAE1D,YAAA,IAAI,CAACe,QAAU,EAAA;AACb,gBAAA;AACF;;YAGA,MAAMC,GAAAA,GAAMJ,KAAKI,GAAG;YACpB,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;AAC9B,YAAA,IAAI,CAACC,KAAO,EAAA;AACV,gBAAA;AACF;;YAGA,MAAMG,oBAAAA,GAAuB,MAAMT,IAAKV,CAAAA,MAAM,CAACoB,SAAS,CAACT,IAAKZ,CAAAA,SAAS,EAAE,cAAA,CAAA;AAEzE,YAAA,IAAIY,KAAKU,UAAU,CAACC,WAAW,IAAI,CAACH,oBAAsB,EAAA;gBACxD,MAAMtB,uBAAAA,CAAwBa,IAAMC,EAAAA,IAAAA,CAAKZ,SAAS,CAAA;AACpD;AACF;AACF,KAAA;IACA,MAAMwB,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * In V4 slug fields contained a unique index.
5
+ * In V5 slug fields should not have a unique index.
6
+ *
7
+ * This migration drops existing unique indexes from slug fields so downstream migrations
8
+ * can work on the data without violating the unique index.
9
+ */ const dropIndex = async (knex, tableName, columnName)=>{
10
+ try {
11
+ await knex.schema.alterTable(tableName, (table)=>{
12
+ // NOTE: Can not use "identifiers" utility, as the 5.0.0-01 migration does not rename this particular index
13
+ // to `tableName_columnName_uq`.
14
+ table.dropUnique([
15
+ columnName
16
+ ], `${tableName}_${columnName}_unique`);
17
+ });
18
+ } catch (error) {
19
+ // If unique index does not exist, do nothing
20
+ }
21
+ };
22
+ const dropSlugFieldsIndex = {
23
+ name: '5.0.0-05-drop-slug-fields-index',
24
+ async up (knex, db) {
25
+ for (const meta of db.metadata.values()){
26
+ const hasTable = await knex.schema.hasTable(meta.tableName);
27
+ if (!hasTable) {
28
+ continue;
29
+ }
30
+ for (const attribute of Object.values(meta.attributes)){
31
+ if (attribute.type === 'uid' && attribute.columnName) {
32
+ await dropIndex(knex, meta.tableName, attribute.columnName);
33
+ }
34
+ }
35
+ }
36
+ },
37
+ async down () {
38
+ throw new Error('not implemented');
39
+ }
40
+ };
41
+
42
+ exports.dropSlugFieldsIndex = dropSlugFieldsIndex;
43
+ //# sourceMappingURL=5.0.0-05-drop-slug-unique-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-05-drop-slug-unique-index.js","sources":["../../../src/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.ts"],"sourcesContent":["/**\n * In V4 slug fields contained a unique index.\n * In V5 slug fields should not have a unique index.\n *\n * This migration drops existing unique indexes from slug fields so downstream migrations\n * can work on the data without violating the unique index.\n */\nimport type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\n\nconst dropIndex = async (knex: Knex, tableName: string, columnName: string) => {\n try {\n await knex.schema.alterTable(tableName, (table) => {\n // NOTE: Can not use \"identifiers\" utility, as the 5.0.0-01 migration does not rename this particular index\n // to `tableName_columnName_uq`.\n table.dropUnique([columnName], `${tableName}_${columnName}_unique`);\n });\n } catch (error) {\n // If unique index does not exist, do nothing\n }\n};\n\nexport const dropSlugFieldsIndex: Migration = {\n name: '5.0.0-05-drop-slug-fields-index',\n async up(knex, db) {\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n if (!hasTable) {\n continue;\n }\n\n for (const attribute of Object.values(meta.attributes)) {\n if (attribute.type === 'uid' && attribute.columnName) {\n await dropIndex(knex, meta.tableName, attribute.columnName);\n }\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["dropIndex","knex","tableName","columnName","schema","alterTable","table","dropUnique","error","dropSlugFieldsIndex","name","up","db","meta","metadata","values","hasTable","attribute","Object","attributes","type","down","Error"],"mappings":";;AAAA;;;;;;AAMC,IAKD,MAAMA,SAAAA,GAAY,OAAOC,IAAAA,EAAYC,SAAmBC,EAAAA,UAAAA,GAAAA;IACtD,IAAI;AACF,QAAA,MAAMF,KAAKG,MAAM,CAACC,UAAU,CAACH,WAAW,CAACI,KAAAA,GAAAA;;;AAGvCA,YAAAA,KAAAA,CAAMC,UAAU,CAAC;AAACJ,gBAAAA;AAAW,aAAA,EAAE,CAAC,EAAED,SAAAA,CAAU,CAAC,EAAEC,UAAAA,CAAW,OAAO,CAAC,CAAA;AACpE,SAAA,CAAA;AACF,KAAA,CAAE,OAAOK,KAAO,EAAA;;AAEhB;AACF,CAAA;MAEaC,mBAAiC,GAAA;IAC5CC,IAAM,EAAA,iCAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGV,IAAI,EAAEW,EAAE,EAAA;AACf,QAAA,KAAK,MAAMC,IAAQD,IAAAA,EAAAA,CAAGE,QAAQ,CAACC,MAAM,EAAI,CAAA;YACvC,MAAMC,QAAAA,GAAW,MAAMf,IAAKG,CAAAA,MAAM,CAACY,QAAQ,CAACH,KAAKX,SAAS,CAAA;AAC1D,YAAA,IAAI,CAACc,QAAU,EAAA;AACb,gBAAA;AACF;AAEA,YAAA,KAAK,MAAMC,SAAaC,IAAAA,MAAAA,CAAOH,MAAM,CAACF,IAAAA,CAAKM,UAAU,CAAG,CAAA;AACtD,gBAAA,IAAIF,UAAUG,IAAI,KAAK,KAASH,IAAAA,SAAAA,CAAUd,UAAU,EAAE;AACpD,oBAAA,MAAMH,UAAUC,IAAMY,EAAAA,IAAAA,CAAKX,SAAS,EAAEe,UAAUd,UAAU,CAAA;AAC5D;AACF;AACF;AACF,KAAA;IACA,MAAMkB,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * In V4 slug fields contained a unique index.
3
+ * In V5 slug fields should not have a unique index.
4
+ *
5
+ * This migration drops existing unique indexes from slug fields so downstream migrations
6
+ * can work on the data without violating the unique index.
7
+ */ const dropIndex = async (knex, tableName, columnName)=>{
8
+ try {
9
+ await knex.schema.alterTable(tableName, (table)=>{
10
+ // NOTE: Can not use "identifiers" utility, as the 5.0.0-01 migration does not rename this particular index
11
+ // to `tableName_columnName_uq`.
12
+ table.dropUnique([
13
+ columnName
14
+ ], `${tableName}_${columnName}_unique`);
15
+ });
16
+ } catch (error) {
17
+ // If unique index does not exist, do nothing
18
+ }
19
+ };
20
+ const dropSlugFieldsIndex = {
21
+ name: '5.0.0-05-drop-slug-fields-index',
22
+ async up (knex, db) {
23
+ for (const meta of db.metadata.values()){
24
+ const hasTable = await knex.schema.hasTable(meta.tableName);
25
+ if (!hasTable) {
26
+ continue;
27
+ }
28
+ for (const attribute of Object.values(meta.attributes)){
29
+ if (attribute.type === 'uid' && attribute.columnName) {
30
+ await dropIndex(knex, meta.tableName, attribute.columnName);
31
+ }
32
+ }
33
+ }
34
+ },
35
+ async down () {
36
+ throw new Error('not implemented');
37
+ }
38
+ };
39
+
40
+ export { dropSlugFieldsIndex };
41
+ //# sourceMappingURL=5.0.0-05-drop-slug-unique-index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-05-drop-slug-unique-index.mjs","sources":["../../../src/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.ts"],"sourcesContent":["/**\n * In V4 slug fields contained a unique index.\n * In V5 slug fields should not have a unique index.\n *\n * This migration drops existing unique indexes from slug fields so downstream migrations\n * can work on the data without violating the unique index.\n */\nimport type { Knex } from 'knex';\n\nimport type { Migration } from '../common';\n\nconst dropIndex = async (knex: Knex, tableName: string, columnName: string) => {\n try {\n await knex.schema.alterTable(tableName, (table) => {\n // NOTE: Can not use \"identifiers\" utility, as the 5.0.0-01 migration does not rename this particular index\n // to `tableName_columnName_uq`.\n table.dropUnique([columnName], `${tableName}_${columnName}_unique`);\n });\n } catch (error) {\n // If unique index does not exist, do nothing\n }\n};\n\nexport const dropSlugFieldsIndex: Migration = {\n name: '5.0.0-05-drop-slug-fields-index',\n async up(knex, db) {\n for (const meta of db.metadata.values()) {\n const hasTable = await knex.schema.hasTable(meta.tableName);\n if (!hasTable) {\n continue;\n }\n\n for (const attribute of Object.values(meta.attributes)) {\n if (attribute.type === 'uid' && attribute.columnName) {\n await dropIndex(knex, meta.tableName, attribute.columnName);\n }\n }\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["dropIndex","knex","tableName","columnName","schema","alterTable","table","dropUnique","error","dropSlugFieldsIndex","name","up","db","meta","metadata","values","hasTable","attribute","Object","attributes","type","down","Error"],"mappings":"AAAA;;;;;;AAMC,IAKD,MAAMA,SAAAA,GAAY,OAAOC,IAAAA,EAAYC,SAAmBC,EAAAA,UAAAA,GAAAA;IACtD,IAAI;AACF,QAAA,MAAMF,KAAKG,MAAM,CAACC,UAAU,CAACH,WAAW,CAACI,KAAAA,GAAAA;;;AAGvCA,YAAAA,KAAAA,CAAMC,UAAU,CAAC;AAACJ,gBAAAA;AAAW,aAAA,EAAE,CAAC,EAAED,SAAAA,CAAU,CAAC,EAAEC,UAAAA,CAAW,OAAO,CAAC,CAAA;AACpE,SAAA,CAAA;AACF,KAAA,CAAE,OAAOK,KAAO,EAAA;;AAEhB;AACF,CAAA;MAEaC,mBAAiC,GAAA;IAC5CC,IAAM,EAAA,iCAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGV,IAAI,EAAEW,EAAE,EAAA;AACf,QAAA,KAAK,MAAMC,IAAQD,IAAAA,EAAAA,CAAGE,QAAQ,CAACC,MAAM,EAAI,CAAA;YACvC,MAAMC,QAAAA,GAAW,MAAMf,IAAKG,CAAAA,MAAM,CAACY,QAAQ,CAACH,KAAKX,SAAS,CAAA;AAC1D,YAAA,IAAI,CAACc,QAAU,EAAA;AACb,gBAAA;AACF;AAEA,YAAA,KAAK,MAAMC,SAAaC,IAAAA,MAAAA,CAAOH,MAAM,CAACF,IAAAA,CAAKM,UAAU,CAAG,CAAA;AACtD,gBAAA,IAAIF,UAAUG,IAAI,KAAK,KAASH,IAAAA,SAAAA,CAAUd,UAAU,EAAE;AACpD,oBAAA,MAAMH,UAAUC,IAAMY,EAAAA,IAAAA,CAAKX,SAAS,EAAEe,UAAUd,UAAU,CAAA;AAC5D;AACF;AACF;AACF,KAAA;IACA,MAAMkB,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var _5_0_002DocumentId = require('./5.0.0-02-document-id.js');
4
+ var _5_0_001ConvertIdentifiersLongThanMaxLength = require('./5.0.0-01-convert-identifiers-long-than-max-length.js');
5
+ var _5_0_003Locale = require('./5.0.0-03-locale.js');
6
+ var _5_0_004PublishedAt = require('./5.0.0-04-published-at.js');
7
+ var _5_0_005DropSlugUniqueIndex = require('./5.0.0-05-drop-slug-unique-index.js');
8
+
9
+ /**
10
+ * List of all the internal migrations. The array order will be the order in which they are executed.
11
+ *
12
+ * {
13
+ * name: 'some-name',
14
+ * async up(knex: Knex, db: Database) {},
15
+ * async down(knex: Knex, db: Database) {},
16
+ * },
17
+ */ const internalMigrations = [
18
+ _5_0_001ConvertIdentifiersLongThanMaxLength.renameIdentifiersLongerThanMaxLength,
19
+ _5_0_002DocumentId.createdDocumentId,
20
+ _5_0_003Locale.createdLocale,
21
+ _5_0_004PublishedAt.createdPublishedAt,
22
+ _5_0_005DropSlugUniqueIndex.dropSlugFieldsIndex
23
+ ];
24
+
25
+ exports.internalMigrations = internalMigrations;
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/migrations/internal-migrations/index.ts"],"sourcesContent":["import type { Migration } from '../common';\nimport { createdDocumentId } from './5.0.0-02-document-id';\nimport { renameIdentifiersLongerThanMaxLength } from './5.0.0-01-convert-identifiers-long-than-max-length';\nimport { createdLocale } from './5.0.0-03-locale';\nimport { createdPublishedAt } from './5.0.0-04-published-at';\nimport { dropSlugFieldsIndex } from './5.0.0-05-drop-slug-unique-index';\n\n/**\n * List of all the internal migrations. The array order will be the order in which they are executed.\n *\n * {\n * name: 'some-name',\n * async up(knex: Knex, db: Database) {},\n * async down(knex: Knex, db: Database) {},\n * },\n */\nexport const internalMigrations: Migration[] = [\n renameIdentifiersLongerThanMaxLength,\n createdDocumentId,\n createdLocale,\n createdPublishedAt,\n dropSlugFieldsIndex,\n];\n"],"names":["internalMigrations","renameIdentifiersLongerThanMaxLength","createdDocumentId","createdLocale","createdPublishedAt","dropSlugFieldsIndex"],"mappings":";;;;;;;;AAOA;;;;;;;;UASaA,kBAAkC,GAAA;AAC7CC,IAAAA,gFAAAA;AACAC,IAAAA,oCAAAA;AACAC,IAAAA,4BAAAA;AACAC,IAAAA,sCAAAA;AACAC,IAAAA;;;;;"}
@@ -0,0 +1,24 @@
1
+ import { createdDocumentId } from './5.0.0-02-document-id.mjs';
2
+ import { renameIdentifiersLongerThanMaxLength } from './5.0.0-01-convert-identifiers-long-than-max-length.mjs';
3
+ import { createdLocale } from './5.0.0-03-locale.mjs';
4
+ import { createdPublishedAt } from './5.0.0-04-published-at.mjs';
5
+ import { dropSlugFieldsIndex } from './5.0.0-05-drop-slug-unique-index.mjs';
6
+
7
+ /**
8
+ * List of all the internal migrations. The array order will be the order in which they are executed.
9
+ *
10
+ * {
11
+ * name: 'some-name',
12
+ * async up(knex: Knex, db: Database) {},
13
+ * async down(knex: Knex, db: Database) {},
14
+ * },
15
+ */ const internalMigrations = [
16
+ renameIdentifiersLongerThanMaxLength,
17
+ createdDocumentId,
18
+ createdLocale,
19
+ createdPublishedAt,
20
+ dropSlugFieldsIndex
21
+ ];
22
+
23
+ export { internalMigrations };
24
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/migrations/internal-migrations/index.ts"],"sourcesContent":["import type { Migration } from '../common';\nimport { createdDocumentId } from './5.0.0-02-document-id';\nimport { renameIdentifiersLongerThanMaxLength } from './5.0.0-01-convert-identifiers-long-than-max-length';\nimport { createdLocale } from './5.0.0-03-locale';\nimport { createdPublishedAt } from './5.0.0-04-published-at';\nimport { dropSlugFieldsIndex } from './5.0.0-05-drop-slug-unique-index';\n\n/**\n * List of all the internal migrations. The array order will be the order in which they are executed.\n *\n * {\n * name: 'some-name',\n * async up(knex: Knex, db: Database) {},\n * async down(knex: Knex, db: Database) {},\n * },\n */\nexport const internalMigrations: Migration[] = [\n renameIdentifiersLongerThanMaxLength,\n createdDocumentId,\n createdLocale,\n createdPublishedAt,\n dropSlugFieldsIndex,\n];\n"],"names":["internalMigrations","renameIdentifiersLongerThanMaxLength","createdDocumentId","createdLocale","createdPublishedAt","dropSlugFieldsIndex"],"mappings":";;;;;;AAOA;;;;;;;;UASaA,kBAAkC,GAAA;AAC7CC,IAAAA,oCAAAA;AACAC,IAAAA,iBAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA;;;;;"}
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var umzug = require('umzug');
4
+ var common = require('./common.js');
5
+ var index = require('./internal-migrations/index.js');
6
+ var storage = require('./storage.js');
7
+ var logger = require('./logger.js');
8
+
9
+ const createInternalMigrationProvider = (db)=>{
10
+ const context = {
11
+ db
12
+ };
13
+ const migrations = [
14
+ ...index.internalMigrations
15
+ ];
16
+ const umzugProvider = new umzug.Umzug({
17
+ storage: storage.createStorage({
18
+ db,
19
+ tableName: 'strapi_migrations_internal'
20
+ }),
21
+ logger: {
22
+ info (message) {
23
+ // NOTE: only log internal migration in debug mode
24
+ db.logger.debug(logger.transformLogMessage('info', message));
25
+ },
26
+ warn (message) {
27
+ db.logger.warn(logger.transformLogMessage('warn', message));
28
+ },
29
+ error (message) {
30
+ db.logger.error(logger.transformLogMessage('error', message));
31
+ },
32
+ debug (message) {
33
+ db.logger.debug(logger.transformLogMessage('debug', message));
34
+ }
35
+ },
36
+ context,
37
+ migrations: ()=>migrations.map((migration)=>{
38
+ return {
39
+ name: migration.name,
40
+ up: common.wrapTransaction(context.db)(migration.up),
41
+ down: common.wrapTransaction(context.db)(migration.down)
42
+ };
43
+ })
44
+ });
45
+ return {
46
+ async register (migration) {
47
+ migrations.push(migration);
48
+ },
49
+ async shouldRun () {
50
+ const pendingMigrations = await umzugProvider.pending();
51
+ return pendingMigrations.length > 0;
52
+ },
53
+ async up () {
54
+ await umzugProvider.up();
55
+ },
56
+ async down () {
57
+ await umzugProvider.down();
58
+ }
59
+ };
60
+ };
61
+
62
+ exports.createInternalMigrationProvider = createInternalMigrationProvider;
63
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sources":["../../src/migrations/internal.ts"],"sourcesContent":["import { Umzug } from 'umzug';\n\nimport { wrapTransaction } from './common';\nimport { internalMigrations } from './internal-migrations';\nimport { createStorage } from './storage';\nimport { transformLogMessage } from './logger';\n\nimport type { InternalMigrationProvider, Migration } from './common';\nimport type { Database } from '..';\n\nexport const createInternalMigrationProvider = (db: Database): InternalMigrationProvider => {\n const context = { db };\n const migrations: Migration[] = [...internalMigrations];\n\n const umzugProvider = new Umzug({\n storage: createStorage({ db, tableName: 'strapi_migrations_internal' }),\n logger: {\n info(message) {\n // NOTE: only log internal migration in debug mode\n db.logger.debug(transformLogMessage('info', message));\n },\n warn(message) {\n db.logger.warn(transformLogMessage('warn', message));\n },\n error(message) {\n db.logger.error(transformLogMessage('error', message));\n },\n debug(message) {\n db.logger.debug(transformLogMessage('debug', message));\n },\n },\n context,\n migrations: () =>\n migrations.map((migration) => {\n return {\n name: migration.name,\n up: wrapTransaction(context.db)(migration.up),\n down: wrapTransaction(context.db)(migration.down),\n };\n }),\n });\n\n return {\n async register(migration: Migration) {\n migrations.push(migration);\n },\n async shouldRun() {\n const pendingMigrations = await umzugProvider.pending();\n return pendingMigrations.length > 0;\n },\n async up() {\n await umzugProvider.up();\n },\n async down() {\n await umzugProvider.down();\n },\n };\n};\n"],"names":["createInternalMigrationProvider","db","context","migrations","internalMigrations","umzugProvider","Umzug","storage","createStorage","tableName","logger","info","message","debug","transformLogMessage","warn","error","map","migration","name","up","wrapTransaction","down","register","push","shouldRun","pendingMigrations","pending","length"],"mappings":";;;;;;;;AAUO,MAAMA,kCAAkC,CAACC,EAAAA,GAAAA;AAC9C,IAAA,MAAMC,OAAU,GAAA;AAAED,QAAAA;AAAG,KAAA;AACrB,IAAA,MAAME,UAA0B,GAAA;AAAIC,QAAAA,GAAAA;AAAmB,KAAA;IAEvD,MAAMC,aAAAA,GAAgB,IAAIC,WAAM,CAAA;AAC9BC,QAAAA,OAAAA,EAASC,qBAAc,CAAA;AAAEP,YAAAA,EAAAA;YAAIQ,SAAW,EAAA;AAA6B,SAAA,CAAA;QACrEC,MAAQ,EAAA;AACNC,YAAAA,IAAAA,CAAAA,CAAKC,OAAO,EAAA;;AAEVX,gBAAAA,EAAAA,CAAGS,MAAM,CAACG,KAAK,CAACC,2BAAoB,MAAQF,EAAAA,OAAAA,CAAAA,CAAAA;AAC9C,aAAA;AACAG,YAAAA,IAAAA,CAAAA,CAAKH,OAAO,EAAA;AACVX,gBAAAA,EAAAA,CAAGS,MAAM,CAACK,IAAI,CAACD,2BAAoB,MAAQF,EAAAA,OAAAA,CAAAA,CAAAA;AAC7C,aAAA;AACAI,YAAAA,KAAAA,CAAAA,CAAMJ,OAAO,EAAA;AACXX,gBAAAA,EAAAA,CAAGS,MAAM,CAACM,KAAK,CAACF,2BAAoB,OAASF,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,aAAA;AACAC,YAAAA,KAAAA,CAAAA,CAAMD,OAAO,EAAA;AACXX,gBAAAA,EAAAA,CAAGS,MAAM,CAACG,KAAK,CAACC,2BAAoB,OAASF,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C;AACF,SAAA;AACAV,QAAAA,OAAAA;AACAC,QAAAA,UAAAA,EAAY,IACVA,UAAAA,CAAWc,GAAG,CAAC,CAACC,SAAAA,GAAAA;gBACd,OAAO;AACLC,oBAAAA,IAAAA,EAAMD,UAAUC,IAAI;AACpBC,oBAAAA,EAAAA,EAAIC,sBAAgBnB,CAAAA,OAAAA,CAAQD,EAAE,CAAA,CAAEiB,UAAUE,EAAE,CAAA;AAC5CE,oBAAAA,IAAAA,EAAMD,sBAAgBnB,CAAAA,OAAAA,CAAQD,EAAE,CAAA,CAAEiB,UAAUI,IAAI;AAClD,iBAAA;AACF,aAAA;AACJ,KAAA,CAAA;IAEA,OAAO;AACL,QAAA,MAAMC,UAASL,SAAoB,EAAA;AACjCf,YAAAA,UAAAA,CAAWqB,IAAI,CAACN,SAAAA,CAAAA;AAClB,SAAA;QACA,MAAMO,SAAAA,CAAAA,GAAAA;YACJ,MAAMC,iBAAAA,GAAoB,MAAMrB,aAAAA,CAAcsB,OAAO,EAAA;YACrD,OAAOD,iBAAAA,CAAkBE,MAAM,GAAG,CAAA;AACpC,SAAA;QACA,MAAMR,EAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMf,cAAce,EAAE,EAAA;AACxB,SAAA;QACA,MAAME,IAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMjB,cAAciB,IAAI,EAAA;AAC1B;AACF,KAAA;AACF;;;;"}