@strapi/database 5.48.0 → 5.49.0
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/dist/connection.js +5 -1
- package/dist/connection.js.map +1 -1
- package/dist/dialects/mysql/schema-inspector.d.ts +3 -0
- package/dist/dialects/mysql/schema-inspector.d.ts.map +1 -1
- package/dist/dialects/mysql/schema-inspector.js +145 -85
- package/dist/dialects/mysql/schema-inspector.js.map +1 -1
- package/dist/dialects/mysql/schema-inspector.mjs +145 -85
- package/dist/dialects/mysql/schema-inspector.mjs.map +1 -1
- package/dist/dialects/postgresql/schema-inspector.d.ts +3 -1
- package/dist/dialects/postgresql/schema-inspector.d.ts.map +1 -1
- package/dist/dialects/postgresql/schema-inspector.js +150 -109
- package/dist/dialects/postgresql/schema-inspector.js.map +1 -1
- package/dist/dialects/postgresql/schema-inspector.mjs +150 -109
- package/dist/dialects/postgresql/schema-inspector.mjs.map +1 -1
- package/dist/dialects/sqlite/index.js +8 -3
- package/dist/dialects/sqlite/index.js.map +1 -1
- package/dist/entity-manager/relations-orderer.js +5 -1
- package/dist/entity-manager/relations-orderer.js.map +1 -1
- package/dist/fields/datetime.js +3 -2
- package/dist/fields/datetime.js.map +1 -1
- package/dist/fields/index.js +5 -1
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/shared/parsers.js +3 -2
- package/dist/fields/shared/parsers.js.map +1 -1
- package/dist/fields/timestamp.js +3 -2
- package/dist/fields/timestamp.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycles/subscribers/timestamps.js +10 -6
- package/dist/lifecycles/subscribers/timestamps.js.map +1 -1
- package/dist/metadata/relations.js +6 -2
- package/dist/metadata/relations.js.map +1 -1
- package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.js +5 -1
- package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.js.map +1 -1
- package/dist/migrations/internal-migrations/5.0.0-06-add-document-id-indexes.d.ts +5 -0
- package/dist/migrations/internal-migrations/5.0.0-06-add-document-id-indexes.d.ts.map +1 -1
- package/dist/migrations/internal-migrations/5.0.0-06-add-document-id-indexes.js +7 -58
- package/dist/migrations/internal-migrations/5.0.0-06-add-document-id-indexes.js.map +1 -1
- package/dist/migrations/internal-migrations/5.0.0-06-add-document-id-indexes.mjs +7 -58
- package/dist/migrations/internal-migrations/5.0.0-06-add-document-id-indexes.mjs.map +1 -1
- package/dist/migrations/users.js +6 -2
- package/dist/migrations/users.js.map +1 -1
- package/dist/query/helpers/order-by.js +11 -7
- package/dist/query/helpers/order-by.js.map +1 -1
- package/dist/query/helpers/populate/apply.d.ts.map +1 -1
- package/dist/query/helpers/populate/apply.js +48 -47
- package/dist/query/helpers/populate/apply.js.map +1 -1
- package/dist/query/helpers/populate/apply.mjs +4 -7
- package/dist/query/helpers/populate/apply.mjs.map +1 -1
- package/dist/query/helpers/populate/process.js +7 -3
- package/dist/query/helpers/populate/process.js.map +1 -1
- package/dist/query/helpers/search.js +5 -1
- package/dist/query/helpers/search.js.map +1 -1
- package/dist/query/helpers/transform.js +10 -6
- package/dist/query/helpers/transform.js.map +1 -1
- package/dist/query/helpers/where.d.ts +1 -1
- package/dist/query/helpers/where.d.ts.map +1 -1
- package/dist/query/helpers/where.js.map +1 -1
- package/dist/query/helpers/where.mjs.map +1 -1
- package/dist/query/query-builder.js +30 -26
- package/dist/query/query-builder.js.map +1 -1
- package/dist/schema/builder.js +5 -1
- package/dist/schema/builder.js.map +1 -1
- package/dist/schema/diff.js +19 -15
- package/dist/schema/diff.js.map +1 -1
- package/dist/schema/index.js +5 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/storage.js +5 -1
- package/dist/schema/storage.js.map +1 -1
- package/dist/utils/identifiers/hash.js +5 -1
- package/dist/utils/identifiers/hash.js.map +1 -1
- package/dist/utils/identifiers/index.js +5 -1
- package/dist/utils/identifiers/index.js.map +1 -1
- package/dist/utils/knex.js +6 -1
- package/dist/utils/knex.js.map +1 -1
- package/package.json +5 -5
|
@@ -6,8 +6,9 @@ const SQL_QUERIES = {
|
|
|
6
6
|
WHERE table_type = 'BASE TABLE'
|
|
7
7
|
AND table_schema = schema();
|
|
8
8
|
`,
|
|
9
|
-
|
|
9
|
+
BULK_COLUMNS: /* sql */ `
|
|
10
10
|
SELECT
|
|
11
|
+
c.table_name as table_name,
|
|
11
12
|
c.data_type as data_type,
|
|
12
13
|
c.column_name as column_name,
|
|
13
14
|
c.character_maximum_length as character_maximum_length,
|
|
@@ -17,39 +18,41 @@ const SQL_QUERIES = {
|
|
|
17
18
|
c.column_key as column_key
|
|
18
19
|
FROM information_schema.columns c
|
|
19
20
|
WHERE table_schema = database()
|
|
20
|
-
AND table_name
|
|
21
|
+
AND table_name in (:tables);
|
|
21
22
|
`,
|
|
22
|
-
|
|
23
|
-
show index from ??;
|
|
24
|
-
`,
|
|
25
|
-
FOREIGN_KEY_LIST: /* sql */ `
|
|
23
|
+
BULK_INDEXES: /* sql */ `
|
|
26
24
|
SELECT
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
s.table_name as table_name,
|
|
26
|
+
s.index_name as key_name,
|
|
27
|
+
s.column_name as column_name,
|
|
28
|
+
s.non_unique as non_unique
|
|
29
|
+
FROM information_schema.statistics s
|
|
30
|
+
WHERE s.table_schema = database()
|
|
31
|
+
AND s.table_name in (:tables)
|
|
32
|
+
ORDER BY s.table_name, s.index_name, s.seq_in_index;
|
|
32
33
|
`,
|
|
33
|
-
|
|
34
|
+
BULK_FOREIGN_KEYS: /* sql */ `
|
|
34
35
|
SELECT
|
|
35
|
-
|
|
36
|
+
tc.table_name as table_name,
|
|
37
|
+
tc.constraint_name as constraint_name,
|
|
36
38
|
kcu.column_name as column_name,
|
|
37
39
|
kcu.referenced_table_name as referenced_table_name,
|
|
38
|
-
kcu.referenced_column_name as referenced_column_name
|
|
39
|
-
FROM information_schema.key_column_usage kcu
|
|
40
|
-
WHERE kcu.constraint_name in (?)
|
|
41
|
-
AND kcu.table_schema = database()
|
|
42
|
-
AND kcu.table_name = ?;
|
|
43
|
-
`,
|
|
44
|
-
FOREIGN_KEY_REFERENTIALS_CONSTRAINTS: /* sql */ `
|
|
45
|
-
SELECT
|
|
46
|
-
rc.constraint_name as constraint_name,
|
|
40
|
+
kcu.referenced_column_name as referenced_column_name,
|
|
47
41
|
rc.update_rule as on_update,
|
|
48
42
|
rc.delete_rule as on_delete
|
|
49
|
-
FROM information_schema.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
43
|
+
FROM information_schema.table_constraints tc
|
|
44
|
+
JOIN information_schema.key_column_usage kcu
|
|
45
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
46
|
+
AND tc.table_schema = kcu.table_schema
|
|
47
|
+
AND tc.table_name = kcu.table_name
|
|
48
|
+
JOIN information_schema.referential_constraints rc
|
|
49
|
+
ON tc.constraint_name = rc.constraint_name
|
|
50
|
+
AND tc.table_schema = rc.constraint_schema
|
|
51
|
+
AND tc.table_name = rc.table_name
|
|
52
|
+
WHERE tc.constraint_type = 'FOREIGN KEY'
|
|
53
|
+
AND tc.table_schema = database()
|
|
54
|
+
AND tc.table_name in (:tables)
|
|
55
|
+
ORDER BY tc.table_name, tc.constraint_name, kcu.ordinal_position;
|
|
53
56
|
`
|
|
54
57
|
};
|
|
55
58
|
const toStrapiType = (column)=>{
|
|
@@ -189,30 +192,38 @@ class MysqlSchemaInspector {
|
|
|
189
192
|
tables: []
|
|
190
193
|
};
|
|
191
194
|
const tables = await this.getTables();
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
if (tables.length === 0) {
|
|
196
|
+
return schema;
|
|
197
|
+
}
|
|
198
|
+
// Run 3 bulk queries in parallel instead of N+1 per-table queries
|
|
199
|
+
const [allColumns, allIndexes, allForeignKeys] = await Promise.all([
|
|
200
|
+
this.getBulkColumns(tables),
|
|
201
|
+
this.getBulkIndexes(tables),
|
|
202
|
+
this.getBulkForeignKeys(tables)
|
|
203
|
+
]);
|
|
204
|
+
schema.tables = tables.map((tableName)=>({
|
|
197
205
|
name: tableName,
|
|
198
|
-
columns,
|
|
199
|
-
indexes,
|
|
200
|
-
foreignKeys
|
|
201
|
-
};
|
|
202
|
-
}));
|
|
206
|
+
columns: allColumns.get(tableName) ?? [],
|
|
207
|
+
indexes: allIndexes.get(tableName) ?? [],
|
|
208
|
+
foreignKeys: allForeignKeys.get(tableName) ?? []
|
|
209
|
+
}));
|
|
203
210
|
return schema;
|
|
204
211
|
}
|
|
205
212
|
async getTables() {
|
|
206
213
|
const [rows] = await this.db.connection.raw(SQL_QUERIES.TABLE_LIST);
|
|
207
214
|
return rows.map((row)=>row.table_name);
|
|
208
215
|
}
|
|
209
|
-
async
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
216
|
+
async getBulkColumns(tableNames) {
|
|
217
|
+
if (tableNames.length === 0) {
|
|
218
|
+
return new Map();
|
|
219
|
+
}
|
|
220
|
+
const [rows] = await this.db.connection.raw(SQL_QUERIES.BULK_COLUMNS, {
|
|
221
|
+
tables: this.db.connection.raw(tableNames.map(()=>'?').join(', '), tableNames)
|
|
222
|
+
});
|
|
223
|
+
const result = new Map();
|
|
224
|
+
for (const row of rows){
|
|
214
225
|
const { type, args = [], ...rest } = toStrapiType(row);
|
|
215
|
-
|
|
226
|
+
const column = {
|
|
216
227
|
type,
|
|
217
228
|
args,
|
|
218
229
|
defaultTo: row.column_default,
|
|
@@ -221,70 +232,119 @@ class MysqlSchemaInspector {
|
|
|
221
232
|
unsigned: row.column_type.endsWith(' unsigned'),
|
|
222
233
|
...rest
|
|
223
234
|
};
|
|
224
|
-
|
|
235
|
+
const existing = result.get(row.table_name);
|
|
236
|
+
if (existing) {
|
|
237
|
+
existing.push(column);
|
|
238
|
+
} else {
|
|
239
|
+
result.set(row.table_name, [
|
|
240
|
+
column
|
|
241
|
+
]);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return result;
|
|
225
245
|
}
|
|
226
|
-
async
|
|
227
|
-
const
|
|
246
|
+
async getColumns(tableName) {
|
|
247
|
+
const result = await this.getBulkColumns([
|
|
228
248
|
tableName
|
|
229
249
|
]);
|
|
230
|
-
|
|
250
|
+
return result.get(tableName) ?? [];
|
|
251
|
+
}
|
|
252
|
+
async getBulkIndexes(tableNames) {
|
|
253
|
+
if (tableNames.length === 0) {
|
|
254
|
+
return new Map();
|
|
255
|
+
}
|
|
256
|
+
const [rows] = await this.db.connection.raw(SQL_QUERIES.BULK_INDEXES, {
|
|
257
|
+
tables: this.db.connection.raw(tableNames.map(()=>'?').join(', '), tableNames)
|
|
258
|
+
});
|
|
259
|
+
// Group by table, then by key_name
|
|
260
|
+
const byTable = new Map();
|
|
231
261
|
for (const index of rows){
|
|
232
|
-
if (index.
|
|
262
|
+
if (index.column_name === 'id') {
|
|
233
263
|
continue;
|
|
234
264
|
}
|
|
235
|
-
|
|
265
|
+
let tableIndexes = byTable.get(index.table_name);
|
|
266
|
+
if (!tableIndexes) {
|
|
267
|
+
tableIndexes = new Map();
|
|
268
|
+
byTable.set(index.table_name, tableIndexes);
|
|
269
|
+
}
|
|
270
|
+
const existing = tableIndexes.get(index.key_name);
|
|
271
|
+
if (existing) {
|
|
272
|
+
existing.columns.push(index.column_name);
|
|
273
|
+
} else {
|
|
236
274
|
const indexInfo = {
|
|
237
275
|
columns: [
|
|
238
|
-
index.
|
|
276
|
+
index.column_name
|
|
239
277
|
],
|
|
240
|
-
name: index.
|
|
278
|
+
name: index.key_name
|
|
241
279
|
};
|
|
242
|
-
if (!index.
|
|
280
|
+
if (!index.non_unique || index.non_unique === '0') {
|
|
243
281
|
indexInfo.type = 'unique';
|
|
244
282
|
}
|
|
245
|
-
|
|
246
|
-
} else {
|
|
247
|
-
ret[index.Key_name].columns.push(index.Column_name);
|
|
283
|
+
tableIndexes.set(index.key_name, indexInfo);
|
|
248
284
|
}
|
|
249
285
|
}
|
|
250
|
-
|
|
286
|
+
const result = new Map();
|
|
287
|
+
for (const [tableName, tableIndexes] of byTable){
|
|
288
|
+
result.set(tableName, Array.from(tableIndexes.values()));
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
251
291
|
}
|
|
252
|
-
async
|
|
253
|
-
const
|
|
292
|
+
async getIndexes(tableName) {
|
|
293
|
+
const result = await this.getBulkIndexes([
|
|
254
294
|
tableName
|
|
255
295
|
]);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
referencedColumns: [],
|
|
262
|
-
referencedTable: null,
|
|
263
|
-
onUpdate: null,
|
|
264
|
-
onDelete: null
|
|
265
|
-
};
|
|
296
|
+
return result.get(tableName) ?? [];
|
|
297
|
+
}
|
|
298
|
+
async getBulkForeignKeys(tableNames) {
|
|
299
|
+
if (tableNames.length === 0) {
|
|
300
|
+
return new Map();
|
|
266
301
|
}
|
|
267
|
-
const
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
302
|
+
const [rows] = await this.db.connection.raw(SQL_QUERIES.BULK_FOREIGN_KEYS, {
|
|
303
|
+
tables: this.db.connection.raw(tableNames.map(()=>'?').join(', '), tableNames)
|
|
304
|
+
});
|
|
305
|
+
// Group by table_name, then by constraint_name
|
|
306
|
+
const byTable = new Map();
|
|
307
|
+
for (const row of rows){
|
|
308
|
+
let tableFKs = byTable.get(row.table_name);
|
|
309
|
+
if (!tableFKs) {
|
|
310
|
+
tableFKs = new Map();
|
|
311
|
+
byTable.set(row.table_name, tableFKs);
|
|
277
312
|
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
313
|
+
let fk = tableFKs.get(row.constraint_name);
|
|
314
|
+
if (!fk) {
|
|
315
|
+
fk = {
|
|
316
|
+
name: row.constraint_name,
|
|
317
|
+
columns: [
|
|
318
|
+
row.column_name
|
|
319
|
+
],
|
|
320
|
+
referencedColumns: row.referenced_column_name ? [
|
|
321
|
+
row.referenced_column_name
|
|
322
|
+
] : [],
|
|
323
|
+
referencedTable: row.referenced_table_name,
|
|
324
|
+
onUpdate: row.on_update?.toUpperCase() ?? null,
|
|
325
|
+
onDelete: row.on_delete?.toUpperCase() ?? null
|
|
326
|
+
};
|
|
327
|
+
tableFKs.set(row.constraint_name, fk);
|
|
328
|
+
} else {
|
|
329
|
+
if (!fk.columns.includes(row.column_name)) {
|
|
330
|
+
fk.columns.push(row.column_name);
|
|
331
|
+
}
|
|
332
|
+
if (row.referenced_column_name && !fk.referencedColumns.includes(row.referenced_column_name)) {
|
|
333
|
+
fk.referencedColumns.push(row.referenced_column_name);
|
|
334
|
+
}
|
|
285
335
|
}
|
|
286
336
|
}
|
|
287
|
-
|
|
337
|
+
const result = new Map();
|
|
338
|
+
for (const [tableName, tableFKs] of byTable){
|
|
339
|
+
result.set(tableName, Array.from(tableFKs.values()));
|
|
340
|
+
}
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
343
|
+
async getForeignKeys(tableName) {
|
|
344
|
+
const result = await this.getBulkForeignKeys([
|
|
345
|
+
tableName
|
|
346
|
+
]);
|
|
347
|
+
return result.get(tableName) ?? [];
|
|
288
348
|
}
|
|
289
349
|
constructor(db){
|
|
290
350
|
this.db = db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-inspector.mjs","sources":["../../../src/dialects/mysql/schema-inspector.ts"],"sourcesContent":["import type { Column, ForeignKey, Index, Schema } from '../../schema/types';\nimport type { SchemaInspector } from '../dialect';\nimport type { Database } from '../..';\n\ninterface RawTable {\n table_name: string;\n}\n\ninterface RawColumn {\n data_type: string;\n column_name: string;\n character_maximum_length: number;\n column_default: string;\n is_nullable: string;\n column_type: string;\n column_key: string;\n}\n\ninterface RawIndex {\n Key_name: string;\n Column_name: string;\n Non_unique: boolean | string;\n}\n\ninterface RawForeignKey {\n constraint_name: string;\n}\n\nconst SQL_QUERIES = {\n TABLE_LIST: /* sql */ `\n SELECT\n t.table_name as table_name\n FROM information_schema.tables t\n WHERE table_type = 'BASE TABLE'\n AND table_schema = schema();\n `,\n LIST_COLUMNS: /* sql */ `\n SELECT\n c.data_type as data_type,\n c.column_name as column_name,\n c.character_maximum_length as character_maximum_length,\n c.column_default as column_default,\n c.is_nullable as is_nullable,\n c.column_type as column_type,\n c.column_key as column_key\n FROM information_schema.columns c\n WHERE table_schema = database()\n AND table_name = ?;\n `,\n INDEX_LIST: /* sql */ `\n show index from ??;\n `,\n FOREIGN_KEY_LIST: /* sql */ `\n SELECT\n tc.constraint_name as constraint_name\n FROM information_schema.table_constraints tc\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_schema = database()\n AND tc.table_name = ?;\n `,\n FOREIGN_KEY_REFERENCES: /* sql */ `\n SELECT\n kcu.constraint_name as constraint_name,\n kcu.column_name as column_name,\n kcu.referenced_table_name as referenced_table_name,\n kcu.referenced_column_name as referenced_column_name\n FROM information_schema.key_column_usage kcu\n WHERE kcu.constraint_name in (?)\n AND kcu.table_schema = database()\n AND kcu.table_name = ?;\n `,\n FOREIGN_KEY_REFERENTIALS_CONSTRAINTS: /* sql */ `\n SELECT\n rc.constraint_name as constraint_name,\n rc.update_rule as on_update,\n rc.delete_rule as on_delete\n FROM information_schema.referential_constraints AS rc\n WHERE rc.constraint_name in (?)\n AND rc.constraint_schema = database()\n AND rc.table_name = ?;\n `,\n};\n\nconst toStrapiType = (column: RawColumn) => {\n const rootType = column.data_type.toLowerCase().match(/[^(), ]+/)?.[0];\n\n switch (rootType) {\n case 'int': {\n if (column.column_key === 'PRI') {\n return { type: 'increments', args: [{ primary: true, primaryKey: true }], unsigned: false };\n }\n\n return { type: 'integer' };\n }\n case 'decimal': {\n return { type: 'decimal', args: [10, 2] };\n }\n case 'double': {\n return { type: 'double' };\n }\n case 'bigint': {\n return { type: 'bigInteger' };\n }\n case 'enum': {\n return { type: 'string' };\n }\n case 'tinyint': {\n return { type: 'boolean' };\n }\n case 'longtext': {\n return { type: 'text', args: ['longtext'] };\n }\n case 'varchar': {\n return { type: 'string', args: [column.character_maximum_length] };\n }\n case 'datetime': {\n return { type: 'datetime', args: [{ useTz: false, precision: 6 }] };\n }\n case 'date': {\n return { type: 'date' };\n }\n case 'time': {\n return { type: 'time', args: [{ precision: 3 }] };\n }\n case 'timestamp': {\n return { type: 'timestamp', args: [{ useTz: false, precision: 6 }] };\n }\n case 'json': {\n return { type: 'jsonb' };\n }\n default: {\n return { type: 'specificType', args: [column.data_type] };\n }\n }\n};\n\nexport default class MysqlSchemaInspector implements SchemaInspector {\n db: Database;\n\n constructor(db: Database) {\n this.db = db;\n }\n\n async getSchema() {\n const schema: Schema = { tables: [] };\n\n const tables = await this.getTables();\n\n schema.tables = await Promise.all(\n tables.map(async (tableName) => {\n const columns = await this.getColumns(tableName);\n const indexes = await this.getIndexes(tableName);\n const foreignKeys = await this.getForeignKeys(tableName);\n\n return {\n name: tableName,\n columns,\n indexes,\n foreignKeys,\n };\n })\n );\n\n return schema;\n }\n\n async getTables(): Promise<string[]> {\n const [rows] = await this.db.connection.raw<[RawTable[]]>(SQL_QUERIES.TABLE_LIST);\n\n return rows.map((row) => row.table_name);\n }\n\n async getColumns(tableName: string): Promise<Column[]> {\n const [rows] = await this.db.connection.raw<[RawColumn[]]>(SQL_QUERIES.LIST_COLUMNS, [\n tableName,\n ]);\n\n return rows.map((row) => {\n const { type, args = [], ...rest } = toStrapiType(row);\n\n return {\n type,\n args,\n defaultTo: row.column_default,\n name: row.column_name,\n notNullable: row.is_nullable === 'NO',\n unsigned: row.column_type.endsWith(' unsigned'),\n ...rest,\n };\n });\n }\n\n async getIndexes(tableName: string): Promise<Index[]> {\n const [rows] = await this.db.connection.raw<[RawIndex[]]>(SQL_QUERIES.INDEX_LIST, [tableName]);\n\n const ret: Record<RawIndex['Key_name'], Index> = {};\n\n for (const index of rows) {\n if (index.Column_name === 'id') {\n continue;\n }\n\n if (!ret[index.Key_name]) {\n const indexInfo: Index = {\n columns: [index.Column_name],\n name: index.Key_name,\n };\n if (!index.Non_unique || index.Non_unique === '0') {\n indexInfo.type = 'unique';\n }\n\n ret[index.Key_name] = indexInfo;\n } else {\n ret[index.Key_name].columns.push(index.Column_name);\n }\n }\n\n return Object.values(ret);\n }\n\n async getForeignKeys(tableName: string): Promise<ForeignKey[]> {\n const [rows] = await this.db.connection.raw<[RawForeignKey[]]>(SQL_QUERIES.FOREIGN_KEY_LIST, [\n tableName,\n ]);\n\n const ret: Record<RawForeignKey['constraint_name'], ForeignKey> = {};\n\n for (const fk of rows) {\n ret[fk.constraint_name] = {\n name: fk.constraint_name,\n columns: [],\n referencedColumns: [],\n referencedTable: null,\n onUpdate: null,\n onDelete: null,\n } as unknown as ForeignKey;\n }\n\n const contraintNames = Object.keys(ret);\n\n if (contraintNames.length > 0) {\n const [fkReferences] = await this.db.connection.raw(SQL_QUERIES.FOREIGN_KEY_REFERENCES, [\n contraintNames,\n tableName,\n ]);\n\n for (const fkReference of fkReferences) {\n ret[fkReference.constraint_name].referencedTable = fkReference.referenced_table_name;\n ret[fkReference.constraint_name].columns.push(fkReference.column_name);\n ret[fkReference.constraint_name].referencedColumns.push(fkReference.referenced_column_name);\n }\n\n const [fkReferentialConstraints] = await this.db.connection.raw(\n SQL_QUERIES.FOREIGN_KEY_REFERENTIALS_CONSTRAINTS,\n [contraintNames, tableName]\n );\n\n for (const fkReferentialConstraint of fkReferentialConstraints) {\n ret[fkReferentialConstraint.constraint_name].onUpdate =\n fkReferentialConstraint.on_update.toUpperCase();\n ret[fkReferentialConstraint.constraint_name].onDelete =\n fkReferentialConstraint.on_delete.toUpperCase();\n }\n }\n\n return Object.values(ret);\n }\n}\n"],"names":["SQL_QUERIES","TABLE_LIST","LIST_COLUMNS","INDEX_LIST","FOREIGN_KEY_LIST","FOREIGN_KEY_REFERENCES","FOREIGN_KEY_REFERENTIALS_CONSTRAINTS","toStrapiType","column","rootType","data_type","toLowerCase","match","column_key","type","args","primary","primaryKey","unsigned","character_maximum_length","useTz","precision","MysqlSchemaInspector","getSchema","schema","tables","getTables","Promise","all","map","tableName","columns","getColumns","indexes","getIndexes","foreignKeys","getForeignKeys","name","rows","db","connection","raw","row","table_name","rest","defaultTo","column_default","column_name","notNullable","is_nullable","column_type","endsWith","ret","index","Column_name","Key_name","indexInfo","Non_unique","push","Object","values","fk","constraint_name","referencedColumns","referencedTable","onUpdate","onDelete","contraintNames","keys","length","fkReferences","fkReference","referenced_table_name","referenced_column_name","fkReferentialConstraints","fkReferentialConstraint","on_update","toUpperCase","on_delete"],"mappings":"AA4BA,MAAMA,WAAAA,GAAc;IAClBC,UAAAA,YAAsB;;;;;;EAMtB,CAAC;IACDC,YAAAA,YAAwB;;;;;;;;;;;;EAYxB,CAAC;IACDC,UAAAA,YAAsB;;EAEtB,CAAC;IACDC,gBAAAA,YAA4B;;;;;;;EAO5B,CAAC;IACDC,sBAAAA,YAAkC;;;;;;;;;;EAUlC,CAAC;IACDC,oCAAAA,YAAgD;;;;;;;;;EAShD;AACF,CAAA;AAEA,MAAMC,eAAe,CAACC,MAAAA,GAAAA;IACpB,MAAMC,QAAAA,GAAWD,MAAAA,CAAOE,SAAS,CAACC,WAAW,GAAGC,KAAK,CAAC,UAAA,CAAA,GAAc,CAAA,CAAE;IAEtE,OAAQH,QAAAA;QACN,KAAK,KAAA;AAAO,YAAA;gBACV,IAAID,MAAAA,CAAOK,UAAU,KAAK,KAAA,EAAO;oBAC/B,OAAO;wBAAEC,IAAAA,EAAM,YAAA;wBAAcC,IAAAA,EAAM;AAAC,4BAAA;gCAAEC,OAAAA,EAAS,IAAA;gCAAMC,UAAAA,EAAY;AAAK;AAAE,yBAAA;wBAAEC,QAAAA,EAAU;AAAM,qBAAA;AAC5F,gBAAA;gBAEA,OAAO;oBAAEJ,IAAAA,EAAM;AAAU,iBAAA;AAC3B,YAAA;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;oBAAEA,IAAAA,EAAM,SAAA;oBAAWC,IAAAA,EAAM;AAAC,wBAAA,EAAA;AAAI,wBAAA;AAAE;AAAC,iBAAA;AAC1C,YAAA;QACA,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;oBAAED,IAAAA,EAAM;AAAS,iBAAA;AAC1B,YAAA;QACA,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;oBAAEA,IAAAA,EAAM;AAAa,iBAAA;AAC9B,YAAA;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;oBAAEA,IAAAA,EAAM;AAAS,iBAAA;AAC1B,YAAA;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;oBAAEA,IAAAA,EAAM;AAAU,iBAAA;AAC3B,YAAA;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,OAAO;oBAAEA,IAAAA,EAAM,MAAA;oBAAQC,IAAAA,EAAM;AAAC,wBAAA;AAAW;AAAC,iBAAA;AAC5C,YAAA;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;oBAAED,IAAAA,EAAM,QAAA;oBAAUC,IAAAA,EAAM;AAACP,wBAAAA,MAAAA,CAAOW;AAAyB;AAAC,iBAAA;AACnE,YAAA;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,OAAO;oBAAEL,IAAAA,EAAM,UAAA;oBAAYC,IAAAA,EAAM;AAAC,wBAAA;4BAAEK,KAAAA,EAAO,KAAA;4BAAOC,SAAAA,EAAW;AAAE;AAAE;AAAC,iBAAA;AACpE,YAAA;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;oBAAEP,IAAAA,EAAM;AAAO,iBAAA;AACxB,YAAA;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;oBAAEA,IAAAA,EAAM,MAAA;oBAAQC,IAAAA,EAAM;AAAC,wBAAA;4BAAEM,SAAAA,EAAW;AAAE;AAAE;AAAC,iBAAA;AAClD,YAAA;QACA,KAAK,WAAA;AAAa,YAAA;gBAChB,OAAO;oBAAEP,IAAAA,EAAM,WAAA;oBAAaC,IAAAA,EAAM;AAAC,wBAAA;4BAAEK,KAAAA,EAAO,KAAA;4BAAOC,SAAAA,EAAW;AAAE;AAAE;AAAC,iBAAA;AACrE,YAAA;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;oBAAEP,IAAAA,EAAM;AAAQ,iBAAA;AACzB,YAAA;AACA,QAAA;AAAS,YAAA;gBACP,OAAO;oBAAEA,IAAAA,EAAM,cAAA;oBAAgBC,IAAAA,EAAM;AAACP,wBAAAA,MAAAA,CAAOE;AAAU;AAAC,iBAAA;AAC1D,YAAA;AACF;AACF,CAAA;AAEe,MAAMY,oBAAAA,CAAAA;AAOnB,IAAA,MAAMC,SAAAA,GAAY;AAChB,QAAA,MAAMC,MAAAA,GAAiB;AAAEC,YAAAA,MAAAA,EAAQ;AAAG,SAAA;AAEpC,QAAA,MAAMA,MAAAA,GAAS,MAAM,IAAI,CAACC,SAAS,EAAA;QAEnCF,MAAAA,CAAOC,MAAM,GAAG,MAAME,OAAAA,CAAQC,GAAG,CAC/BH,MAAAA,CAAOI,GAAG,CAAC,OAAOC,SAAAA,GAAAA;AAChB,YAAA,MAAMC,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,CAACF,SAAAA,CAAAA;AACtC,YAAA,MAAMG,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,CAACJ,SAAAA,CAAAA;AACtC,YAAA,MAAMK,WAAAA,GAAc,MAAM,IAAI,CAACC,cAAc,CAACN,SAAAA,CAAAA;YAE9C,OAAO;gBACLO,IAAAA,EAAMP,SAAAA;AACNC,gBAAAA,OAAAA;AACAE,gBAAAA,OAAAA;AACAE,gBAAAA;AACF,aAAA;AACF,QAAA,CAAA,CAAA,CAAA;QAGF,OAAOX,MAAAA;AACT,IAAA;AAEA,IAAA,MAAME,SAAAA,GAA+B;AACnC,QAAA,MAAM,CAACY,IAAAA,CAAK,GAAG,MAAM,IAAI,CAACC,EAAE,CAACC,UAAU,CAACC,GAAG,CAAezC,YAAYC,UAAU,CAAA;AAEhF,QAAA,OAAOqC,KAAKT,GAAG,CAAC,CAACa,GAAAA,GAAQA,IAAIC,UAAU,CAAA;AACzC,IAAA;IAEA,MAAMX,UAAAA,CAAWF,SAAiB,EAAqB;AACrD,QAAA,MAAM,CAACQ,IAAAA,CAAK,GAAG,MAAM,IAAI,CAACC,EAAE,CAACC,UAAU,CAACC,GAAG,CAAgBzC,WAAAA,CAAYE,YAAY,EAAE;AACnF4B,YAAAA;AACD,SAAA,CAAA;QAED,OAAOQ,IAAAA,CAAKT,GAAG,CAAC,CAACa,GAAAA,GAAAA;YACf,MAAM,EAAE5B,IAAI,EAAEC,IAAAA,GAAO,EAAE,EAAE,GAAG6B,IAAAA,EAAM,GAAGrC,YAAAA,CAAamC,GAAAA,CAAAA;YAElD,OAAO;AACL5B,gBAAAA,IAAAA;AACAC,gBAAAA,IAAAA;AACA8B,gBAAAA,SAAAA,EAAWH,IAAII,cAAc;AAC7BT,gBAAAA,IAAAA,EAAMK,IAAIK,WAAW;gBACrBC,WAAAA,EAAaN,GAAAA,CAAIO,WAAW,KAAK,IAAA;AACjC/B,gBAAAA,QAAAA,EAAUwB,GAAAA,CAAIQ,WAAW,CAACC,QAAQ,CAAC,WAAA,CAAA;AACnC,gBAAA,GAAGP;AACL,aAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;IAEA,MAAMV,UAAAA,CAAWJ,SAAiB,EAAoB;AACpD,QAAA,MAAM,CAACQ,IAAAA,CAAK,GAAG,MAAM,IAAI,CAACC,EAAE,CAACC,UAAU,CAACC,GAAG,CAAezC,WAAAA,CAAYG,UAAU,EAAE;AAAC2B,YAAAA;AAAU,SAAA,CAAA;AAE7F,QAAA,MAAMsB,MAA2C,EAAC;QAElD,KAAK,MAAMC,SAASf,IAAAA,CAAM;YACxB,IAAIe,KAAAA,CAAMC,WAAW,KAAK,IAAA,EAAM;AAC9B,gBAAA;AACF,YAAA;AAEA,YAAA,IAAI,CAACF,GAAG,CAACC,KAAAA,CAAME,QAAQ,CAAC,EAAE;AACxB,gBAAA,MAAMC,SAAAA,GAAmB;oBACvBzB,OAAAA,EAAS;AAACsB,wBAAAA,KAAAA,CAAMC;AAAY,qBAAA;AAC5BjB,oBAAAA,IAAAA,EAAMgB,MAAME;AACd,iBAAA;AACA,gBAAA,IAAI,CAACF,KAAAA,CAAMI,UAAU,IAAIJ,KAAAA,CAAMI,UAAU,KAAK,GAAA,EAAK;AACjDD,oBAAAA,SAAAA,CAAU1C,IAAI,GAAG,QAAA;AACnB,gBAAA;AAEAsC,gBAAAA,GAAG,CAACC,KAAAA,CAAME,QAAQ,CAAC,GAAGC,SAAAA;YACxB,CAAA,MAAO;gBACLJ,GAAG,CAACC,KAAAA,CAAME,QAAQ,CAAC,CAACxB,OAAO,CAAC2B,IAAI,CAACL,KAAAA,CAAMC,WAAW,CAAA;AACpD,YAAA;AACF,QAAA;QAEA,OAAOK,MAAAA,CAAOC,MAAM,CAACR,GAAAA,CAAAA;AACvB,IAAA;IAEA,MAAMhB,cAAAA,CAAeN,SAAiB,EAAyB;AAC7D,QAAA,MAAM,CAACQ,IAAAA,CAAK,GAAG,MAAM,IAAI,CAACC,EAAE,CAACC,UAAU,CAACC,GAAG,CAAoBzC,WAAAA,CAAYI,gBAAgB,EAAE;AAC3F0B,YAAAA;AACD,SAAA,CAAA;AAED,QAAA,MAAMsB,MAA4D,EAAC;QAEnE,KAAK,MAAMS,MAAMvB,IAAAA,CAAM;AACrBc,YAAAA,GAAG,CAACS,EAAAA,CAAGC,eAAe,CAAC,GAAG;AACxBzB,gBAAAA,IAAAA,EAAMwB,GAAGC,eAAe;AACxB/B,gBAAAA,OAAAA,EAAS,EAAE;AACXgC,gBAAAA,iBAAAA,EAAmB,EAAE;gBACrBC,eAAAA,EAAiB,IAAA;gBACjBC,QAAAA,EAAU,IAAA;gBACVC,QAAAA,EAAU;AACZ,aAAA;AACF,QAAA;QAEA,MAAMC,cAAAA,GAAiBR,MAAAA,CAAOS,IAAI,CAAChB,GAAAA,CAAAA;QAEnC,IAAIe,cAAAA,CAAeE,MAAM,GAAG,CAAA,EAAG;AAC7B,YAAA,MAAM,CAACC,YAAAA,CAAa,GAAG,MAAM,IAAI,CAAC/B,EAAE,CAACC,UAAU,CAACC,GAAG,CAACzC,WAAAA,CAAYK,sBAAsB,EAAE;AACtF8D,gBAAAA,cAAAA;AACArC,gBAAAA;AACD,aAAA,CAAA;YAED,KAAK,MAAMyC,eAAeD,YAAAA,CAAc;gBACtClB,GAAG,CAACmB,YAAYT,eAAe,CAAC,CAACE,eAAe,GAAGO,YAAYC,qBAAqB;gBACpFpB,GAAG,CAACmB,WAAAA,CAAYT,eAAe,CAAC,CAAC/B,OAAO,CAAC2B,IAAI,CAACa,WAAAA,CAAYxB,WAAW,CAAA;gBACrEK,GAAG,CAACmB,WAAAA,CAAYT,eAAe,CAAC,CAACC,iBAAiB,CAACL,IAAI,CAACa,WAAAA,CAAYE,sBAAsB,CAAA;AAC5F,YAAA;AAEA,YAAA,MAAM,CAACC,wBAAAA,CAAyB,GAAG,MAAM,IAAI,CAACnC,EAAE,CAACC,UAAU,CAACC,GAAG,CAC7DzC,WAAAA,CAAYM,oCAAoC,EAChD;AAAC6D,gBAAAA,cAAAA;AAAgBrC,gBAAAA;AAAU,aAAA,CAAA;YAG7B,KAAK,MAAM6C,2BAA2BD,wBAAAA,CAA0B;gBAC9DtB,GAAG,CAACuB,uBAAAA,CAAwBb,eAAe,CAAC,CAACG,QAAQ,GACnDU,uBAAAA,CAAwBC,SAAS,CAACC,WAAW,EAAA;gBAC/CzB,GAAG,CAACuB,uBAAAA,CAAwBb,eAAe,CAAC,CAACI,QAAQ,GACnDS,uBAAAA,CAAwBG,SAAS,CAACD,WAAW,EAAA;AACjD,YAAA;AACF,QAAA;QAEA,OAAOlB,MAAAA,CAAOC,MAAM,CAACR,GAAAA,CAAAA;AACvB,IAAA;AA/HA,IAAA,WAAA,CAAYb,EAAY,CAAE;QACxB,IAAI,CAACA,EAAE,GAAGA,EAAAA;AACZ,IAAA;AA8HF;;;;"}
|
|
1
|
+
{"version":3,"file":"schema-inspector.mjs","sources":["../../../src/dialects/mysql/schema-inspector.ts"],"sourcesContent":["import type { Column, ForeignKey, Index, Schema } from '../../schema/types';\nimport type { SchemaInspector } from '../dialect';\nimport type { Database } from '../..';\n\ninterface RawTable {\n table_name: string;\n}\n\ninterface RawColumn {\n table_name: string;\n data_type: string;\n column_name: string;\n character_maximum_length: number;\n column_default: string;\n is_nullable: string;\n column_type: string;\n column_key: string;\n}\n\ninterface RawIndex {\n table_name: string;\n key_name: string;\n column_name: string;\n non_unique: number | string;\n}\n\ninterface RawForeignKey {\n table_name: string;\n constraint_name: string;\n column_name: string;\n referenced_table_name: string | null;\n referenced_column_name: string | null;\n on_update: string;\n on_delete: string;\n}\n\nconst SQL_QUERIES = {\n TABLE_LIST: /* sql */ `\n SELECT\n t.table_name as table_name\n FROM information_schema.tables t\n WHERE table_type = 'BASE TABLE'\n AND table_schema = schema();\n `,\n BULK_COLUMNS: /* sql */ `\n SELECT\n c.table_name as table_name,\n c.data_type as data_type,\n c.column_name as column_name,\n c.character_maximum_length as character_maximum_length,\n c.column_default as column_default,\n c.is_nullable as is_nullable,\n c.column_type as column_type,\n c.column_key as column_key\n FROM information_schema.columns c\n WHERE table_schema = database()\n AND table_name in (:tables);\n `,\n BULK_INDEXES: /* sql */ `\n SELECT\n s.table_name as table_name,\n s.index_name as key_name,\n s.column_name as column_name,\n s.non_unique as non_unique\n FROM information_schema.statistics s\n WHERE s.table_schema = database()\n AND s.table_name in (:tables)\n ORDER BY s.table_name, s.index_name, s.seq_in_index;\n `,\n BULK_FOREIGN_KEYS: /* sql */ `\n SELECT\n tc.table_name as table_name,\n tc.constraint_name as constraint_name,\n kcu.column_name as column_name,\n kcu.referenced_table_name as referenced_table_name,\n kcu.referenced_column_name as referenced_column_name,\n rc.update_rule as on_update,\n rc.delete_rule as on_delete\n FROM information_schema.table_constraints tc\n JOIN information_schema.key_column_usage kcu\n ON tc.constraint_name = kcu.constraint_name\n AND tc.table_schema = kcu.table_schema\n AND tc.table_name = kcu.table_name\n JOIN information_schema.referential_constraints rc\n ON tc.constraint_name = rc.constraint_name\n AND tc.table_schema = rc.constraint_schema\n AND tc.table_name = rc.table_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_schema = database()\n AND tc.table_name in (:tables)\n ORDER BY tc.table_name, tc.constraint_name, kcu.ordinal_position;\n `,\n};\n\nconst toStrapiType = (column: RawColumn) => {\n const rootType = column.data_type.toLowerCase().match(/[^(), ]+/)?.[0];\n\n switch (rootType) {\n case 'int': {\n if (column.column_key === 'PRI') {\n return { type: 'increments', args: [{ primary: true, primaryKey: true }], unsigned: false };\n }\n\n return { type: 'integer' };\n }\n case 'decimal': {\n return { type: 'decimal', args: [10, 2] };\n }\n case 'double': {\n return { type: 'double' };\n }\n case 'bigint': {\n return { type: 'bigInteger' };\n }\n case 'enum': {\n return { type: 'string' };\n }\n case 'tinyint': {\n return { type: 'boolean' };\n }\n case 'longtext': {\n return { type: 'text', args: ['longtext'] };\n }\n case 'varchar': {\n return { type: 'string', args: [column.character_maximum_length] };\n }\n case 'datetime': {\n return { type: 'datetime', args: [{ useTz: false, precision: 6 }] };\n }\n case 'date': {\n return { type: 'date' };\n }\n case 'time': {\n return { type: 'time', args: [{ precision: 3 }] };\n }\n case 'timestamp': {\n return { type: 'timestamp', args: [{ useTz: false, precision: 6 }] };\n }\n case 'json': {\n return { type: 'jsonb' };\n }\n default: {\n return { type: 'specificType', args: [column.data_type] };\n }\n }\n};\n\nexport default class MysqlSchemaInspector implements SchemaInspector {\n db: Database;\n\n constructor(db: Database) {\n this.db = db;\n }\n\n async getSchema() {\n const schema: Schema = { tables: [] };\n\n const tables = await this.getTables();\n\n if (tables.length === 0) {\n return schema;\n }\n\n // Run 3 bulk queries in parallel instead of N+1 per-table queries\n const [allColumns, allIndexes, allForeignKeys] = await Promise.all([\n this.getBulkColumns(tables),\n this.getBulkIndexes(tables),\n this.getBulkForeignKeys(tables),\n ]);\n\n schema.tables = tables.map((tableName) => ({\n name: tableName,\n columns: allColumns.get(tableName) ?? [],\n indexes: allIndexes.get(tableName) ?? [],\n foreignKeys: allForeignKeys.get(tableName) ?? [],\n }));\n\n return schema;\n }\n\n async getTables(): Promise<string[]> {\n const [rows] = await this.db.connection.raw<[RawTable[]]>(SQL_QUERIES.TABLE_LIST);\n\n return rows.map((row) => row.table_name);\n }\n\n async getBulkColumns(tableNames: string[]): Promise<Map<string, Column[]>> {\n if (tableNames.length === 0) {\n return new Map();\n }\n\n const [rows] = await this.db.connection.raw<[RawColumn[]]>(SQL_QUERIES.BULK_COLUMNS, {\n tables: this.db.connection.raw(tableNames.map(() => '?').join(', '), tableNames),\n });\n\n const result = new Map<string, Column[]>();\n\n for (const row of rows) {\n const { type, args = [], ...rest } = toStrapiType(row);\n\n const column: Column = {\n type,\n args,\n defaultTo: row.column_default,\n name: row.column_name,\n notNullable: row.is_nullable === 'NO',\n unsigned: row.column_type.endsWith(' unsigned'),\n ...rest,\n };\n\n const existing = result.get(row.table_name);\n if (existing) {\n existing.push(column);\n } else {\n result.set(row.table_name, [column]);\n }\n }\n\n return result;\n }\n\n async getColumns(tableName: string): Promise<Column[]> {\n const result = await this.getBulkColumns([tableName]);\n return result.get(tableName) ?? [];\n }\n\n async getBulkIndexes(tableNames: string[]): Promise<Map<string, Index[]>> {\n if (tableNames.length === 0) {\n return new Map();\n }\n\n const [rows] = await this.db.connection.raw<[RawIndex[]]>(SQL_QUERIES.BULK_INDEXES, {\n tables: this.db.connection.raw(tableNames.map(() => '?').join(', '), tableNames),\n });\n\n // Group by table, then by key_name\n const byTable = new Map<string, Map<string, Index>>();\n\n for (const index of rows) {\n if (index.column_name === 'id') {\n continue;\n }\n\n let tableIndexes = byTable.get(index.table_name);\n if (!tableIndexes) {\n tableIndexes = new Map();\n byTable.set(index.table_name, tableIndexes);\n }\n\n const existing = tableIndexes.get(index.key_name);\n if (existing) {\n existing.columns.push(index.column_name);\n } else {\n const indexInfo: Index = {\n columns: [index.column_name],\n name: index.key_name,\n };\n if (!index.non_unique || index.non_unique === '0') {\n indexInfo.type = 'unique';\n }\n tableIndexes.set(index.key_name, indexInfo);\n }\n }\n\n const result = new Map<string, Index[]>();\n for (const [tableName, tableIndexes] of byTable) {\n result.set(tableName, Array.from(tableIndexes.values()));\n }\n\n return result;\n }\n\n async getIndexes(tableName: string): Promise<Index[]> {\n const result = await this.getBulkIndexes([tableName]);\n return result.get(tableName) ?? [];\n }\n\n async getBulkForeignKeys(tableNames: string[]): Promise<Map<string, ForeignKey[]>> {\n if (tableNames.length === 0) {\n return new Map();\n }\n\n const [rows] = await this.db.connection.raw<[RawForeignKey[]]>(SQL_QUERIES.BULK_FOREIGN_KEYS, {\n tables: this.db.connection.raw(tableNames.map(() => '?').join(', '), tableNames),\n });\n\n // Group by table_name, then by constraint_name\n const byTable = new Map<string, Map<string, ForeignKey>>();\n\n for (const row of rows) {\n let tableFKs = byTable.get(row.table_name);\n if (!tableFKs) {\n tableFKs = new Map();\n byTable.set(row.table_name, tableFKs);\n }\n\n let fk = tableFKs.get(row.constraint_name);\n if (!fk) {\n fk = {\n name: row.constraint_name,\n columns: [row.column_name],\n referencedColumns: row.referenced_column_name ? [row.referenced_column_name] : [],\n referencedTable: row.referenced_table_name,\n onUpdate: row.on_update?.toUpperCase() ?? null,\n onDelete: row.on_delete?.toUpperCase() ?? null,\n } as unknown as ForeignKey;\n tableFKs.set(row.constraint_name, fk);\n } else {\n if (!fk.columns.includes(row.column_name)) {\n fk.columns.push(row.column_name);\n }\n if (\n row.referenced_column_name &&\n !fk.referencedColumns.includes(row.referenced_column_name)\n ) {\n fk.referencedColumns.push(row.referenced_column_name);\n }\n }\n }\n\n const result = new Map<string, ForeignKey[]>();\n for (const [tableName, tableFKs] of byTable) {\n result.set(tableName, Array.from(tableFKs.values()));\n }\n\n return result;\n }\n\n async getForeignKeys(tableName: string): Promise<ForeignKey[]> {\n const result = await this.getBulkForeignKeys([tableName]);\n return result.get(tableName) ?? [];\n }\n}\n"],"names":["SQL_QUERIES","TABLE_LIST","BULK_COLUMNS","BULK_INDEXES","BULK_FOREIGN_KEYS","toStrapiType","column","rootType","data_type","toLowerCase","match","column_key","type","args","primary","primaryKey","unsigned","character_maximum_length","useTz","precision","MysqlSchemaInspector","getSchema","schema","tables","getTables","length","allColumns","allIndexes","allForeignKeys","Promise","all","getBulkColumns","getBulkIndexes","getBulkForeignKeys","map","tableName","name","columns","get","indexes","foreignKeys","rows","db","connection","raw","row","table_name","tableNames","Map","join","result","rest","defaultTo","column_default","column_name","notNullable","is_nullable","column_type","endsWith","existing","push","set","getColumns","byTable","index","tableIndexes","key_name","indexInfo","non_unique","Array","from","values","getIndexes","tableFKs","fk","constraint_name","referencedColumns","referenced_column_name","referencedTable","referenced_table_name","onUpdate","on_update","toUpperCase","onDelete","on_delete","includes","getForeignKeys"],"mappings":"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"}
|
|
@@ -7,8 +7,10 @@ export default class PostgresqlSchemaInspector implements SchemaInspector {
|
|
|
7
7
|
getSchema(): Promise<Schema>;
|
|
8
8
|
getDatabaseSchema(): string;
|
|
9
9
|
getTables(): Promise<string[]>;
|
|
10
|
-
|
|
10
|
+
getBulkColumns(dbSchema: string, tableNames: string[]): Promise<Map<string, Column[]>>;
|
|
11
|
+
getBulkIndexes(dbSchema: string, tableNames: string[]): Promise<Map<string, Index[]>>;
|
|
11
12
|
getIndexes(tableName: string): Promise<Index[]>;
|
|
12
13
|
getForeignKeys(tableName: string): Promise<ForeignKey[]>;
|
|
14
|
+
getBulkForeignKeys(dbSchema: string, tableNames: string[]): Promise<Map<string, ForeignKey[]>>;
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=schema-inspector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-inspector.d.ts","sourceRoot":"","sources":["../../../src/dialects/postgresql/schema-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-inspector.d.ts","sourceRoot":"","sources":["../../../src/dialects/postgresql/schema-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0JlD,MAAM,CAAC,OAAO,OAAO,yBAA0B,YAAW,eAAe;IACvE,EAAE,EAAE,QAAQ,CAAC;gBAED,EAAE,EAAE,QAAQ;IAIlB,SAAS;IA2Bf,iBAAiB,IAAI,MAAM;IAIrB,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ9B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAsCtF,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IA4CrF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAM/C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAMxD,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;CAuDtC"}
|