@forestadmin/datasource-sql 1.7.48 → 1.8.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/index.d.ts +5 -5
- package/dist/index.js +5 -3
- package/dist/introspection/dialects/postgresql-dialect/index.js +19 -6
- package/dist/introspection/helpers/default-value-parser.js +5 -1
- package/dist/introspection/helpers/sql-type-converter.d.ts +7 -10
- package/dist/introspection/helpers/sql-type-converter.js +29 -57
- package/dist/introspection/introspector.d.ts +3 -2
- package/dist/introspection/introspector.js +20 -4
- package/dist/introspection/type-overrides.d.ts +1 -0
- package/dist/introspection/types.d.ts +5 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { Table } from './introspection/types';
|
|
1
|
+
import type { Introspection, Table } from './introspection/types';
|
|
2
2
|
import type { PlainConnectionOptions, PlainConnectionOptionsOrUri, SslMode } from './types';
|
|
3
3
|
import type { DataSourceFactory, Logger } from '@forestadmin/datasource-toolkit';
|
|
4
4
|
import { Sequelize } from 'sequelize';
|
|
5
|
-
export declare function introspect(uriOrOptions: PlainConnectionOptionsOrUri, logger?: Logger): Promise<
|
|
6
|
-
export declare function buildSequelizeInstance(uriOrOptions: PlainConnectionOptionsOrUri, logger: Logger, introspection?: Table[]): Promise<Sequelize>;
|
|
5
|
+
export declare function introspect(uriOrOptions: PlainConnectionOptionsOrUri, logger?: Logger): Promise<Introspection>;
|
|
6
|
+
export declare function buildSequelizeInstance(uriOrOptions: PlainConnectionOptionsOrUri, logger: Logger, introspection?: Table[] | Introspection): Promise<Sequelize>;
|
|
7
7
|
export declare function createSqlDataSource(uriOrOptions: PlainConnectionOptionsOrUri, options?: {
|
|
8
|
-
introspection: Table[];
|
|
8
|
+
introspection: Table[] | Introspection;
|
|
9
9
|
}): DataSourceFactory;
|
|
10
10
|
/** Preprocess the connection options so that they can be cached for faster connections */
|
|
11
11
|
export declare function preprocessOptions(uriOrOptions: PlainConnectionOptionsOrUri): Promise<PlainConnectionOptions>;
|
|
12
12
|
export * from './connection/errors';
|
|
13
|
-
export type { PlainConnectionOptionsOrUri as ConnectionOptions, Table, SslMode };
|
|
13
|
+
export type { PlainConnectionOptionsOrUri as ConnectionOptions, Table, SslMode, Introspection };
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -41,7 +41,8 @@ async function buildSequelizeInstance(uriOrOptions, logger, introspection) {
|
|
|
41
41
|
let sequelize;
|
|
42
42
|
try {
|
|
43
43
|
sequelize = await (0, connection_1.default)(options);
|
|
44
|
-
const tables =
|
|
44
|
+
const { tables } = introspector_1.default.getIntrospectionInLatestFormat(introspection) ??
|
|
45
|
+
(await introspector_1.default.introspect(sequelize, logger));
|
|
45
46
|
model_1.default.defineModels(sequelize, logger, tables);
|
|
46
47
|
relations_1.default.defineRelations(sequelize, logger, tables);
|
|
47
48
|
}
|
|
@@ -54,7 +55,8 @@ async function buildSequelizeInstance(uriOrOptions, logger, introspection) {
|
|
|
54
55
|
exports.buildSequelizeInstance = buildSequelizeInstance;
|
|
55
56
|
function createSqlDataSource(uriOrOptions, options) {
|
|
56
57
|
return async (logger) => {
|
|
57
|
-
const
|
|
58
|
+
const introspection = introspector_1.default.getIntrospectionInLatestFormat(options?.introspection);
|
|
59
|
+
const sequelize = await buildSequelizeInstance(uriOrOptions, logger, introspection);
|
|
58
60
|
return new datasource_sequelize_1.SequelizeDataSource(sequelize, logger);
|
|
59
61
|
};
|
|
60
62
|
}
|
|
@@ -65,4 +67,4 @@ async function preprocessOptions(uriOrOptions) {
|
|
|
65
67
|
}
|
|
66
68
|
exports.preprocessOptions = preprocessOptions;
|
|
67
69
|
__exportStar(require("./connection/errors"), exports);
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSw0RUFBd0U7QUFHeEUsOERBQW1DO0FBQ25DLHlGQUFnRTtBQUNoRSxnRkFBd0Q7QUFDeEQsZ0VBQStDO0FBQy9DLHdFQUFzRDtBQUUvQyxLQUFLLFVBQVUsVUFBVSxDQUM5QixZQUF5QyxFQUN6QyxNQUFlO0lBRWYsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBaUIsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsSUFBSSxTQUFvQixDQUFDO0lBRXpCLElBQUk7UUFDRixTQUFTLEdBQUcsTUFBTSxJQUFBLG9CQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsT0FBTyxNQUFNLHNCQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6RDtZQUFTO1FBQ1IsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDMUI7QUFDSCxDQUFDO0FBZEQsZ0NBY0M7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLFlBQXlDLEVBQ3pDLE1BQWMsRUFDZCxhQUF1QztJQUV2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUFpQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RCxJQUFJLFNBQW9CLENBQUM7SUFFekIsSUFBSTtRQUNGLFNBQVMsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQ2Qsc0JBQVksQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQUM7WUFDMUQsQ0FBQyxNQUFNLHNCQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JELGVBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxtQkFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzVEO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssQ0FBQztLQUNiO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQXJCRCx3REFxQkM7QUFFRCxTQUFnQixtQkFBbUIsQ0FDakMsWUFBeUMsRUFDekMsT0FBb0Q7SUFFcEQsT0FBTyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxhQUFhLEdBQUcsc0JBQVksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRXBGLE9BQU8sSUFBSSwwQ0FBbUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVZELGtEQVVDO0FBRUQsMEZBQTBGO0FBQ25GLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsWUFBeUM7SUFFekMsT0FBTyxJQUFJLDRCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7QUFDeEUsQ0FBQztBQUpELDhDQUlDO0FBRUQsc0RBQW9DIn0=
|
|
@@ -37,15 +37,17 @@ class PostgreSQLDialect {
|
|
|
37
37
|
|| (CASE WHEN c.character_maximum_length IS NOT NULL
|
|
38
38
|
THEN '(' || c.character_maximum_length || ')'
|
|
39
39
|
ELSE '' END) as "Type",
|
|
40
|
-
(SELECT array_agg(
|
|
41
|
-
FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum
|
|
42
|
-
WHERE t.typname=c.udt_name
|
|
43
|
-
) AS "Special",
|
|
40
|
+
(SELECT array_agg(en.enumlabel)
|
|
41
|
+
FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum en ON t.oid = en.enumtypid
|
|
42
|
+
WHERE t.typname = c.udt_name OR t.typname = e.udt_name
|
|
43
|
+
) AS "Special",
|
|
44
44
|
(SELECT pgd.description
|
|
45
45
|
FROM pg_catalog.pg_statio_all_tables AS st
|
|
46
46
|
INNER JOIN pg_catalog.pg_description pgd on (pgd.objoid=st.relid)
|
|
47
47
|
WHERE c.ordinal_position=pgd.objsubid AND c.table_name=st.relname
|
|
48
|
-
) AS "Comment"
|
|
48
|
+
) AS "Comment",
|
|
49
|
+
e.data_type AS "ElementType",
|
|
50
|
+
e.udt_name AS "TechnicalElementType"
|
|
49
51
|
FROM
|
|
50
52
|
information_schema.columns c
|
|
51
53
|
LEFT JOIN (
|
|
@@ -61,6 +63,13 @@ class PostgreSQLDialect {
|
|
|
61
63
|
) pk ON pk.table_schema=c.table_schema
|
|
62
64
|
AND pk.table_name=c.table_name
|
|
63
65
|
AND pk.column_name=c.column_name
|
|
66
|
+
LEFT JOIN INFORMATION_SCHEMA.element_types e ON (
|
|
67
|
+
c.table_catalog = e.object_catalog AND
|
|
68
|
+
c.table_schema = e.object_schema AND
|
|
69
|
+
c.table_name = e.object_name AND
|
|
70
|
+
'TABLE' = e.object_type AND
|
|
71
|
+
c.dtd_identifier = e.collection_type_identifier
|
|
72
|
+
)
|
|
64
73
|
WHERE c.table_catalog = :database
|
|
65
74
|
AND ${conditions}
|
|
66
75
|
ORDER BY c.table_schema, c.table_name, c.ordinal_position;
|
|
@@ -86,8 +95,12 @@ class PostgreSQLDialect {
|
|
|
86
95
|
}
|
|
87
96
|
getColumnDescription(dbColumn) {
|
|
88
97
|
const type = dbColumn.Type.toUpperCase();
|
|
98
|
+
const elementType = dbColumn.ElementType?.toUpperCase() === 'USER-DEFINED'
|
|
99
|
+
? dbColumn.TechnicalElementType
|
|
100
|
+
: dbColumn.ElementType?.toUpperCase();
|
|
89
101
|
const sequelizeColumn = {
|
|
90
102
|
type,
|
|
103
|
+
elementType,
|
|
91
104
|
allowNull: dbColumn.Null === 'YES',
|
|
92
105
|
comment: dbColumn.Comment,
|
|
93
106
|
special: (0, parse_array_1.default)(dbColumn.Special),
|
|
@@ -156,4 +169,4 @@ class PostgreSQLDialect {
|
|
|
156
169
|
}
|
|
157
170
|
}
|
|
158
171
|
exports.default = PostgreSQLDialect;
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9wb3N0Z3Jlc3FsLWRpYWxlY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBa0Q7QUFFbEQsZ0VBQXVDO0FBbUJ2QyxNQUFxQixpQkFBaUI7SUFDcEMsZ0JBQWdCO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQXlDO1FBQzFELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLFVBQXNDLEVBQ3RDLFNBQW9CO1FBRXBCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVU7YUFDOUIsR0FBRyxDQUNGLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ1gsZ0NBQWdDLEtBQUs7MkNBQ0osS0FBSztjQUNsQyxDQUNQO2FBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFFbkIsK0RBQStEO1FBQy9ELG9DQUFvQztRQUNwQyxNQUFNLEtBQUssR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0ErQ0osVUFBVTs7S0FFbkIsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQ3BDLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsR0FBRyxHQUFHO1lBQ04sQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFD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
|
|
@@ -28,10 +28,14 @@ class DefaultValueParser {
|
|
|
28
28
|
case 'BIGINT':
|
|
29
29
|
case 'FLOAT':
|
|
30
30
|
case 'DOUBLE':
|
|
31
|
+
case 'INTEGER':
|
|
32
|
+
case 'DECIMAL':
|
|
33
|
+
case 'REAL':
|
|
31
34
|
return this.parseNumber(column.defaultValue);
|
|
32
35
|
case 'DATE':
|
|
33
36
|
case 'DATEONLY':
|
|
34
37
|
case 'STRING':
|
|
38
|
+
case 'TEXT':
|
|
35
39
|
return column.defaultValue;
|
|
36
40
|
case 'JSON':
|
|
37
41
|
case 'JSONB':
|
|
@@ -46,4 +50,4 @@ class DefaultValueParser {
|
|
|
46
50
|
}
|
|
47
51
|
}
|
|
48
52
|
exports.default = DefaultValueParser;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12YWx1ZS1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9oZWxwZXJzL2RlZmF1bHQtdmFsdWUtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBQW9DO0FBS3BDLE1BQXFCLGtCQUFrQjtJQUNyQyxNQUFNLENBQUMsS0FBSyxDQUNWLE1BQXdGLEVBQ3hGLFVBQXNCO1FBRXRCLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFeEYsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU87WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVsRCxJQUFJLE1BQU0sQ0FBQyxxQkFBcUI7WUFBRSxPQUFPLElBQUEsbUJBQU8sRUFBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEUsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXJELE9BQU8sTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLG1CQUFPLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLElBQUEsbUJBQU8sRUFBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVksQ0FDekIsTUFBd0YsRUFDeEYsVUFBc0I7UUFFdEIsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUM5QixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUM7U0FDNUI7UUFFRCxRQUFRLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDMUIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUzRSxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUvQyxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztZQUU3QixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssT0FBTztnQkFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXpDO2dCQUNFLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBa0I7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsbUJBQU8sRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdELENBQUM7Q0FDRjtBQTdERCxxQ0E2REMifQ==
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
import { Sequelize } from 'sequelize';
|
|
2
1
|
import { ColumnDescription } from '../dialects/dialect.interface';
|
|
3
2
|
import { SequelizeTableIdentifier } from '../type-overrides';
|
|
4
3
|
import { ColumnType } from '../types';
|
|
5
4
|
export default class SqlTypeConverter {
|
|
6
5
|
private static readonly enumRegex;
|
|
7
|
-
|
|
8
|
-
constructor(sequelize: Sequelize);
|
|
9
|
-
convert(tableIdentifier: SequelizeTableIdentifier, columnName: string, columnInfo: ColumnDescription): Promise<ColumnType>;
|
|
6
|
+
static convert(tableIdentifier: SequelizeTableIdentifier, columnInfo: ColumnDescription): Promise<ColumnType>;
|
|
10
7
|
/** Get the type of an enum from sequelize column description */
|
|
11
|
-
private getEnumType;
|
|
8
|
+
private static getEnumType;
|
|
12
9
|
/**
|
|
13
10
|
* Get the type of an array from sequelize column description
|
|
14
11
|
* Note that we don't need to write multiple SQL queries, because arrays are only supported by
|
|
15
12
|
* Postgres
|
|
16
13
|
*/
|
|
17
|
-
private getArrayType;
|
|
18
|
-
private getScalarType;
|
|
19
|
-
private typeMatch;
|
|
20
|
-
private typeStartsWith;
|
|
21
|
-
private typeContains;
|
|
14
|
+
private static getArrayType;
|
|
15
|
+
private static getScalarType;
|
|
16
|
+
private static typeMatch;
|
|
17
|
+
private static typeStartsWith;
|
|
18
|
+
private static typeContains;
|
|
22
19
|
}
|
|
23
20
|
//# sourceMappingURL=sql-type-converter.d.ts.map
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sequelize_1 = require("sequelize");
|
|
4
3
|
class SqlTypeConverter {
|
|
5
|
-
|
|
6
|
-
this.sequelize = sequelize;
|
|
7
|
-
}
|
|
8
|
-
async convert(tableIdentifier, columnName, columnInfo) {
|
|
4
|
+
static async convert(tableIdentifier, columnInfo) {
|
|
9
5
|
switch (columnInfo.type) {
|
|
10
6
|
case 'ARRAY':
|
|
11
|
-
return this.getArrayType(tableIdentifier,
|
|
7
|
+
return this.getArrayType(tableIdentifier, columnInfo);
|
|
12
8
|
case 'USER-DEFINED':
|
|
13
9
|
case this.typeMatch(columnInfo.type, SqlTypeConverter.enumRegex):
|
|
14
10
|
return this.getEnumType(columnInfo);
|
|
@@ -17,7 +13,7 @@ class SqlTypeConverter {
|
|
|
17
13
|
}
|
|
18
14
|
}
|
|
19
15
|
/** Get the type of an enum from sequelize column description */
|
|
20
|
-
getEnumType(columnInfo) {
|
|
16
|
+
static getEnumType(columnInfo) {
|
|
21
17
|
return columnInfo.enumValues?.length > 0
|
|
22
18
|
? { type: 'enum', values: columnInfo.enumValues }
|
|
23
19
|
: // User-defined enum with no values will default to string
|
|
@@ -28,53 +24,25 @@ class SqlTypeConverter {
|
|
|
28
24
|
* Note that we don't need to write multiple SQL queries, because arrays are only supported by
|
|
29
25
|
* Postgres
|
|
30
26
|
*/
|
|
31
|
-
async getArrayType(tableIdentifier,
|
|
32
|
-
// Get the type of the elements in the array from the database
|
|
33
|
-
const [{ udtName, dataType, charLength, schema, rawEnumValues }] = await this.sequelize.query(`SELECT
|
|
34
|
-
e.udt_name AS "udtName",
|
|
35
|
-
e.data_type AS "dataType",
|
|
36
|
-
e.character_maximum_length as "charLength",
|
|
37
|
-
(
|
|
38
|
-
SELECT ns.nspname
|
|
39
|
-
FROM pg_catalog.pg_namespace ns JOIN pg_catalog.pg_type t ON ns.oid = t.typnamespace
|
|
40
|
-
WHERE t.typname = e.udt_name
|
|
41
|
-
) as "schema",
|
|
42
|
-
(
|
|
43
|
-
SELECT array_agg(en.enumlabel)
|
|
44
|
-
FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum en ON t.oid = en.enumtypid
|
|
45
|
-
WHERE t.typname = e.udt_name
|
|
46
|
-
) AS "rawEnumValues"
|
|
47
|
-
FROM INFORMATION_SCHEMA.columns c
|
|
48
|
-
LEFT JOIN INFORMATION_SCHEMA.element_types e ON (
|
|
49
|
-
c.table_catalog = e.object_catalog AND
|
|
50
|
-
c.table_schema = e.object_schema AND
|
|
51
|
-
c.table_name = e.object_name AND
|
|
52
|
-
'TABLE' = e.object_type AND
|
|
53
|
-
(:schema IS NULL OR c.table_schema = :schema) AND
|
|
54
|
-
c.dtd_identifier = e.collection_type_identifier
|
|
55
|
-
)
|
|
56
|
-
WHERE table_name = :tableName AND c.column_name = :columnName;`.replace(/\s+/g, ' '), {
|
|
57
|
-
replacements: {
|
|
58
|
-
tableName: tableIdentifier.tableName,
|
|
59
|
-
schema: tableIdentifier.schema || null,
|
|
60
|
-
columnName,
|
|
61
|
-
},
|
|
62
|
-
type: sequelize_1.QueryTypes.SELECT,
|
|
63
|
-
});
|
|
27
|
+
static async getArrayType(tableIdentifier, columnDescription) {
|
|
64
28
|
let subType;
|
|
65
|
-
if (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
29
|
+
if (columnDescription.enumValues?.length) {
|
|
30
|
+
subType = {
|
|
31
|
+
type: 'enum',
|
|
32
|
+
schema: tableIdentifier.schema,
|
|
33
|
+
name: columnDescription.elementType,
|
|
34
|
+
values: columnDescription.enumValues.sort(),
|
|
35
|
+
};
|
|
70
36
|
}
|
|
71
37
|
else {
|
|
72
|
-
|
|
73
|
-
|
|
38
|
+
subType = {
|
|
39
|
+
type: 'scalar',
|
|
40
|
+
subType: this.getScalarType(columnDescription.elementType),
|
|
41
|
+
};
|
|
74
42
|
}
|
|
75
43
|
return { type: 'array', subType };
|
|
76
44
|
}
|
|
77
|
-
getScalarType(type) {
|
|
45
|
+
static getScalarType(type) {
|
|
78
46
|
const upType = type.toUpperCase();
|
|
79
47
|
switch (upType) {
|
|
80
48
|
case 'JSON':
|
|
@@ -84,8 +52,9 @@ class SqlTypeConverter {
|
|
|
84
52
|
case 'BIT': // MSSQL type.
|
|
85
53
|
case 'BOOLEAN':
|
|
86
54
|
return 'BOOLEAN';
|
|
87
|
-
case 'CHARACTER VARYING':
|
|
88
55
|
case 'TEXT':
|
|
56
|
+
return 'TEXT';
|
|
57
|
+
case 'CHARACTER VARYING':
|
|
89
58
|
case 'NTEXT': // MSSQL type
|
|
90
59
|
case this.typeContains(upType, 'TEXT'):
|
|
91
60
|
case this.typeContains(upType, 'VARCHAR'):
|
|
@@ -106,22 +75,25 @@ class SqlTypeConverter {
|
|
|
106
75
|
case 'JSONB':
|
|
107
76
|
return 'JSONB';
|
|
108
77
|
case 'INTEGER':
|
|
109
|
-
case 'SERIAL':
|
|
110
|
-
case 'BIGSERIAL':
|
|
111
78
|
case this.typeStartsWith(upType, 'INT'):
|
|
112
79
|
case this.typeStartsWith(upType, 'SMALLINT'):
|
|
113
80
|
case this.typeStartsWith(upType, 'TINYINT'):
|
|
114
81
|
case this.typeStartsWith(upType, 'MEDIUMINT'):
|
|
82
|
+
return 'INTEGER';
|
|
83
|
+
case 'SERIAL':
|
|
84
|
+
case 'BIGSERIAL':
|
|
115
85
|
return 'NUMBER';
|
|
116
86
|
case this.typeStartsWith(upType, 'BIGINT'):
|
|
117
87
|
return 'BIGINT';
|
|
118
88
|
case this.typeContains(upType, 'FLOAT'):
|
|
119
89
|
return 'FLOAT';
|
|
120
|
-
case 'NUMERIC':
|
|
121
90
|
case 'REAL':
|
|
91
|
+
return 'REAL';
|
|
92
|
+
case 'NUMERIC':
|
|
93
|
+
case this.typeContains(upType, 'DECIMAL'):
|
|
94
|
+
return 'DECIMAL';
|
|
122
95
|
case 'DOUBLE':
|
|
123
96
|
case 'DOUBLE PRECISION':
|
|
124
|
-
case this.typeContains(upType, 'DECIMAL'):
|
|
125
97
|
return 'DOUBLE';
|
|
126
98
|
case 'DATE':
|
|
127
99
|
return 'DATEONLY';
|
|
@@ -137,16 +109,16 @@ class SqlTypeConverter {
|
|
|
137
109
|
throw new Error(`Unsupported type: ${type}`);
|
|
138
110
|
}
|
|
139
111
|
}
|
|
140
|
-
typeMatch(type, value) {
|
|
112
|
+
static typeMatch(type, value) {
|
|
141
113
|
return (type.match(value) || {}).input;
|
|
142
114
|
}
|
|
143
|
-
typeStartsWith(type, value) {
|
|
115
|
+
static typeStartsWith(type, value) {
|
|
144
116
|
return this.typeMatch(type, new RegExp(`^${value}.*`, 'i'));
|
|
145
117
|
}
|
|
146
|
-
typeContains(type, value) {
|
|
118
|
+
static typeContains(type, value) {
|
|
147
119
|
return this.typeMatch(type, new RegExp(`${value}.*`, 'i'));
|
|
148
120
|
}
|
|
149
121
|
}
|
|
150
122
|
exports.default = SqlTypeConverter;
|
|
151
123
|
SqlTypeConverter.enumRegex = /ENUM\((.*)\)/i;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLXR5cGUtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludHJvc3BlY3Rpb24vaGVscGVycy9zcWwtdHlwZS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFxQixnQkFBZ0I7SUFHbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2xCLGVBQXlDLEVBQ3pDLFVBQTZCO1FBRTdCLFFBQVEsVUFBVSxDQUFDLElBQUksRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV4RCxLQUFLLGNBQWMsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUV0QztnQkFDRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMzRTtJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDeEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUE2QjtRQUN0RCxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUM7WUFDdEMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxDQUFDLENBQUMsMERBQTBEO2dCQUMxRCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQy9CLGVBQXlDLEVB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
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Logger } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import { Sequelize } from 'sequelize';
|
|
3
|
-
import { Table } from './types';
|
|
3
|
+
import { Introspection, Table } from './types';
|
|
4
4
|
export default class Introspector {
|
|
5
|
-
static introspect(sequelize: Sequelize, logger?: Logger): Promise<
|
|
5
|
+
static introspect(sequelize: Sequelize, logger?: Logger): Promise<Introspection>;
|
|
6
|
+
static getIntrospectionInLatestFormat(introspection?: Table[] | Introspection): Introspection | null;
|
|
6
7
|
/** Get names of all tables in the public schema of the db */
|
|
7
8
|
private static getTableNames;
|
|
8
9
|
private static getTables;
|
|
@@ -6,13 +6,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const dialect_factory_1 = __importDefault(require("./dialects/dialect-factory"));
|
|
7
7
|
const default_value_parser_1 = __importDefault(require("./helpers/default-value-parser"));
|
|
8
8
|
const sql_type_converter_1 = __importDefault(require("./helpers/sql-type-converter"));
|
|
9
|
+
const INTROSPECTION_FORMAT_VERSION = 1;
|
|
9
10
|
class Introspector {
|
|
10
11
|
static async introspect(sequelize, logger) {
|
|
11
12
|
const dialect = (0, dialect_factory_1.default)(sequelize.getDialect());
|
|
12
13
|
const tableNames = await this.getTableNames(dialect, sequelize);
|
|
13
14
|
const tables = await this.getTables(dialect, tableNames, sequelize, logger);
|
|
14
15
|
this.sanitizeInPlace(tables, logger);
|
|
15
|
-
return tables;
|
|
16
|
+
return { tables, version: INTROSPECTION_FORMAT_VERSION };
|
|
17
|
+
}
|
|
18
|
+
static getIntrospectionInLatestFormat(introspection) {
|
|
19
|
+
const formattedIntrospection = Array.isArray(introspection)
|
|
20
|
+
? { tables: introspection, version: INTROSPECTION_FORMAT_VERSION }
|
|
21
|
+
: introspection;
|
|
22
|
+
if (formattedIntrospection && formattedIntrospection.version > INTROSPECTION_FORMAT_VERSION) {
|
|
23
|
+
/* This can only occur in CLOUD version, either:
|
|
24
|
+
- cloud-toolkit does not have the same version of datasource-sql
|
|
25
|
+
as cloud-agent-manager & forestadmin-server (We need to fix)
|
|
26
|
+
- datasource-sql should be updated in the local repository
|
|
27
|
+
of the client. He should be prompted to update cloud-toolkit.
|
|
28
|
+
*/
|
|
29
|
+
throw new Error('This version of introspection is newer than this package version. ' +
|
|
30
|
+
'Please update @forestadmin/datasource-sql');
|
|
31
|
+
}
|
|
32
|
+
return formattedIntrospection;
|
|
16
33
|
}
|
|
17
34
|
/** Get names of all tables in the public schema of the db */
|
|
18
35
|
static async getTableNames(dialect, sequelize) {
|
|
@@ -85,9 +102,8 @@ class Introspector {
|
|
|
85
102
|
}
|
|
86
103
|
static async getColumn(sequelize, logger, tableIdentifier, options) {
|
|
87
104
|
const { name, description, references } = options;
|
|
88
|
-
const typeConverter = new sql_type_converter_1.default(sequelize);
|
|
89
105
|
try {
|
|
90
|
-
const type = await
|
|
106
|
+
const type = await sql_type_converter_1.default.convert(tableIdentifier, description);
|
|
91
107
|
return {
|
|
92
108
|
type,
|
|
93
109
|
autoIncrement: description.autoIncrement,
|
|
@@ -138,4 +154,4 @@ class Introspector {
|
|
|
138
154
|
}
|
|
139
155
|
}
|
|
140
156
|
exports.default = Introspector;
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50cm9zcGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludHJvc3BlY3Rpb24vaW50cm9zcGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsaUZBQXFFO0FBRXJFLDBGQUFnRTtBQUNoRSxzRkFBNEQ7QUFTNUQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFdkMsTUFBcUIsWUFBWTtJQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFvQixFQUFFLE1BQWU7UUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBQSx5QkFBMkIsRUFBQyxTQUFTLENBQUMsVUFBVSxFQUFhLENBQUMsQ0FBQztRQUUvRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFNBQWlDLENBQUMsQ0FBQztRQUN4RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLDhCQUE4QixDQUNuQyxhQUF1QztRQUV2QyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3pELENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFO1lBQ2xFLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFbEIsSUFBSSxzQkFBc0IsSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLEdBQUcsNEJBQTRCLEVBQUU7WUFDM0Y7Ozs7O2NBS0U7WUFDRixNQUFNLElBQUksS0FBSyxDQUNiLG9FQUFv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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ScalarSubType = 'BIGINT' | 'BLOB' | 'BOOLEAN' | 'DATE' | 'DATEONLY' | 'DOUBLE' | 'FLOAT' | 'INET' | 'JSON' | 'JSONB' | 'NUMBER' | 'STRING' | 'TIME' | 'UUID';
|
|
1
|
+
export type ScalarSubType = 'BIGINT' | 'BLOB' | 'BOOLEAN' | 'DATE' | 'DATEONLY' | 'DECIMAL' | 'DOUBLE' | 'FLOAT' | 'INET' | 'INTEGER' | 'JSON' | 'JSONB' | 'NUMBER' | 'REAL' | 'STRING' | 'TEXT' | 'TIME' | 'UUID';
|
|
2
2
|
export type ColumnType = {
|
|
3
3
|
type: 'scalar';
|
|
4
4
|
subType: ScalarSubType;
|
|
@@ -38,4 +38,8 @@ export type Table = {
|
|
|
38
38
|
}[];
|
|
39
39
|
}[];
|
|
40
40
|
};
|
|
41
|
+
export type Introspection = {
|
|
42
|
+
tables: Table[];
|
|
43
|
+
version: number;
|
|
44
|
+
};
|
|
41
45
|
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/datasource-sql",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"directory": "packages/datasource-sql"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@forestadmin/datasource-sequelize": "1.6.
|
|
15
|
+
"@forestadmin/datasource-sequelize": "1.6.4",
|
|
16
16
|
"@forestadmin/datasource-toolkit": "1.32.0",
|
|
17
17
|
"pluralize": "^8.0.0",
|
|
18
18
|
"sequelize": "^6.28.0",
|