@strapi/database 4.14.3 → 4.14.5

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 (242) hide show
  1. package/README.md +3 -0
  2. package/dist/connection.d.ts +3 -0
  3. package/dist/connection.d.ts.map +1 -0
  4. package/dist/dialects/dialect.d.ts +27 -0
  5. package/dist/dialects/dialect.d.ts.map +1 -0
  6. package/dist/dialects/index.d.ts +5 -0
  7. package/dist/dialects/index.d.ts.map +1 -0
  8. package/dist/dialects/mysql/constants.d.ts +3 -0
  9. package/dist/dialects/mysql/constants.d.ts.map +1 -0
  10. package/dist/dialects/mysql/database-inspector.d.ts +12 -0
  11. package/dist/dialects/mysql/database-inspector.d.ts.map +1 -0
  12. package/dist/dialects/mysql/index.d.ts +20 -0
  13. package/dist/dialects/mysql/index.d.ts.map +1 -0
  14. package/dist/dialects/mysql/schema-inspector.d.ts +13 -0
  15. package/dist/dialects/mysql/schema-inspector.d.ts.map +1 -0
  16. package/dist/dialects/postgresql/index.d.ts +14 -0
  17. package/dist/dialects/postgresql/index.d.ts.map +1 -0
  18. package/dist/dialects/postgresql/schema-inspector.d.ts +14 -0
  19. package/dist/dialects/postgresql/schema-inspector.d.ts.map +1 -0
  20. package/dist/dialects/sqlite/index.d.ts +19 -0
  21. package/dist/dialects/sqlite/index.d.ts.map +1 -0
  22. package/dist/dialects/sqlite/schema-inspector.d.ts +13 -0
  23. package/dist/dialects/sqlite/schema-inspector.d.ts.map +1 -0
  24. package/dist/entity-manager/entity-repository.d.ts +4 -0
  25. package/dist/entity-manager/entity-repository.d.ts.map +1 -0
  26. package/dist/entity-manager/index.d.ts +5 -0
  27. package/dist/entity-manager/index.d.ts.map +1 -0
  28. package/dist/entity-manager/morph-relations.d.ts +13 -0
  29. package/dist/entity-manager/morph-relations.d.ts.map +1 -0
  30. package/dist/entity-manager/regular-relations.d.ts +83 -0
  31. package/dist/entity-manager/regular-relations.d.ts.map +1 -0
  32. package/dist/entity-manager/relations/cloning/regular-relations.d.ts +17 -0
  33. package/dist/entity-manager/relations/cloning/regular-relations.d.ts.map +1 -0
  34. package/dist/entity-manager/relations-orderer.d.ts +73 -0
  35. package/dist/entity-manager/relations-orderer.d.ts.map +1 -0
  36. package/dist/entity-manager/types.d.ts +97 -0
  37. package/dist/entity-manager/types.d.ts.map +1 -0
  38. package/dist/errors/database.d.ts +5 -0
  39. package/dist/errors/database.d.ts.map +1 -0
  40. package/dist/errors/index.d.ts +8 -0
  41. package/dist/errors/index.d.ts.map +1 -0
  42. package/dist/errors/invalid-date.d.ts +5 -0
  43. package/dist/errors/invalid-date.d.ts.map +1 -0
  44. package/dist/errors/invalid-datetime.d.ts +5 -0
  45. package/dist/errors/invalid-datetime.d.ts.map +1 -0
  46. package/dist/errors/invalid-relation.d.ts +5 -0
  47. package/dist/errors/invalid-relation.d.ts.map +1 -0
  48. package/dist/errors/invalid-time.d.ts +5 -0
  49. package/dist/errors/invalid-time.d.ts.map +1 -0
  50. package/dist/errors/not-null.d.ts +7 -0
  51. package/dist/errors/not-null.d.ts.map +1 -0
  52. package/dist/fields/biginteger.d.ts +4 -0
  53. package/dist/fields/biginteger.d.ts.map +1 -0
  54. package/dist/fields/boolean.d.ts +6 -0
  55. package/dist/fields/boolean.d.ts.map +1 -0
  56. package/dist/fields/date.d.ts +6 -0
  57. package/dist/fields/date.d.ts.map +1 -0
  58. package/dist/fields/datetime.d.ts +6 -0
  59. package/dist/fields/datetime.d.ts.map +1 -0
  60. package/dist/fields/field.d.ts +7 -0
  61. package/dist/fields/field.d.ts.map +1 -0
  62. package/dist/fields/index.d.ts +4 -0
  63. package/dist/fields/index.d.ts.map +1 -0
  64. package/dist/fields/json.d.ts +6 -0
  65. package/dist/fields/json.d.ts.map +1 -0
  66. package/dist/fields/number.d.ts +6 -0
  67. package/dist/fields/number.d.ts.map +1 -0
  68. package/dist/fields/shared/parsers.d.ts +4 -0
  69. package/dist/fields/shared/parsers.d.ts.map +1 -0
  70. package/dist/fields/string.d.ts +6 -0
  71. package/dist/fields/string.d.ts.map +1 -0
  72. package/dist/fields/time.d.ts +6 -0
  73. package/dist/fields/time.d.ts.map +1 -0
  74. package/dist/fields/timestamp.d.ts +6 -0
  75. package/dist/fields/timestamp.d.ts.map +1 -0
  76. package/dist/index.d.ts +46 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +6211 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/index.mjs +6179 -0
  81. package/dist/index.mjs.map +1 -0
  82. package/dist/lifecycles/index.d.ts +17 -0
  83. package/dist/lifecycles/index.d.ts.map +1 -0
  84. package/dist/lifecycles/subscribers/index.d.ts +5 -0
  85. package/dist/lifecycles/subscribers/index.d.ts.map +1 -0
  86. package/dist/lifecycles/subscribers/models-lifecycles.d.ts +6 -0
  87. package/dist/lifecycles/subscribers/models-lifecycles.d.ts.map +1 -0
  88. package/dist/lifecycles/subscribers/timestamps.d.ts +3 -0
  89. package/dist/lifecycles/subscribers/timestamps.d.ts.map +1 -0
  90. package/dist/lifecycles/types.d.ts +25 -0
  91. package/dist/lifecycles/types.d.ts.map +1 -0
  92. package/dist/metadata/index.d.ts +10 -0
  93. package/dist/metadata/index.d.ts.map +1 -0
  94. package/dist/metadata/metadata.d.ts +22 -0
  95. package/dist/metadata/metadata.d.ts.map +1 -0
  96. package/dist/metadata/relations.d.ts +16 -0
  97. package/dist/metadata/relations.d.ts.map +1 -0
  98. package/dist/migrations/index.d.ts +12 -0
  99. package/dist/migrations/index.d.ts.map +1 -0
  100. package/dist/migrations/storage.d.ts +15 -0
  101. package/dist/migrations/storage.d.ts.map +1 -0
  102. package/dist/query/helpers/index.d.ts +8 -0
  103. package/dist/query/helpers/index.d.ts.map +1 -0
  104. package/dist/query/helpers/join.d.ts +30 -0
  105. package/dist/query/helpers/join.d.ts.map +1 -0
  106. package/dist/query/helpers/order-by.d.ts +14 -0
  107. package/dist/query/helpers/order-by.d.ts.map +1 -0
  108. package/dist/query/helpers/populate/apply.d.ts +11 -0
  109. package/dist/query/helpers/populate/apply.d.ts.map +1 -0
  110. package/dist/query/helpers/populate/index.d.ts +4 -0
  111. package/dist/query/helpers/populate/index.d.ts.map +1 -0
  112. package/dist/query/helpers/populate/process.d.ts +24 -0
  113. package/dist/query/helpers/populate/process.d.ts.map +1 -0
  114. package/dist/query/helpers/search.d.ts +4 -0
  115. package/dist/query/helpers/search.d.ts.map +1 -0
  116. package/dist/query/helpers/streams/index.d.ts +2 -0
  117. package/dist/query/helpers/streams/index.d.ts.map +1 -0
  118. package/dist/query/helpers/streams/readable.d.ts +39 -0
  119. package/dist/query/helpers/streams/readable.d.ts.map +1 -0
  120. package/dist/query/helpers/transform.d.ts +8 -0
  121. package/dist/query/helpers/transform.d.ts.map +1 -0
  122. package/dist/query/helpers/where.d.ts +19 -0
  123. package/dist/query/helpers/where.d.ts.map +1 -0
  124. package/dist/query/index.d.ts +3 -0
  125. package/dist/query/index.d.ts.map +1 -0
  126. package/dist/query/query-builder.d.ts +79 -0
  127. package/dist/query/query-builder.d.ts.map +1 -0
  128. package/dist/query/types.d.ts +8 -0
  129. package/dist/query/types.d.ts.map +1 -0
  130. package/dist/schema/builder.d.ts +33 -0
  131. package/dist/schema/builder.d.ts.map +1 -0
  132. package/dist/schema/diff.d.ts +7 -0
  133. package/dist/schema/diff.d.ts.map +1 -0
  134. package/dist/schema/index.d.ts +20 -0
  135. package/dist/schema/index.d.ts.map +1 -0
  136. package/dist/schema/schema.d.ts +4 -0
  137. package/dist/schema/schema.d.ts.map +1 -0
  138. package/dist/schema/storage.d.ts +10 -0
  139. package/dist/schema/storage.d.ts.map +1 -0
  140. package/dist/schema/types.d.ts +103 -0
  141. package/dist/schema/types.d.ts.map +1 -0
  142. package/dist/transaction-context.d.ts +22 -0
  143. package/dist/transaction-context.d.ts.map +1 -0
  144. package/dist/types/index.d.ts +169 -0
  145. package/dist/types/index.d.ts.map +1 -0
  146. package/dist/utils/content-types.d.ts +13 -0
  147. package/dist/utils/content-types.d.ts.map +1 -0
  148. package/dist/utils/knex.d.ts +12 -0
  149. package/dist/utils/knex.d.ts.map +1 -0
  150. package/dist/utils/types.d.ts +10 -0
  151. package/dist/utils/types.d.ts.map +1 -0
  152. package/dist/validations/index.d.ts +6 -0
  153. package/dist/validations/index.d.ts.map +1 -0
  154. package/dist/validations/relations/bidirectional.d.ts +12 -0
  155. package/dist/validations/relations/bidirectional.d.ts.map +1 -0
  156. package/dist/validations/relations/index.d.ts +7 -0
  157. package/dist/validations/relations/index.d.ts.map +1 -0
  158. package/package.json +20 -8
  159. package/.eslintignore +0 -2
  160. package/.eslintrc.js +0 -4
  161. package/jest.config.js +0 -6
  162. package/lib/__tests__/index.test.js +0 -93
  163. package/lib/__tests__/lifecycles.test.js +0 -55
  164. package/lib/connection.js +0 -64
  165. package/lib/dialects/dialect.js +0 -63
  166. package/lib/dialects/index.js +0 -53
  167. package/lib/dialects/mysql/constants.js +0 -6
  168. package/lib/dialects/mysql/database-inspector.js +0 -37
  169. package/lib/dialects/mysql/index.js +0 -92
  170. package/lib/dialects/mysql/schema-inspector.js +0 -234
  171. package/lib/dialects/postgresql/index.js +0 -65
  172. package/lib/dialects/postgresql/schema-inspector.js +0 -283
  173. package/lib/dialects/sqlite/index.js +0 -87
  174. package/lib/dialects/sqlite/schema-inspector.js +0 -151
  175. package/lib/entity-manager/__tests__/relations-orderer.test.js +0 -186
  176. package/lib/entity-manager/__tests__/sort-connect-array.test.js +0 -79
  177. package/lib/entity-manager/entity-repository.js +0 -164
  178. package/lib/entity-manager/index.js +0 -1385
  179. package/lib/entity-manager/morph-relations.js +0 -63
  180. package/lib/entity-manager/regular-relations.js +0 -506
  181. package/lib/entity-manager/relations/cloning/regular-relations.js +0 -76
  182. package/lib/entity-manager/relations-orderer.js +0 -225
  183. package/lib/errors/database.js +0 -12
  184. package/lib/errors/index.js +0 -17
  185. package/lib/errors/invalid-date.js +0 -14
  186. package/lib/errors/invalid-datetime.js +0 -14
  187. package/lib/errors/invalid-relation.js +0 -14
  188. package/lib/errors/invalid-time.js +0 -14
  189. package/lib/errors/not-null.js +0 -15
  190. package/lib/fields/biginteger.js +0 -17
  191. package/lib/fields/boolean.js +0 -39
  192. package/lib/fields/date.js +0 -16
  193. package/lib/fields/datetime.js +0 -19
  194. package/lib/fields/field.js +0 -17
  195. package/lib/fields/index.d.ts +0 -9
  196. package/lib/fields/index.js +0 -50
  197. package/lib/fields/json.js +0 -21
  198. package/lib/fields/number.js +0 -23
  199. package/lib/fields/shared/parsers.js +0 -71
  200. package/lib/fields/string.js +0 -17
  201. package/lib/fields/time.js +0 -17
  202. package/lib/fields/timestamp.js +0 -19
  203. package/lib/index.d.ts +0 -198
  204. package/lib/index.js +0 -129
  205. package/lib/lifecycles/index.d.ts +0 -51
  206. package/lib/lifecycles/index.js +0 -90
  207. package/lib/lifecycles/subscribers/index.d.ts +0 -11
  208. package/lib/lifecycles/subscribers/models-lifecycles.js +0 -19
  209. package/lib/lifecycles/subscribers/timestamps.js +0 -65
  210. package/lib/metadata/index.js +0 -244
  211. package/lib/metadata/relations.js +0 -578
  212. package/lib/migrations/index.d.ts +0 -9
  213. package/lib/migrations/index.js +0 -75
  214. package/lib/migrations/storage.js +0 -44
  215. package/lib/query/helpers/index.js +0 -11
  216. package/lib/query/helpers/join.js +0 -96
  217. package/lib/query/helpers/order-by.js +0 -70
  218. package/lib/query/helpers/populate/apply.js +0 -664
  219. package/lib/query/helpers/populate/index.js +0 -9
  220. package/lib/query/helpers/populate/process.js +0 -102
  221. package/lib/query/helpers/search.js +0 -84
  222. package/lib/query/helpers/streams/index.js +0 -5
  223. package/lib/query/helpers/streams/readable.js +0 -174
  224. package/lib/query/helpers/transform.js +0 -84
  225. package/lib/query/helpers/where.js +0 -365
  226. package/lib/query/index.js +0 -7
  227. package/lib/query/query-builder.js +0 -514
  228. package/lib/schema/__tests__/schema-diff.test.js +0 -231
  229. package/lib/schema/builder.js +0 -386
  230. package/lib/schema/diff.js +0 -399
  231. package/lib/schema/index.d.ts +0 -49
  232. package/lib/schema/index.js +0 -94
  233. package/lib/schema/schema.js +0 -202
  234. package/lib/schema/storage.js +0 -76
  235. package/lib/transaction-context.js +0 -68
  236. package/lib/types/index.d.ts +0 -6
  237. package/lib/types/index.js +0 -35
  238. package/lib/utils/content-types.js +0 -40
  239. package/lib/utils/knex.js +0 -22
  240. package/lib/validations/index.js +0 -20
  241. package/lib/validations/relations/bidirectional.js +0 -89
  242. package/lib/validations/relations/index.js +0 -14
