@strapi/database 4.13.0-alpha.1 → 4.13.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/dist/connection.d.ts +0 -2
- package/dist/connection.js +0 -57
- package/dist/connection.js.map +0 -1
- package/dist/dialects/dialect.d.ts +0 -21
- package/dist/dialects/dialect.js +0 -49
- package/dist/dialects/dialect.js.map +0 -1
- package/dist/dialects/index.d.ts +0 -4
- package/dist/dialects/index.js +0 -49
- package/dist/dialects/index.js.map +0 -1
- package/dist/dialects/mysql/constants.d.ts +0 -2
- package/dist/dialects/mysql/constants.js +0 -6
- package/dist/dialects/mysql/constants.js.map +0 -1
- package/dist/dialects/mysql/database-inspector.d.ts +0 -11
- package/dist/dialects/mysql/database-inspector.js +0 -34
- package/dist/dialects/mysql/database-inspector.js.map +0 -1
- package/dist/dialects/mysql/index.d.ts +0 -19
- package/dist/dialects/mysql/index.js +0 -80
- package/dist/dialects/mysql/index.js.map +0 -1
- package/dist/dialects/mysql/schema-inspector.d.ts +0 -11
- package/dist/dialects/mysql/schema-inspector.js +0 -206
- package/dist/dialects/mysql/schema-inspector.js.map +0 -1
- package/dist/dialects/postgresql/index.d.ts +0 -13
- package/dist/dialects/postgresql/index.js +0 -72
- package/dist/dialects/postgresql/index.js.map +0 -1
- package/dist/dialects/postgresql/schema-inspector.d.ts +0 -12
- package/dist/dialects/postgresql/schema-inspector.js +0 -236
- package/dist/dialects/postgresql/schema-inspector.js.map +0 -1
- package/dist/dialects/sqlite/index.d.ts +0 -18
- package/dist/dialects/sqlite/index.js +0 -95
- package/dist/dialects/sqlite/index.js.map +0 -1
- package/dist/dialects/sqlite/schema-inspector.d.ts +0 -11
- package/dist/dialects/sqlite/schema-inspector.js +0 -133
- package/dist/dialects/sqlite/schema-inspector.js.map +0 -1
- package/dist/dialects/types.d.ts +0 -33
- package/dist/dialects/types.js +0 -3
- package/dist/dialects/types.js.map +0 -1
- package/dist/errors/database.d.ts +0 -4
- package/dist/errors/database.js +0 -12
- package/dist/errors/database.js.map +0 -1
- package/dist/errors/index.d.ts +0 -7
- package/dist/errors/index.js +0 -19
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/invalid-date.d.ts +0 -4
- package/dist/errors/invalid-date.js +0 -14
- package/dist/errors/invalid-date.js.map +0 -1
- package/dist/errors/invalid-datetime.d.ts +0 -4
- package/dist/errors/invalid-datetime.js +0 -14
- package/dist/errors/invalid-datetime.js.map +0 -1
- package/dist/errors/invalid-relation.d.ts +0 -4
- package/dist/errors/invalid-relation.js +0 -14
- package/dist/errors/invalid-relation.js.map +0 -1
- package/dist/errors/invalid-time.d.ts +0 -4
- package/dist/errors/invalid-time.js +0 -14
- package/dist/errors/invalid-time.js.map +0 -1
- package/dist/errors/not-null.d.ts +0 -6
- package/dist/errors/not-null.js +0 -16
- package/dist/errors/not-null.js.map +0 -1
- package/dist/index.d.ts +0 -44
- package/dist/index.js +0 -135
- package/dist/index.js.map +0 -1
- package/dist/lifecycles/index.d.ts +0 -16
- package/dist/lifecycles/index.js +0 -86
- package/dist/lifecycles/index.js.map +0 -1
- package/dist/lifecycles/subscribers/index.d.ts +0 -4
- package/dist/lifecycles/subscribers/index.js +0 -12
- package/dist/lifecycles/subscribers/index.js.map +0 -1
- package/dist/lifecycles/subscribers/models-lifecycles.d.ts +0 -5
- package/dist/lifecycles/subscribers/models-lifecycles.js +0 -14
- package/dist/lifecycles/subscribers/models-lifecycles.js.map +0 -1
- package/dist/lifecycles/subscribers/timestamps.d.ts +0 -2
- package/dist/lifecycles/subscribers/timestamps.js +0 -50
- package/dist/lifecycles/subscribers/timestamps.js.map +0 -1
- package/dist/lifecycles/types.d.ts +0 -25
- package/dist/lifecycles/types.js +0 -3
- package/dist/lifecycles/types.js.map +0 -1
- package/dist/metadata/index.d.ts +0 -6
- package/dist/metadata/index.js +0 -236
- package/dist/metadata/index.js.map +0 -1
- package/dist/metadata/relations.d.ts +0 -20
- package/dist/metadata/relations.js +0 -529
- package/dist/metadata/relations.js.map +0 -1
- package/dist/metadata/types.d.ts +0 -44
- package/dist/metadata/types.js +0 -22
- package/dist/metadata/types.js.map +0 -1
- package/dist/migrations/index.d.ts +0 -11
- package/dist/migrations/index.js +0 -74
- package/dist/migrations/index.js.map +0 -1
- package/dist/migrations/storage.d.ts +0 -14
- package/dist/migrations/storage.js +0 -38
- package/dist/migrations/storage.js.map +0 -1
- package/dist/transaction-context.d.ts +0 -16
- package/dist/transaction-context.js +0 -56
- package/dist/transaction-context.js.map +0 -1
- package/dist/types/index.d.ts +0 -6
- package/dist/types/index.js +0 -38
- package/dist/types/index.js.map +0 -1
- package/dist/utils/content-types.d.ts +0 -17
- package/dist/utils/content-types.js +0 -39
- package/dist/utils/content-types.js.map +0 -1
- package/dist/utils/knex.d.ts +0 -8
- package/dist/utils/knex.js +0 -22
- package/dist/utils/knex.js.map +0 -1
- package/dist/validations/index.d.ts +0 -5
- package/dist/validations/index.js +0 -12
- package/dist/validations/index.js.map +0 -1
- package/dist/validations/relations/bidirectional.d.ts +0 -11
- package/dist/validations/relations/bidirectional.js +0 -75
- package/dist/validations/relations/bidirectional.js.map +0 -1
- package/dist/validations/relations/index.d.ts +0 -6
- package/dist/validations/relations/index.js +0 -13
- package/dist/validations/relations/index.js.map +0 -1
|
@@ -1,529 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getJoinTableName = exports.hasInverseOrderColumn = exports.hasOrderColumn = exports.isAnyToMany = exports.isAnyToOne = exports.isManyToAny = exports.isOneToAny = exports.isBidirectional = exports.isPolymorphic = exports.createRelation = void 0;
|
|
7
|
-
const fp_1 = __importDefault(require("lodash/fp"));
|
|
8
|
-
const hasInversedBy = fp_1.default.has('inversedBy');
|
|
9
|
-
const hasMappedBy = fp_1.default.has('mappedBy');
|
|
10
|
-
const isPolymorphic = (attribute) => ['morphOne', 'morphMany', 'morphToOne', 'morphToMany'].includes(attribute.relation);
|
|
11
|
-
exports.isPolymorphic = isPolymorphic;
|
|
12
|
-
const isOneToAny = (attribute) => ['oneToOne', 'oneToMany'].includes(attribute.relation);
|
|
13
|
-
exports.isOneToAny = isOneToAny;
|
|
14
|
-
const isManyToAny = (attribute) => ['manyToMany', 'manyToOne'].includes(attribute.relation);
|
|
15
|
-
exports.isManyToAny = isManyToAny;
|
|
16
|
-
const isAnyToOne = (attribute) => ['oneToOne', 'manyToOne'].includes(attribute.relation);
|
|
17
|
-
exports.isAnyToOne = isAnyToOne;
|
|
18
|
-
const isAnyToMany = (attribute) => ['oneToMany', 'manyToMany'].includes(attribute.relation);
|
|
19
|
-
exports.isAnyToMany = isAnyToMany;
|
|
20
|
-
const isBidirectional = (attribute) => hasInversedBy(attribute) || hasMappedBy(attribute);
|
|
21
|
-
exports.isBidirectional = isBidirectional;
|
|
22
|
-
const isOwner = (attribute) => !isBidirectional(attribute) || hasInversedBy(attribute);
|
|
23
|
-
const shouldUseJoinTable = (attribute) => attribute.useJoinTable !== false;
|
|
24
|
-
const getJoinTableName = (tableName, attributeName) => fp_1.default.snakeCase(`${tableName}_${attributeName}_links`);
|
|
25
|
-
exports.getJoinTableName = getJoinTableName;
|
|
26
|
-
/**
|
|
27
|
-
* Creates a oneToOne relation metadata
|
|
28
|
-
*
|
|
29
|
-
* if owner then
|
|
30
|
-
* if with join table then
|
|
31
|
-
* create join table
|
|
32
|
-
* else
|
|
33
|
-
* create joinColumn
|
|
34
|
-
* if bidirectional then
|
|
35
|
-
* set inverse attribute joinCol or joinTable info correctly
|
|
36
|
-
* else
|
|
37
|
-
* this property must be set by the owner side
|
|
38
|
-
* verify the owner side is valid // should be done before or at the same time ?
|
|
39
|
-
*
|
|
40
|
-
* @param {string} attributeName
|
|
41
|
-
* @param {Attribute} attribute
|
|
42
|
-
* @param {ModelMetadata} meta
|
|
43
|
-
* @param {Metadata} metadata
|
|
44
|
-
* @retuns void
|
|
45
|
-
*/
|
|
46
|
-
const createOneToOne = (attributeName, attribute, meta, metadata) => {
|
|
47
|
-
if (isOwner(attribute)) {
|
|
48
|
-
if (shouldUseJoinTable(attribute)) {
|
|
49
|
-
createJoinTable(metadata, {
|
|
50
|
-
attribute,
|
|
51
|
-
attributeName,
|
|
52
|
-
meta,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
createJoinColum(metadata, {
|
|
57
|
-
attribute,
|
|
58
|
-
attributeName,
|
|
59
|
-
meta,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
// TODO: verify other side is valid
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Creates a oneToMany relation metadata
|
|
69
|
-
*
|
|
70
|
-
* if unidirectional then
|
|
71
|
-
* create join table
|
|
72
|
-
* if bidirectional then
|
|
73
|
-
* cannot be owning side
|
|
74
|
-
* do nothing
|
|
75
|
-
*
|
|
76
|
-
* @param {string} attributeName
|
|
77
|
-
* @param {Attribute} attribute
|
|
78
|
-
* @param {ModelMetadata} meta
|
|
79
|
-
* @param {Metadata} metadata
|
|
80
|
-
*/
|
|
81
|
-
const createOneToMany = (attributeName, attribute, meta, metadata) => {
|
|
82
|
-
if (!isBidirectional(attribute)) {
|
|
83
|
-
createJoinTable(metadata, {
|
|
84
|
-
attribute,
|
|
85
|
-
attributeName,
|
|
86
|
-
meta,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else if (isOwner(attribute)) {
|
|
90
|
-
throw new Error('one side of a oneToMany cannot be the owner side in a bidirectional relation');
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Creates a manyToOne relation metadata
|
|
95
|
-
*
|
|
96
|
-
* if unidirectional then
|
|
97
|
-
* if with join table then
|
|
98
|
-
* create join table
|
|
99
|
-
* else
|
|
100
|
-
* create join column
|
|
101
|
-
* else
|
|
102
|
-
* must be the owner side
|
|
103
|
-
* if with join table then
|
|
104
|
-
* create join table
|
|
105
|
-
* else
|
|
106
|
-
* create join column
|
|
107
|
-
* set inverse attribute joinCol or joinTable info correctly
|
|
108
|
-
*
|
|
109
|
-
* @param {string} attributeName
|
|
110
|
-
* @param {Attribute} attribute
|
|
111
|
-
* @param {ModelMetadata} meta
|
|
112
|
-
* @param {Metadata} metadata
|
|
113
|
-
*/
|
|
114
|
-
const createManyToOne = (attributeName, attribute, meta, metadata) => {
|
|
115
|
-
if (isBidirectional(attribute) && !isOwner(attribute)) {
|
|
116
|
-
throw new Error('The many side of a manyToOne must be the owning side');
|
|
117
|
-
}
|
|
118
|
-
if (shouldUseJoinTable(attribute)) {
|
|
119
|
-
createJoinTable(metadata, {
|
|
120
|
-
attribute,
|
|
121
|
-
attributeName,
|
|
122
|
-
meta,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
createJoinColum(metadata, {
|
|
127
|
-
attribute,
|
|
128
|
-
attributeName,
|
|
129
|
-
meta,
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* Creates a manyToMany relation metadata
|
|
135
|
-
*
|
|
136
|
-
* if unidirectional
|
|
137
|
-
* create join table
|
|
138
|
-
* else
|
|
139
|
-
* if owner then
|
|
140
|
-
* if with join table then
|
|
141
|
-
* create join table
|
|
142
|
-
* else
|
|
143
|
-
* do nothing
|
|
144
|
-
*
|
|
145
|
-
* @param {string} attributeName
|
|
146
|
-
* @param {Attribute} attribute
|
|
147
|
-
* @param {ModelMetadata} meta
|
|
148
|
-
* @param {Metadata} metadata
|
|
149
|
-
*/
|
|
150
|
-
const createManyToMany = (attributeName, attribute, meta, metadata) => {
|
|
151
|
-
if (!isBidirectional(attribute) || isOwner(attribute)) {
|
|
152
|
-
createJoinTable(metadata, {
|
|
153
|
-
attribute,
|
|
154
|
-
attributeName,
|
|
155
|
-
meta,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* Creates a morphToOne relation metadata
|
|
161
|
-
*
|
|
162
|
-
* if with join table then
|
|
163
|
-
* create join table
|
|
164
|
-
* else
|
|
165
|
-
* create join columnsa
|
|
166
|
-
*
|
|
167
|
-
* if bidirectionnal
|
|
168
|
-
* set info in the traget
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
* @param {string} attributeName
|
|
172
|
-
* @param {Attribute} attribute
|
|
173
|
-
* @param {ModelMetadata} meta
|
|
174
|
-
* @param {Metadata} metadata
|
|
175
|
-
*/
|
|
176
|
-
const createMorphToOne = (attributeName, attribute /* meta, metadata */) => {
|
|
177
|
-
const idColumnName = 'target_id';
|
|
178
|
-
const typeColumnName = 'target_type';
|
|
179
|
-
Object.assign(attribute, {
|
|
180
|
-
owner: true,
|
|
181
|
-
morphColumn: {
|
|
182
|
-
// TODO: add referenced column
|
|
183
|
-
typeColumn: {
|
|
184
|
-
name: typeColumnName,
|
|
185
|
-
},
|
|
186
|
-
idColumn: {
|
|
187
|
-
name: idColumnName,
|
|
188
|
-
referencedColumn: 'id',
|
|
189
|
-
},
|
|
190
|
-
},
|
|
191
|
-
});
|
|
192
|
-
// TODO: implement bidirectional
|
|
193
|
-
};
|
|
194
|
-
/**
|
|
195
|
-
* Creates a morphToMany relation metadata
|
|
196
|
-
*
|
|
197
|
-
* @param {string} attributeName
|
|
198
|
-
* @param {Attribute} attribute
|
|
199
|
-
* @param {ModelMetadata} meta
|
|
200
|
-
* @param {Metadata} metadata
|
|
201
|
-
*/
|
|
202
|
-
const createMorphToMany = (attributeName, attribute, meta, metadata) => {
|
|
203
|
-
const joinTableName = fp_1.default.snakeCase(`${meta.tableName}_${attributeName}_morphs`);
|
|
204
|
-
const joinColumnName = fp_1.default.snakeCase(`${meta.singularName}_id`);
|
|
205
|
-
const morphColumnName = fp_1.default.snakeCase(`${attributeName}`);
|
|
206
|
-
const idColumnName = `${morphColumnName}_id`;
|
|
207
|
-
const typeColumnName = `${morphColumnName}_type`;
|
|
208
|
-
metadata.add({
|
|
209
|
-
uid: joinTableName,
|
|
210
|
-
tableName: joinTableName,
|
|
211
|
-
attributes: {
|
|
212
|
-
id: {
|
|
213
|
-
type: 'increments',
|
|
214
|
-
},
|
|
215
|
-
[joinColumnName]: {
|
|
216
|
-
type: 'integer',
|
|
217
|
-
column: {
|
|
218
|
-
unsigned: true,
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
|
-
[idColumnName]: {
|
|
222
|
-
type: 'integer',
|
|
223
|
-
column: {
|
|
224
|
-
unsigned: true,
|
|
225
|
-
},
|
|
226
|
-
},
|
|
227
|
-
[typeColumnName]: {
|
|
228
|
-
type: 'string',
|
|
229
|
-
},
|
|
230
|
-
field: {
|
|
231
|
-
type: 'string',
|
|
232
|
-
},
|
|
233
|
-
order: {
|
|
234
|
-
type: 'float',
|
|
235
|
-
column: {
|
|
236
|
-
unsigned: true,
|
|
237
|
-
},
|
|
238
|
-
},
|
|
239
|
-
},
|
|
240
|
-
indexes: [
|
|
241
|
-
{
|
|
242
|
-
name: `${joinTableName}_fk`,
|
|
243
|
-
columns: [joinColumnName],
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
name: `${joinTableName}_order_index`,
|
|
247
|
-
columns: ['order'],
|
|
248
|
-
type: null,
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
name: `${joinTableName}_id_column_index`,
|
|
252
|
-
columns: [idColumnName],
|
|
253
|
-
type: null,
|
|
254
|
-
},
|
|
255
|
-
],
|
|
256
|
-
foreignKeys: [
|
|
257
|
-
{
|
|
258
|
-
name: `${joinTableName}_fk`,
|
|
259
|
-
columns: [joinColumnName],
|
|
260
|
-
referencedColumns: ['id'],
|
|
261
|
-
referencedTable: meta.tableName,
|
|
262
|
-
onDelete: 'CASCADE',
|
|
263
|
-
},
|
|
264
|
-
],
|
|
265
|
-
});
|
|
266
|
-
const joinTable = {
|
|
267
|
-
name: joinTableName,
|
|
268
|
-
joinColumn: {
|
|
269
|
-
name: joinColumnName,
|
|
270
|
-
referencedColumn: 'id',
|
|
271
|
-
},
|
|
272
|
-
morphColumn: {
|
|
273
|
-
typeColumn: {
|
|
274
|
-
name: typeColumnName,
|
|
275
|
-
},
|
|
276
|
-
idColumn: {
|
|
277
|
-
name: idColumnName,
|
|
278
|
-
referencedColumn: 'id',
|
|
279
|
-
},
|
|
280
|
-
},
|
|
281
|
-
orderBy: {
|
|
282
|
-
order: 'asc',
|
|
283
|
-
},
|
|
284
|
-
pivotColumns: [joinColumnName, typeColumnName, idColumnName],
|
|
285
|
-
};
|
|
286
|
-
attribute.joinTable = joinTable;
|
|
287
|
-
};
|
|
288
|
-
/**
|
|
289
|
-
* Creates a morphOne relation metadata
|
|
290
|
-
*
|
|
291
|
-
* @param {string} attributeName
|
|
292
|
-
* @param {Attribute} attribute
|
|
293
|
-
* @param {ModelMetadata} meta
|
|
294
|
-
* @param {Metadata} metadata
|
|
295
|
-
*/
|
|
296
|
-
const createMorphOne = (attributeName, attribute, meta, metadata) => {
|
|
297
|
-
const targetMeta = metadata.get(attribute.target);
|
|
298
|
-
if (!targetMeta) {
|
|
299
|
-
throw new Error(`Morph target not found. Looking for ${attribute.target}`);
|
|
300
|
-
}
|
|
301
|
-
if (!fp_1.default.has(attribute.morphBy, targetMeta.attributes)) {
|
|
302
|
-
throw new Error(`Morph target attribute not found. Looking for ${attribute.morphBy}`);
|
|
303
|
-
}
|
|
304
|
-
};
|
|
305
|
-
/**
|
|
306
|
-
* Creates a morphMany relation metadata
|
|
307
|
-
*
|
|
308
|
-
* @param {string} attributeName
|
|
309
|
-
* @param {Attribute} attribute
|
|
310
|
-
* @param {ModelMetadata} meta
|
|
311
|
-
* @param {Metadata} metadata
|
|
312
|
-
*/
|
|
313
|
-
const createMorphMany = (attributeName, attribute, meta, metadata) => {
|
|
314
|
-
const targetMeta = metadata.get(attribute.target);
|
|
315
|
-
if (!targetMeta) {
|
|
316
|
-
throw new Error(`Morph target not found. Looking for ${attribute.target}`);
|
|
317
|
-
}
|
|
318
|
-
if (!fp_1.default.has(attribute.morphBy, targetMeta.attributes)) {
|
|
319
|
-
throw new Error(`Morph target attribute not found. Looking for ${attribute.morphBy}`);
|
|
320
|
-
}
|
|
321
|
-
};
|
|
322
|
-
/**
|
|
323
|
-
* Creates a relation metadata
|
|
324
|
-
*
|
|
325
|
-
* @param {string} attributeName
|
|
326
|
-
* @param {Attribute} attribute
|
|
327
|
-
* @param {ModelMetadata} meta
|
|
328
|
-
* @param {Metadata} metadata
|
|
329
|
-
*/
|
|
330
|
-
const createRelation = (attributeName, attribute, meta, metadata) => {
|
|
331
|
-
switch (attribute.relation) {
|
|
332
|
-
case 'oneToOne':
|
|
333
|
-
return createOneToOne(attributeName, attribute, meta, metadata);
|
|
334
|
-
case 'oneToMany':
|
|
335
|
-
return createOneToMany(attributeName, attribute, meta, metadata);
|
|
336
|
-
case 'manyToOne':
|
|
337
|
-
return createManyToOne(attributeName, attribute, meta, metadata);
|
|
338
|
-
case 'manyToMany':
|
|
339
|
-
return createManyToMany(attributeName, attribute, meta, metadata);
|
|
340
|
-
case 'morphToOne':
|
|
341
|
-
return createMorphToOne(attributeName, attribute, meta, metadata);
|
|
342
|
-
case 'morphToMany':
|
|
343
|
-
return createMorphToMany(attributeName, attribute, meta, metadata);
|
|
344
|
-
case 'morphOne':
|
|
345
|
-
return createMorphOne(attributeName, attribute, meta, metadata);
|
|
346
|
-
case 'morphMany':
|
|
347
|
-
return createMorphMany(attributeName, attribute, meta, metadata);
|
|
348
|
-
default: {
|
|
349
|
-
throw new Error(`Unknown relation ${attribute.relation}`);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
|
-
exports.createRelation = createRelation;
|
|
354
|
-
/**
|
|
355
|
-
* Creates a join column info and add them to the attribute meta
|
|
356
|
-
* @param {Object} metadata metadata registry
|
|
357
|
-
* @param {Object} param
|
|
358
|
-
* @param {Object} param.attribute associated attribute
|
|
359
|
-
* @param {string} param.attributeName name of the associated attribute
|
|
360
|
-
* @param {Object} param.meta model metadata
|
|
361
|
-
*/
|
|
362
|
-
const createJoinColum = (metadata, { attribute, attributeName /* meta */ }) => {
|
|
363
|
-
const targetMeta = metadata.get(attribute.target);
|
|
364
|
-
const joinColumnName = fp_1.default.snakeCase(`${attributeName}_id`);
|
|
365
|
-
const joinColumn = {
|
|
366
|
-
name: joinColumnName,
|
|
367
|
-
referencedColumn: 'id',
|
|
368
|
-
referencedTable: targetMeta.tableName,
|
|
369
|
-
};
|
|
370
|
-
Object.assign(attribute, { owner: true, joinColumn });
|
|
371
|
-
if (isBidirectional(attribute)) {
|
|
372
|
-
const inverseAttribute = targetMeta.attributes[attribute.inversedBy];
|
|
373
|
-
Object.assign(inverseAttribute, {
|
|
374
|
-
joinColumn: {
|
|
375
|
-
name: joinColumn.referencedColumn,
|
|
376
|
-
referencedColumn: joinColumn.name,
|
|
377
|
-
},
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
};
|
|
381
|
-
/**
|
|
382
|
-
* Creates a join table and add it to the attribute meta
|
|
383
|
-
* @param {Object} metadata metadata registry
|
|
384
|
-
* @param {Object} param
|
|
385
|
-
* @param {Object} param.attribute associated attribute
|
|
386
|
-
* @param {string} param.attributeName name of the associated attribute
|
|
387
|
-
* @param {Object} param.meta model metadata
|
|
388
|
-
*/
|
|
389
|
-
const createJoinTable = (metadata, { attributeName, attribute, meta }) => {
|
|
390
|
-
const targetMeta = metadata.get(attribute.target);
|
|
391
|
-
if (!targetMeta) {
|
|
392
|
-
throw new Error(`Unknown target ${attribute.target}`);
|
|
393
|
-
}
|
|
394
|
-
const joinTableName = getJoinTableName(meta.tableName, attributeName);
|
|
395
|
-
const joinColumnName = fp_1.default.snakeCase(`${meta.singularName}_id`);
|
|
396
|
-
let inverseJoinColumnName = fp_1.default.snakeCase(`${targetMeta.singularName}_id`);
|
|
397
|
-
// if relation is self referencing
|
|
398
|
-
if (joinColumnName === inverseJoinColumnName) {
|
|
399
|
-
inverseJoinColumnName = `inv_${inverseJoinColumnName}`;
|
|
400
|
-
}
|
|
401
|
-
const orderColumnName = fp_1.default.snakeCase(`${targetMeta.singularName}_order`);
|
|
402
|
-
let inverseOrderColumnName = fp_1.default.snakeCase(`${meta.singularName}_order`);
|
|
403
|
-
// if relation is self referencing
|
|
404
|
-
if (attribute.relation === 'manyToMany' && orderColumnName === inverseOrderColumnName) {
|
|
405
|
-
inverseOrderColumnName = `inv_${inverseOrderColumnName}`;
|
|
406
|
-
}
|
|
407
|
-
const metadataSchema = {
|
|
408
|
-
uid: joinTableName,
|
|
409
|
-
tableName: joinTableName,
|
|
410
|
-
attributes: {
|
|
411
|
-
id: {
|
|
412
|
-
type: 'increments',
|
|
413
|
-
},
|
|
414
|
-
[joinColumnName]: {
|
|
415
|
-
type: 'integer',
|
|
416
|
-
column: {
|
|
417
|
-
unsigned: true,
|
|
418
|
-
},
|
|
419
|
-
},
|
|
420
|
-
[inverseJoinColumnName]: {
|
|
421
|
-
type: 'integer',
|
|
422
|
-
column: {
|
|
423
|
-
unsigned: true,
|
|
424
|
-
},
|
|
425
|
-
},
|
|
426
|
-
// TODO: add extra pivot attributes -> user should use an intermediate entity
|
|
427
|
-
},
|
|
428
|
-
indexes: [
|
|
429
|
-
{
|
|
430
|
-
name: `${joinTableName}_fk`,
|
|
431
|
-
columns: [joinColumnName],
|
|
432
|
-
},
|
|
433
|
-
{
|
|
434
|
-
name: `${joinTableName}_inv_fk`,
|
|
435
|
-
columns: [inverseJoinColumnName],
|
|
436
|
-
},
|
|
437
|
-
{
|
|
438
|
-
name: `${joinTableName}_unique`,
|
|
439
|
-
columns: [joinColumnName, inverseJoinColumnName],
|
|
440
|
-
type: 'unique',
|
|
441
|
-
},
|
|
442
|
-
],
|
|
443
|
-
foreignKeys: [
|
|
444
|
-
{
|
|
445
|
-
name: `${joinTableName}_fk`,
|
|
446
|
-
columns: [joinColumnName],
|
|
447
|
-
referencedColumns: ['id'],
|
|
448
|
-
referencedTable: meta.tableName,
|
|
449
|
-
onDelete: 'CASCADE',
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
name: `${joinTableName}_inv_fk`,
|
|
453
|
-
columns: [inverseJoinColumnName],
|
|
454
|
-
referencedColumns: ['id'],
|
|
455
|
-
referencedTable: targetMeta.tableName,
|
|
456
|
-
onDelete: 'CASCADE',
|
|
457
|
-
},
|
|
458
|
-
],
|
|
459
|
-
};
|
|
460
|
-
const joinTable = {
|
|
461
|
-
name: joinTableName,
|
|
462
|
-
joinColumn: {
|
|
463
|
-
name: joinColumnName,
|
|
464
|
-
referencedColumn: 'id',
|
|
465
|
-
},
|
|
466
|
-
inverseJoinColumn: {
|
|
467
|
-
name: inverseJoinColumnName,
|
|
468
|
-
referencedColumn: 'id',
|
|
469
|
-
},
|
|
470
|
-
pivotColumns: [joinColumnName, inverseJoinColumnName],
|
|
471
|
-
};
|
|
472
|
-
// order
|
|
473
|
-
if (isAnyToMany(attribute)) {
|
|
474
|
-
metadataSchema.attributes[orderColumnName] = {
|
|
475
|
-
type: 'float',
|
|
476
|
-
column: {
|
|
477
|
-
unsigned: true,
|
|
478
|
-
defaultTo: null,
|
|
479
|
-
},
|
|
480
|
-
};
|
|
481
|
-
metadataSchema.indexes.push({
|
|
482
|
-
name: `${joinTableName}_order_fk`,
|
|
483
|
-
columns: [orderColumnName],
|
|
484
|
-
});
|
|
485
|
-
joinTable.orderColumnName = orderColumnName;
|
|
486
|
-
joinTable.orderBy = { [orderColumnName]: 'asc' };
|
|
487
|
-
}
|
|
488
|
-
// inv order
|
|
489
|
-
if (isBidirectional(attribute) && isManyToAny(attribute)) {
|
|
490
|
-
metadataSchema.attributes[inverseOrderColumnName] = {
|
|
491
|
-
type: 'float',
|
|
492
|
-
column: {
|
|
493
|
-
unsigned: true,
|
|
494
|
-
defaultTo: null,
|
|
495
|
-
},
|
|
496
|
-
};
|
|
497
|
-
metadataSchema.indexes.push({
|
|
498
|
-
name: `${joinTableName}_order_inv_fk`,
|
|
499
|
-
columns: [inverseOrderColumnName],
|
|
500
|
-
});
|
|
501
|
-
joinTable.inverseOrderColumnName = inverseOrderColumnName;
|
|
502
|
-
}
|
|
503
|
-
metadata.add(metadataSchema);
|
|
504
|
-
attribute.joinTable = joinTable;
|
|
505
|
-
if (isBidirectional(attribute)) {
|
|
506
|
-
const inverseAttribute = targetMeta.attributes[attribute.inversedBy];
|
|
507
|
-
if (!inverseAttribute) {
|
|
508
|
-
throw new Error(`inversedBy attribute ${attribute.inversedBy} not found target ${targetMeta.uid}`);
|
|
509
|
-
}
|
|
510
|
-
inverseAttribute.joinTable = {
|
|
511
|
-
name: joinTableName,
|
|
512
|
-
joinColumn: joinTable.inverseJoinColumn,
|
|
513
|
-
inverseJoinColumn: joinTable.joinColumn,
|
|
514
|
-
pivotColumns: joinTable.pivotColumns,
|
|
515
|
-
};
|
|
516
|
-
if (isManyToAny(attribute)) {
|
|
517
|
-
inverseAttribute.joinTable.orderColumnName = inverseOrderColumnName;
|
|
518
|
-
inverseAttribute.joinTable.orderBy = { [inverseOrderColumnName]: 'asc' };
|
|
519
|
-
}
|
|
520
|
-
if (isAnyToMany(attribute)) {
|
|
521
|
-
inverseAttribute.joinTable.inverseOrderColumnName = orderColumnName;
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
};
|
|
525
|
-
const hasOrderColumn = (attribute) => isAnyToMany(attribute);
|
|
526
|
-
exports.hasOrderColumn = hasOrderColumn;
|
|
527
|
-
const hasInverseOrderColumn = (attribute) => isBidirectional(attribute) && isManyToAny(attribute);
|
|
528
|
-
exports.hasInverseOrderColumn = hasInverseOrderColumn;
|
|
529
|
-
//# sourceMappingURL=relations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/metadata/relations.ts"],"names":[],"mappings":"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"}
|
package/dist/metadata/types.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export interface Attribute {
|
|
2
|
-
type: string;
|
|
3
|
-
columnName?: string;
|
|
4
|
-
column?: {
|
|
5
|
-
unsigned?: boolean;
|
|
6
|
-
defaultTo?: unknown;
|
|
7
|
-
};
|
|
8
|
-
required?: boolean;
|
|
9
|
-
unique?: boolean;
|
|
10
|
-
component?: string;
|
|
11
|
-
repeatable?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export interface Meta {
|
|
14
|
-
singularName?: string;
|
|
15
|
-
uid: string;
|
|
16
|
-
tableName: string;
|
|
17
|
-
attributes: Record<string, Attribute>;
|
|
18
|
-
indexes: Record<string, unknown>[];
|
|
19
|
-
foreignKeys?: Record<string, unknown>[];
|
|
20
|
-
lifecycles?: Record<string, unknown>;
|
|
21
|
-
columnToAttribute?: Record<string, string>;
|
|
22
|
-
componentLink?: Meta;
|
|
23
|
-
}
|
|
24
|
-
export interface ComponentLinkMeta extends Meta {
|
|
25
|
-
componentLink: Meta;
|
|
26
|
-
}
|
|
27
|
-
export interface Model {
|
|
28
|
-
uid: string;
|
|
29
|
-
tableName: string;
|
|
30
|
-
singularName: string;
|
|
31
|
-
attributes: Record<string, Attribute>;
|
|
32
|
-
lifecycles: Record<string, unknown>;
|
|
33
|
-
indexes: Record<string, unknown>[];
|
|
34
|
-
componentLink?: Meta;
|
|
35
|
-
columnToAttribute?: Record<string, string>;
|
|
36
|
-
foreignKeys?: Record<string, unknown>[];
|
|
37
|
-
}
|
|
38
|
-
export declare class Metadata extends Map<string, Meta> {
|
|
39
|
-
add(meta: Meta): this;
|
|
40
|
-
/**
|
|
41
|
-
* Validate the DB metadata, throwing an error if a duplicate DB table name is detected
|
|
42
|
-
*/
|
|
43
|
-
validate(): void;
|
|
44
|
-
}
|
package/dist/metadata/types.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Metadata = void 0;
|
|
4
|
-
class Metadata extends Map {
|
|
5
|
-
add(meta) {
|
|
6
|
-
return this.set(meta.uid, meta);
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Validate the DB metadata, throwing an error if a duplicate DB table name is detected
|
|
10
|
-
*/
|
|
11
|
-
validate() {
|
|
12
|
-
const seenTables = new Map();
|
|
13
|
-
for (const meta of this.values()) {
|
|
14
|
-
if (seenTables.get(meta.tableName)) {
|
|
15
|
-
throw new Error(`DB table "${meta.tableName}" already exists. Change the collectionName of the related content type.`);
|
|
16
|
-
}
|
|
17
|
-
seenTables.set(meta.tableName, true);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.Metadata = Metadata;
|
|
22
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/metadata/types.ts"],"names":[],"mappings":";;;AAyCA,MAAa,QAAS,SAAQ,GAAiB;IAC7C,GAAG,CAAC,IAAU;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAChC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAClC,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,CAAC,SAAS,0EAA0E,CACtG,CAAC;aACH;YACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SACtC;IACH,CAAC;CACF;AAnBD,4BAmBC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Database } from '..';
|
|
2
|
-
export interface MigrationProvider {
|
|
3
|
-
shouldRun(): Promise<boolean>;
|
|
4
|
-
up(): Promise<void>;
|
|
5
|
-
down(): Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Creates migrations provider
|
|
9
|
-
* @type {import('.').createMigrationsProvider}
|
|
10
|
-
*/
|
|
11
|
-
export declare const createMigrationsProvider: (db: Database) => MigrationProvider;
|