@@ -1,79 +0,0 @@
1
- 'use strict';
2
-
3
- const { sortConnectArray } = require('../relations-orderer');
4
-
5
- describe('sortConnectArray', () => {
6
- test('sorts connect array', () => {
7
- const sortConnect = sortConnectArray([
8
- { id: 5, position: { before: 1 } },
9
- { id: 1, position: { before: 2 } },
10
- { id: 2, position: { end: true } },
11
- { id: 3, position: { after: 1 } },
12
- ]);
13
-
14
- expect(sortConnect).toMatchObject([
15
- { id: 2, position: { end: true } },
16
- { id: 1, position: { before: 2 } },
17
- { id: 5, position: { before: 1 } },
18
- { id: 3, position: { after: 1 } },
19
- ]);
20
- });
21
-
22
- test('sorts connect array with initial relations', () => {
23
- const sortConnect = sortConnectArray(
24
- [
25
- { id: 5, position: { before: 1 } },
26
- { id: 1, position: { before: 2 } },
27
- { id: 2, position: { end: true } },
28
- { id: 3, position: { after: 1 } },
29
- ],
30
- [{ id: 1 }]
31
- );
32
-
33
- expect(sortConnect).toMatchObject([
34
- { id: 5, position: { before: 1 } },
35
- { id: 2, position: { end: true } },
36
- { id: 1, position: { before: 2 } },
37
- { id: 3, position: { after: 1 } },
38
- ]);
39
- });
40
-
41
- test("error if position doesn't exist", () => {
42
- const sortConnect = () => sortConnectArray([{ id: 1, position: { after: 2 } }]);
43
-
44
- expect(sortConnect).toThrowError(
45
- 'There was a problem connecting relation with id 1 at position {"after":2}. The relation with id 2 needs to be connected first.'
46
- );
47
- });
48
-
49
- test('error with circular references', () => {
50
- const sortConnect = () =>
51
- sortConnectArray(
52
- [
53
- { id: 2, position: { after: 1 } },
54
- { id: 3, position: { after: 1 } },
55
- { id: 1, position: { after: 3 } },
56
- ],
57
- []
58
- );
59
-
60
- expect(sortConnect).toThrowError(
61
- 'A circular reference was found in the connect array. One relation is trying to connect before/after another one that is trying to connect before/after it'
62
- );
63
- });
64
-
65
- test('error when connecting same relation twice', () => {
66
- const sortConnect = () =>
67
- sortConnectArray(
68
- [
69
- { id: 1, position: { after: 2 } },
70
- { id: 1, position: { after: 3 } },
71
- ],
72
- []
73
- );
74
-
75
- expect(sortConnect).toThrowError(
76
- 'The relation with id 1 is already connected. You cannot connect the same relation twice.'
77
- );
78
- });
79
- });
@@ -1,164 +0,0 @@
1
- 'use strict';
2
-
3
- const { isString } = require('lodash/fp');
4
- const { isAnyToMany } = require('../metadata/relations');
5
-
6
- const withDefaultPagination = (params) => {
7
- const { page = 1, pageSize = 10, ...rest } = params;
8
-
9
- return {
10
- page: Number(page),
11
- pageSize: Number(pageSize),
12
- ...rest,
13
- };
14
- };
15
-
16
- const withOffsetLimit = (params) => {
17
- const { page, pageSize, ...rest } = withDefaultPagination(params);
18
-
19
- const offset = Math.max(page - 1, 0) * pageSize;
20
- const limit = pageSize;
21
-
22
- const query = {
23
- ...rest,
24
- limit,
25
- offset,
26
- };
27
-
28
- return [query, { page, pageSize }];
29
- };
30
-
31
- const createRepository = (uid, db) => {
32
- return {
33
- findOne(params) {
34
- return db.entityManager.findOne(uid, params);
35
- },
36
-
37
- findMany(params) {
38
- return db.entityManager.findMany(uid, params);
39
- },
40
-
41
- findWithCount(params) {
42
- return Promise.all([
43
- db.entityManager.findMany(uid, params),
44
- db.entityManager.count(uid, params),
45
- ]);
46
- },
47
-
48
- async findPage(params) {
49
- const [query, { page, pageSize }] = withOffsetLimit(params);
50
-
51
- const [results, total] = await Promise.all([
52
- db.entityManager.findMany(uid, query),
53
- db.entityManager.count(uid, query),
54
- ]);
55
-
56
- return {
57
- results,
58
- pagination: {
59
- page,
60
- pageSize,
61
- pageCount: Math.ceil(total / pageSize),
62
- total,
63
- },
64
- };
65
- },
66
-
67
- create(params) {
68
- return db.entityManager.create(uid, params);
69
- },
70
-
71
- createMany(params) {
72
- return db.entityManager.createMany(uid, params);
73
- },
74
-
75
- update(params) {
76
- return db.entityManager.update(uid, params);
77
- },
78
-
79
- updateMany(params) {
80
- return db.entityManager.updateMany(uid, params);
81
- },
82
-
83
- clone(id, params) {
84
- return db.entityManager.clone(uid, id, params);
85
- },
86
-
87
- delete(params) {
88
- return db.entityManager.delete(uid, params);
89
- },
90
-
91
- deleteMany(params) {
92
- return db.entityManager.deleteMany(uid, params);
93
- },
94
-
95
- count(params) {
96
- return db.entityManager.count(uid, params);
97
- },
98
-
99
- attachRelations(id, data) {
100
- return db.entityManager.attachRelations(uid, id, data);
101
- },
102
-
103
- async updateRelations(id, data) {
104
- const trx = await db.transaction();
105
- try {
106
- await db.entityManager.updateRelations(uid, id, data, { transaction: trx.get() });
107
- return trx.commit();
108
- } catch (e) {
109
- await trx.rollback();
110
- throw e;
111
- }
112
- },
113
-
114
- deleteRelations(id) {
115
- return db.entityManager.deleteRelations(uid, id);
116
- },
117
-
118
- cloneRelations(targetId, sourceId, params) {
119
- return db.entityManager.cloneRelations(uid, targetId, sourceId, params);
120
- },
121
-
122
- populate(entity, populate) {
123
- return db.entityManager.populate(uid, entity, populate);
124
- },
125
-
126
- load(entity, fields, params) {
127
- return db.entityManager.load(uid, entity, fields, params);
128
- },
129
-
130
- async loadPages(entity, field, params) {
131
- if (!isString(field)) {
132
- throw new Error(`Invalid load. Expected ${field} to be a string`);
133
- }
134
-
135
- const { attributes } = db.metadata.get(uid);
136
- const attribute = attributes[field];
137
-
138
- if (!attribute || attribute.type !== 'relation' || !isAnyToMany(attribute)) {
139
- throw new Error(`Invalid load. Expected ${field} to be an anyToMany relational attribute`);
140
- }
141
-
142
- const [query, { page, pageSize }] = withOffsetLimit(params);
143
-
144
- const [results, { count: total }] = await Promise.all([
145
- db.entityManager.load(uid, entity, field, query),
146
- db.entityManager.load(uid, entity, field, { ...query, count: true }),
147
- ]);
148
-
149
- return {
150
- results,
151
- pagination: {
152
- page,
153
- pageSize,
154
- pageCount: Math.ceil(total / pageSize),
155
- total,
156
- },
157
- };
158
- },
159
- };
160
- };
161
-
162
- module.exports = {
163
- createRepository,
164
- };