@forestadmin/datasource-sql 1.11.2 → 1.12.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.
@@ -0,0 +1,10 @@
1
+ import { SequelizeDataSource } from '@forestadmin/datasource-sequelize';
2
+ import { Collection, DataSourceDecorator } from '@forestadmin/datasource-toolkit';
3
+ import { Table } from '../introspection/types';
4
+ export default class SqlDatasource extends DataSourceDecorator<Collection> {
5
+ private readonly viewNames;
6
+ constructor(childDataSource: SequelizeDataSource, views: Table[]);
7
+ getCollection(name: string): Collection;
8
+ close(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=sql-datasource.d.ts.map
@@ -0,0 +1,25 @@
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
+ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
7
+ const view_decorator_1 = __importDefault(require("./view-decorator"));
8
+ class SqlDatasource extends datasource_toolkit_1.DataSourceDecorator {
9
+ constructor(childDataSource, views) {
10
+ super(childDataSource, view_decorator_1.default);
11
+ this.viewNames = new Set();
12
+ this.viewNames = new Set(views?.map(({ name }) => name));
13
+ }
14
+ getCollection(name) {
15
+ const collection = this.childDataSource.getCollection(name);
16
+ if (!this.viewNames.has(name))
17
+ return collection;
18
+ return super.getCollection(name);
19
+ }
20
+ async close() {
21
+ await this.childDataSource.close();
22
+ }
23
+ }
24
+ exports.default = SqlDatasource;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLWRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9zcWwtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHdFQUFrRjtBQUVsRixzRUFBNkM7QUFHN0MsTUFBcUIsYUFBYyxTQUFRLHdDQUErQjtJQUd4RSxZQUFZLGVBQW9DLEVBQUUsS0FBYztRQUM5RCxLQUFLLENBQUMsZUFBZSxFQUFFLHdCQUFhLENBQUMsQ0FBQztRQUh2QixjQUFTLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFLbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRVEsYUFBYSxDQUFDLElBQVk7UUFDakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sVUFBVSxDQUFDO1FBRWpELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsTUFBTyxJQUFJLENBQUMsZUFBdUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0NBQ0Y7QUFwQkQsZ0NBb0JDIn0=
@@ -0,0 +1,8 @@
1
+ import { CollectionDecorator, CollectionSchema } from '@forestadmin/datasource-toolkit';
2
+ export default class ViewDecorator extends CollectionDecorator {
3
+ protected refineSchema(subSchema: CollectionSchema): CollectionSchema;
4
+ create(): Promise<never>;
5
+ update(): Promise<never>;
6
+ delete(): Promise<never>;
7
+ }
8
+ //# sourceMappingURL=view-decorator.d.ts.map
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
4
+ class ViewDecorator extends datasource_toolkit_1.CollectionDecorator {
5
+ refineSchema(subSchema) {
6
+ return {
7
+ ...subSchema,
8
+ fields: Object.entries(subSchema.fields).reduce((fields, [fieldName, fieldSchema]) => ({
9
+ ...fields,
10
+ [fieldName]: {
11
+ ...fieldSchema,
12
+ isReadOnly: true,
13
+ },
14
+ }), {}),
15
+ };
16
+ }
17
+ async create() {
18
+ throw new datasource_toolkit_1.UnprocessableError('View is read-only');
19
+ }
20
+ async update() {
21
+ throw new datasource_toolkit_1.UnprocessableError('View is read-only');
22
+ }
23
+ async delete() {
24
+ throw new datasource_toolkit_1.UnprocessableError('View is read-only');
25
+ }
26
+ }
27
+ exports.default = ViewDecorator;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy92aWV3LWRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdFQUl5QztBQUV6QyxNQUFxQixhQUFjLFNBQVEsd0NBQW1CO0lBQ3pDLFlBQVksQ0FBQyxTQUEyQjtRQUN6RCxPQUFPO1lBQ0wsR0FBRyxTQUFTO1lBRVosTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDN0MsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEdBQUcsTUFBTTtnQkFDVCxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNYLEdBQUcsV0FBVztvQkFDZCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7YUFDRixDQUFDLEVBQ0YsRUFBRSxDQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsTUFBTTtRQUNuQixNQUFNLElBQUksdUNBQWtCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRVEsS0FBSyxDQUFDLE1BQU07UUFDbkIsTUFBTSxJQUFJLHVDQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNO1FBQ25CLE1BQU0sSUFBSSx1Q0FBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQTdCRCxnQ0E2QkMifQ==
package/dist/index.d.ts CHANGED
@@ -1,16 +1,16 @@
1
- import type { Introspection, IntrospectionWithoutSource, Table } from './introspection/types';
2
1
  import type { PlainConnectionOptions, PlainConnectionOptionsOrUri, SslMode } from './types';
3
2
  import type { DataSourceFactory, Logger } from '@forestadmin/datasource-toolkit';
4
3
  import { Sequelize } from 'sequelize';
5
4
  import listCollectionsFromIntrospection from './introspection/list-collections-from-introspection';
6
- export declare function introspect(uriOrOptions: PlainConnectionOptionsOrUri, logger?: Logger): Promise<Introspection>;
7
- export declare function buildSequelizeInstance(uriOrOptions: PlainConnectionOptionsOrUri, logger: Logger, introspection?: Table[] | IntrospectionWithoutSource | Introspection): Promise<Sequelize>;
5
+ import { LatestIntrospection, LegacyIntrospection, Table } from './introspection/types';
6
+ export declare function introspect(uriOrOptions: PlainConnectionOptionsOrUri, logger?: Logger): Promise<LatestIntrospection>;
7
+ export declare function buildSequelizeInstance(uriOrOptions: PlainConnectionOptionsOrUri, logger: Logger, introspection?: LegacyIntrospection): Promise<Sequelize>;
8
8
  export declare function createSqlDataSource(uriOrOptions: PlainConnectionOptionsOrUri, options?: {
9
- introspection: Table[] | Introspection;
9
+ introspection?: LegacyIntrospection;
10
10
  }): DataSourceFactory;
11
11
  /** Preprocess the connection options so that they can be cached for faster connections */
12
12
  export declare function preprocessOptions(uriOrOptions: PlainConnectionOptionsOrUri): Promise<PlainConnectionOptions>;
13
13
  export * from './connection/errors';
14
- export type { PlainConnectionOptionsOrUri as ConnectionOptions, Table, SslMode, Introspection };
14
+ export type { PlainConnectionOptionsOrUri as ConnectionOptions, Table, SslMode, LatestIntrospection as Introspection, };
15
15
  export { listCollectionsFromIntrospection };
16
16
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ exports.listCollectionsFromIntrospection = exports.preprocessOptions = exports.c
21
21
  const datasource_sequelize_1 = require("@forestadmin/datasource-sequelize");
22
22
  const connection_1 = __importDefault(require("./connection"));
23
23
  const connection_options_1 = __importDefault(require("./connection/connection-options"));
24
+ const sql_datasource_1 = __importDefault(require("./decorators/sql-datasource"));
24
25
  const introspector_1 = __importDefault(require("./introspection/introspector"));
25
26
  const list_collections_from_introspection_1 = __importDefault(require("./introspection/list-collections-from-introspection"));
26
27
  exports.listCollectionsFromIntrospection = list_collections_from_introspection_1.default;
@@ -38,28 +39,30 @@ async function introspect(uriOrOptions, logger) {
38
39
  }
39
40
  }
40
41
  exports.introspect = introspect;
41
- async function buildSequelizeInstance(uriOrOptions, logger, introspection) {
42
- const options = new connection_options_1.default(uriOrOptions, logger);
43
- let sequelize;
42
+ async function buildModelsAndRelations(sequelize, logger, introspection) {
44
43
  try {
45
- sequelize = await (0, connection_1.default)(options);
46
- const { tables } = introspector_1.default.getIntrospectionInLatestFormat(introspection) ??
47
- (await introspector_1.default.introspect(sequelize, logger));
48
- model_1.default.defineModels(sequelize, logger, tables);
49
- relations_1.default.defineRelations(sequelize, logger, tables);
44
+ const latestIntrospection = await introspector_1.default.migrateOrIntrospect(sequelize, logger, introspection);
45
+ model_1.default.defineModels(sequelize, logger, latestIntrospection);
46
+ relations_1.default.defineRelations(sequelize, logger, latestIntrospection);
47
+ return latestIntrospection;
50
48
  }
51
49
  catch (error) {
52
50
  await sequelize?.close();
53
51
  throw error;
54
52
  }
53
+ }
54
+ async function buildSequelizeInstance(uriOrOptions, logger, introspection) {
55
+ const options = new connection_options_1.default(uriOrOptions, logger);
56
+ const sequelize = await (0, connection_1.default)(options);
57
+ await buildModelsAndRelations(sequelize, logger, introspection);
55
58
  return sequelize;
56
59
  }
57
60
  exports.buildSequelizeInstance = buildSequelizeInstance;
58
61
  function createSqlDataSource(uriOrOptions, options) {
59
62
  return async (logger) => {
60
- const introspection = introspector_1.default.getIntrospectionInLatestFormat(options?.introspection);
61
- const sequelize = await buildSequelizeInstance(uriOrOptions, logger, introspection);
62
- return new datasource_sequelize_1.SequelizeDataSource(sequelize, logger);
63
+ const sequelize = await (0, connection_1.default)(new connection_options_1.default(uriOrOptions, logger));
64
+ const latestIntrospection = await buildModelsAndRelations(sequelize, logger, options?.introspection);
65
+ return new sql_datasource_1.default(new datasource_sequelize_1.SequelizeDataSource(sequelize, logger), latestIntrospection.views);
63
66
  };
64
67
  }
65
68
  exports.createSqlDataSource = createSqlDataSource;
@@ -69,4 +72,4 @@ async function preprocessOptions(uriOrOptions) {
69
72
  }
70
73
  exports.preprocessOptions = preprocessOptions;
71
74
  __exportStar(require("./connection/errors"), exports);
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSw0RUFBd0U7QUFHeEUsOERBQW1DO0FBQ25DLHlGQUFnRTtBQUNoRSxnRkFBd0Q7QUFDeEQsOEhBQW1HO0FBZ0UxRiwyQ0FoRUYsNkNBQWdDLENBZ0VFO0FBL0R6QyxnRUFBK0M7QUFDL0Msd0VBQXNEO0FBRS9DLEtBQUssVUFBVSxVQUFVLENBQzlCLFlBQXlDLEVBQ3pDLE1BQWU7SUFFZixNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUFpQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RCxJQUFJLFNBQW9CLENBQUM7SUFFekIsSUFBSTtRQUNGLFNBQVMsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyxPQUFPLE1BQU0sc0JBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO1lBQVM7UUFDUixNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUMxQjtBQUNILENBQUM7QUFkRCxnQ0FjQztBQUVNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsWUFBeUMsRUFDekMsTUFBYyxFQUNkLGFBQW9FO0lBRXBFLE1BQU0sT0FBTyxHQUFHLElBQUksNEJBQWlCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELElBQUksU0FBb0IsQ0FBQztJQUV6QixJQUFJO1FBQ0YsU0FBUyxHQUFHLE1BQU0sSUFBQSxvQkFBTyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FDZCxzQkFBWSxDQUFDLDhCQUE4QixDQUFDLGFBQWEsQ0FBQztZQUMxRCxDQUFDLE1BQU0sc0JBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckQsZUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELG1CQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxDQUFDO0tBQ2I7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBckJELHdEQXFCQztBQUVELFNBQWdCLG1CQUFtQixDQUNqQyxZQUF5QyxFQUN6QyxPQUFvRDtJQUVwRCxPQUFPLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUM5QixNQUFNLGFBQWEsR0FBRyxzQkFBWSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMxRixNQUFNLFNBQVMsR0FBRyxNQUFNLHNCQUFzQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFcEYsT0FBTyxJQUFJLDBDQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBVkQsa0RBVUM7QUFFRCwwRkFBMEY7QUFDbkYsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxZQUF5QztJQUV6QyxPQUFPLElBQUksNEJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztBQUN4RSxDQUFDO0FBSkQsOENBSUM7QUFFRCxzREFBb0MifQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSw0RUFBd0U7QUFHeEUsOERBQW1DO0FBQ25DLHlGQUFnRTtBQUNoRSxpRkFBd0Q7QUFDeEQsZ0ZBQXdEO0FBQ3hELDhIQUFtRztBQW9GMUYsMkNBcEZGLDZDQUFnQyxDQW9GRTtBQWxGekMsZ0VBQStDO0FBQy9DLHdFQUFzRDtBQUUvQyxLQUFLLFVBQVUsVUFBVSxDQUM5QixZQUF5QyxFQUN6QyxNQUFlO0lBRWYsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBaUIsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsSUFBSSxTQUFvQixDQUFDO0lBRXpCLElBQUk7UUFDRixTQUFTLEdBQUcsTUFBTSxJQUFBLG9CQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsT0FBTyxNQUFNLHNCQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6RDtZQUFTO1FBQ1IsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDMUI7QUFDSCxDQUFDO0FBZEQsZ0NBY0M7QUFFRCxLQUFLLFVBQVUsdUJBQXVCLENBQ3BDLFNBQW9CLEVBQ3BCLE1BQWMsRUFDZCxhQUFrQztJQUVsQyxJQUFJO1FBQ0YsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLHNCQUFZLENBQUMsbUJBQW1CLENBQ2hFLFNBQVMsRUFDVCxNQUFNLEVBQ04sYUFBYSxDQUNkLENBQUM7UUFDRixlQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNsRSxtQkFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFeEUsT0FBTyxtQkFBbUIsQ0FBQztLQUM1QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLENBQUM7S0FDYjtBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLFlBQXlDLEVBQ3pDLE1BQWMsRUFDZCxhQUFtQztJQUVuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUFpQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFaEUsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQVZELHdEQVVDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQ2pDLFlBQXlDLEVBQ3pDLE9BQWlEO0lBRWpELE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFO1FBQzlCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSxvQkFBTyxFQUFDLElBQUksNEJBQWlCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLHVCQUF1QixDQUN2RCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFBRSxhQUFhLENBQ3ZCLENBQUM7UUFFRixPQUFPLElBQUksd0JBQWEsQ0FBQyxJQUFJLDBDQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRyxDQUFDLENBQUM7QUFDSixDQUFDO0FBZEQsa0RBY0M7QUFFRCwwRkFBMEY7QUFDbkYsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxZQUF5QztJQUV6QyxPQUFPLElBQUksNEJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztBQUN4RSxDQUFDO0FBSkQsOENBSUM7QUFFRCxzREFBb0MifQ==
@@ -8,6 +8,7 @@ export type ColumnDescription = Omit<SequelizeColumn, 'defaultValue'> & {
8
8
  };
9
9
  export default interface IntrospectionDialect {
10
10
  listColumns(tableNames: SequelizeTableIdentifier[], sequelize: Sequelize): Promise<ColumnDescription[][]>;
11
+ listViews(sequelize: Sequelize): Promise<SequelizeTableIdentifier[]>;
11
12
  getDefaultSchema(sequelize: Sequelize): string;
12
13
  getTableIdentifier(tableIdentifier: SequelizeTableIdentifier): SequelizeTableIdentifier;
13
14
  }
@@ -1,9 +1,10 @@
1
1
  import { Sequelize } from 'sequelize';
2
2
  import IntrospectionDialect, { ColumnDescription } from './dialect.interface';
3
- import { SequelizeTableIdentifier } from '../type-overrides';
3
+ import { SequelizeTableIdentifier, SequelizeWithOptions } from '../type-overrides';
4
4
  export default class MsSQLDialect implements IntrospectionDialect {
5
5
  getDefaultSchema(): string;
6
6
  getTableIdentifier(tableIdentifier: SequelizeTableIdentifier): SequelizeTableIdentifier;
7
+ listViews(sequelize: SequelizeWithOptions): Promise<SequelizeTableIdentifier[]>;
7
8
  listColumns(tableNames: SequelizeTableIdentifier[], sequelize: Sequelize): Promise<ColumnDescription[][]>;
8
9
  private getColumnDescription;
9
10
  /**
@@ -8,6 +8,21 @@ class MsSQLDialect {
8
8
  getTableIdentifier(tableIdentifier) {
9
9
  return tableIdentifier;
10
10
  }
11
+ async listViews(sequelize) {
12
+ return sequelize.query(`
13
+ SELECT
14
+ SCHEMA_NAME(schema_id) AS [schema],
15
+ Name as [tableName]
16
+ FROM sys.views
17
+
18
+ `, {
19
+ type: sequelize_1.QueryTypes.SELECT,
20
+ replacements: {
21
+ databaseName: sequelize.getDatabaseName(),
22
+ schema: sequelize.options.schema || this.getDefaultSchema(),
23
+ },
24
+ });
25
+ }
11
26
  async listColumns(tableNames, sequelize) {
12
27
  if (!sequelize.getDatabaseName()) {
13
28
  throw new Error('Database name is required. Please check your connection settings.');
@@ -154,4 +169,4 @@ class MsSQLDialect {
154
169
  }
155
170
  }
156
171
  exports.default = MsSQLDialect;
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNzcWwtZGlhbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRyb3NwZWN0aW9uL2RpYWxlY3RzL21zc3FsLWRpYWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBa0Q7QUFpQmxELE1BQXFCLFlBQVk7SUFDL0IsZ0JBQWdCO1FBQ2QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBeUM7UUFDMUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsVUFBc0MsRUFDdEMsU0FBb0I7UUFFcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07WUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVO2FBQzlCLEdBQUcsQ0FDRixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNYLGdDQUFnQyxLQUFLOzJDQUNKLEtBQUs7Y0FDbEMsQ0FDUDthQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRW5CLE1BQU0sS0FBSyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBd0NKLFVBQVUsRUFBRSxDQUFDO1FBRXZCLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQ3BDLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsR0FBRyxHQUFHO1lBQ04sQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFDMUMsQ0FBQyxhQUFhLEtBQUssRUFBRSxD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
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNzcWwtZGlhbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRyb3NwZWN0aW9uL2RpYWxlY3RzL21zc3FsLWRpYWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBa0Q7QUFpQmxELE1BQXFCLFlBQVk7SUFDL0IsZ0JBQWdCO1FBQ2QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBeUM7UUFDMUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBK0I7UUFDN0MsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUNwQjs7Ozs7O0tBTUQsRUFDQztZQUNFLElBQUksRUFBRSxzQkFBVSxDQUFDLE1BQU07WUFDdkIsWUFBWSxFQUFFO2dCQUNaLFlBQVksRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFO2dCQUN6QyxNQUFNLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2FBQzVEO1NBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsVUFBc0MsRUFDdEMsU0FBb0I7UUFFcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07WUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVO2FBQzlCLEdBQUcsQ0FDRixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNYLGdDQUFnQyxLQUFLOzJDQUNKLEtBQUs7Y0FDbEMsQ0FDUDthQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRW5CLE1BQU0sS0FBSyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBd0NKLFVBQVUsRUFBRSxDQUFDO1FBRXZCLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQ3BDLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsR0FBRyxHQUFHO1lBQ04sQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFDMUMsQ0FBQyxhQUFhLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sSUFBSSxLQUFLO1NBQ2xELENBQUMsRUFDRjtZQUNFLFFBQVEsRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFO1NBQ3RDLENBQ0YsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBVyxLQUFLLEVBQUU7WUFDckQsWUFBWTtZQUNaLElBQUksRUFBRSxzQkFBVSxDQUFDLE1BQU07WUFDdkIsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxPQUFPO2lCQUNYLE1BQU0sQ0FDTCxNQUFNLENBQUMsRUFBRSxDQUNQLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FDeEY7aUJBQ0EsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsUUFBa0I7UUFDN0MsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQ3ZFO1FBRUQsTUFBTSxlQUFlLEdBQW9CO1lBQ3ZDLElBQUk7WUFDSixTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sS0FBSyxLQUFLO1lBQ3BDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztZQUN6QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsS0FBSyxhQUFhO1lBQ2pELFlBQVksRUFBRSxRQUFRLENBQUMsT0FBTztZQUM5QixhQUFhLEVBQUUsUUFBUSxDQUFDLFVBQVUsS0FBSyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGLE1BQU0sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXRGLE9BQU87WUFDTCxHQUFHLGVBQWU7WUFDbEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ25CLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSyxlQUFlLENBQUMsV0FBNEI7UUFJbEQsSUFDRSxXQUFXLENBQUMsWUFBWSxLQUFLLElBQUk7WUFDakMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDMUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFDeEM7WUFDQSwyQkFBMkI7WUFDM0IsT0FBTztnQkFDTCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIscUJBQXFCLEVBQUUsS0FBSzthQUM3QixDQUFDO1NBQ0g7UUFFRCxNQUFNLDhCQUE4QixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdFLElBQ0UsOEJBQThCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMvQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQzVDO1lBQ0EsT0FBTztnQkFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEYscUJBQXFCLEVBQUUsS0FBSzthQUM3QixDQUFDO1NBQ0g7UUFFRCxJQUNFLDhCQUE4QixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDOUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUM1QztZQUNBLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BGLHFCQUFxQixFQUFFLEtBQUs7YUFDN0IsQ0FBQztTQUNIO1FBRUQsSUFDRSw4QkFBOEIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQzlDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDNUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsRTtZQUNBLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELHFCQUFxQixFQUFFLEtBQUs7YUFDN0IsQ0FBQztTQUNIO1FBRUQsSUFBSSw4QkFBOEIsS0FBSyxNQUFNLEVBQUU7WUFDN0MsT0FBTztnQkFDTCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIscUJBQXFCLEVBQUUsS0FBSzthQUM3QixDQUFDO1NBQ0g7UUFFRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxxQkFBcUIsRUFBRSxJQUFJO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBYTtRQUN4QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQXJORCwrQkFxTkMifQ==
@@ -1,5 +1,5 @@
1
1
  import { Sequelize } from 'sequelize';
2
- import { SequelizeTableIdentifier } from '../../type-overrides';
2
+ import { SequelizeTableIdentifier, SequelizeWithOptions } from '../../type-overrides';
3
3
  import IntrospectionDialect, { ColumnDescription } from '../dialect.interface';
4
4
  export type MySQLDBColumn = {
5
5
  Table: string;
@@ -15,6 +15,7 @@ export default class MySQLDialect implements IntrospectionDialect {
15
15
  getDefaultSchema(sequelize: Sequelize): string;
16
16
  getTableIdentifier(tableIdentifier: SequelizeTableIdentifier): SequelizeTableIdentifier;
17
17
  listColumns(tableNames: SequelizeTableIdentifier[], sequelize: Sequelize): Promise<ColumnDescription[][]>;
18
+ listViews(sequelize: SequelizeWithOptions): Promise<SequelizeTableIdentifier[]>;
18
19
  private getColumnDescription;
19
20
  /**
20
21
  * Fixes the default behavior of Sequelize that does not allow us to
@@ -43,6 +43,16 @@ class MySQLDialect {
43
43
  return tableColumns.map(c => this.getColumnDescription(c));
44
44
  });
45
45
  }
46
+ async listViews(sequelize) {
47
+ const dbName = sequelize.getDatabaseName();
48
+ return sequelize.query(`SELECT TABLE_NAME as "tableName"
49
+ FROM information_schema.tables
50
+ WHERE TABLE_TYPE LIKE 'VIEW'
51
+ AND TABLE_SCHEMA = :dbName;`, {
52
+ type: sequelize_1.QueryTypes.SELECT,
53
+ replacements: { dbName },
54
+ });
55
+ }
46
56
  getColumnDescription(dbColumn) {
47
57
  const type = dbColumn.Type.startsWith('enum')
48
58
  ? dbColumn.Type.replace(/^enum/, 'ENUM')
@@ -97,4 +107,4 @@ class MySQLDialect {
97
107
  }
98
108
  }
99
109
  exports.default = MySQLDialect;
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9teXNxbC1kaWFsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQWtEO0FBRWxELDhEQUFxQztBQWVyQyxNQUFxQixZQUFZO0lBQy9CLGdCQUFnQixDQUFDLFNBQW9CO1FBQ25DLE9BQU8sU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUF5QztRQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FDZixVQUFzQyxFQUN0QyxTQUFvQjtRQUVwQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztTQUN0RjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTTtZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQ25DOzs7Ozs7Ozs7Ozs7O09BYUMsRUFDRDtZQUNFLElBQUksRUFBRSxzQkFBVSxDQUFDLE1BQU07WUFDdkIsWUFBWSxFQUFFO2dCQUNaLFlBQVksRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFO2dCQUN6QyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDN0M7U0FDRixDQUNGLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXRFLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFFBQXVCO1FBQ2xELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMzQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztZQUN4QyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVoQyxNQUFNLGVBQWUsR0FBb0I7WUFDdkMsSUFBSTtZQUNKLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUs7WUFDbEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLElBQUksSUFBSTtZQUNqQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxLQUFLO1lBQ2xDLFlBQVksRUFBRSxRQUFRLENBQUMsT0FBTztZQUM5QixhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxnQkFBZ0I7U0FDbEUsQ0FBQztRQUVGLE1BQU0sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9FLE9BQU87WUFDTCxHQUFHLGVBQWU7WUFDbEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLO1lBQ3BCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsVUFBVSxFQUFFLElBQUEsb0JBQVMsRUFBQyxJQUFJLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDTyxlQUFlLENBQUMsUUFBdUI7UUFJL0MsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUM3QixPQUFPO2dCQUNMLFlBQVksRUFBRSxJQUFJO2dCQUNsQixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUM7U0FDSDtRQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFNUMsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksS0FBSyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzdFLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUM5QixxQkFBcUIsRUFBRSxJQUFJO2FBQzVCLENBQUM7U0FDSDtRQUVELGNBQWM7UUFDZCxJQUNFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssVUFBVTtZQUMzQyxRQUFRLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLG1CQUFtQixFQUN2RDtZQUNBLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUM5QixxQkFBcUIsRUFBRSxJQUFJO2FBQzVCLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxZQUFZLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDOUIscUJBQXFCLEVBQUUsS0FBSztTQUM3QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbkhELCtCQW1IQyJ9
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9teXNxbC1kaWFsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQWtEO0FBRWxELDhEQUFxQztBQW1CckMsTUFBcUIsWUFBWTtJQUMvQixnQkFBZ0IsQ0FBQyxTQUFvQjtRQUNuQyxPQUFPLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBeUM7UUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsVUFBc0MsRUFDdEMsU0FBb0I7UUFFcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07WUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUNuQzs7Ozs7Ozs7Ozs7OztPQWFDLEVBQ0Q7WUFDRSxJQUFJLEVBQUUsc0JBQVUsQ0FBQyxNQUFNO1lBQ3ZCLFlBQVksRUFBRTtnQkFDWixZQUFZLEVBQUUsU0FBUyxDQUFDLGVBQWUsRUFBRTtnQkFDekMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2FBQzdDO1NBQ0YsQ0FDRixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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
@@ -1,10 +1,11 @@
1
1
  import { Sequelize } from 'sequelize';
2
- import { SequelizeTableIdentifier } from '../../type-overrides';
2
+ import { SequelizeTableIdentifier, SequelizeWithOptions } from '../../type-overrides';
3
3
  import IntrospectionDialect, { ColumnDescription } from '../dialect.interface';
4
4
  export default class PostgreSQLDialect implements IntrospectionDialect {
5
5
  getDefaultSchema(): string;
6
6
  getTableIdentifier(tableIdentifier: SequelizeTableIdentifier): SequelizeTableIdentifier;
7
7
  listColumns(tableNames: SequelizeTableIdentifier[], sequelize: Sequelize): Promise<ColumnDescription[][]>;
8
+ listViews(sequelize: SequelizeWithOptions): Promise<SequelizeTableIdentifier[]>;
8
9
  private getColumnDescription;
9
10
  /**
10
11
  * Fixes the default behavior of Sequelize that does not allow us to
@@ -94,6 +94,18 @@ class PostgreSQLDialect {
94
94
  .map(column => this.getColumnDescription(column));
95
95
  });
96
96
  }
97
+ async listViews(sequelize) {
98
+ const schema = sequelize.options.schema || this.getDefaultSchema();
99
+ return sequelize.query(`
100
+ SELECT table_name as "tableName", table_schema as "schema"
101
+ FROM information_schema.views
102
+ WHERE table_schema = :schema
103
+ AND table_catalog = :database;
104
+ `, {
105
+ type: sequelize_1.QueryTypes.SELECT,
106
+ replacements: { schema, database: sequelize.getDatabaseName() },
107
+ });
108
+ }
97
109
  getColumnDescription(dbColumn) {
98
110
  const type = dbColumn.Type.toUpperCase();
99
111
  const elementType = dbColumn.ElementType?.toUpperCase() === 'USER-DEFINED'
@@ -170,4 +182,4 @@ class PostgreSQLDialect {
170
182
  }
171
183
  }
172
184
  exports.default = PostgreSQLDialect;
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9wb3N0Z3Jlc3FsLWRpYWxlY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBa0Q7QUFFbEQsZ0VBQXVDO0FBbUJ2QyxNQUFxQixpQkFBaUI7SUFDcEMsZ0JBQWdCO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQXlDO1FBQzFELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLFVBQXNDLEVBQ3RDLFNBQW9CO1FBRXBCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVO2FBQzlCLEdBQUcsQ0FDRixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNYLGdDQUFnQyxLQUFLOzJDQUNKLEtBQUs7Y0FDbEMsQ0FDUDthQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRW5CLCtEQUErRDtRQUMvRCxvQ0FBb0M7UUFDcEMsTUFBTSxLQUFLLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBK0NKLFVBQVU7O0tBRW5CLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUNwQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsR0FBRztZQUNOLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FB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
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9wb3N0Z3Jlc3FsLWRpYWxlY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBa0Q7QUFFbEQsZ0VBQXVDO0FBdUJ2QyxNQUFxQixpQkFBaUI7SUFDcEMsZ0JBQWdCO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQXlDO1FBQzFELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLFVBQXNDLEVBQ3RDLFNBQW9CO1FBRXBCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVO2FBQzlCLEdBQUcsQ0FDRixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNYLGdDQUFnQyxLQUFLOzJDQUNKLEtBQUs7Y0FDbEMsQ0FDUDthQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRW5CLCtEQUErRDtRQUMvRCxvQ0FBb0M7UUFDcEMsTUFBTSxLQUFLLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBK0NKLFVBQVU7O0tBRW5CLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUNwQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsR0FBRztZQUNOLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FB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
@@ -1,9 +1,10 @@
1
1
  import { Sequelize } from 'sequelize';
2
2
  import IntrospectionDialect, { ColumnDescription } from './dialect.interface';
3
- import { SequelizeTableIdentifier } from '../type-overrides';
3
+ import { SequelizeTableIdentifier, SequelizeWithOptions } from '../type-overrides';
4
4
  export default class SQLiteDialect implements IntrospectionDialect {
5
5
  getDefaultSchema(): string;
6
6
  getTableIdentifier(tableIdentifier: SequelizeTableIdentifier): SequelizeTableIdentifier;
7
+ listViews(sequelize: SequelizeWithOptions): Promise<SequelizeTableIdentifier[]>;
7
8
  listColumns(tableNames: SequelizeTableIdentifier[], sequelize: Sequelize): Promise<ColumnDescription[][]>;
8
9
  private listColumnsForTable;
9
10
  private mapDefaultValue;
@@ -8,6 +8,15 @@ class SQLiteDialect {
8
8
  getTableIdentifier(tableIdentifier) {
9
9
  return tableIdentifier;
10
10
  }
11
+ async listViews(sequelize) {
12
+ return sequelize.query(`
13
+ SELECT name as 'tableName'
14
+ FROM sqlite_master
15
+ WHERE type = 'view';
16
+ `, {
17
+ type: sequelize_1.QueryTypes.SELECT,
18
+ });
19
+ }
11
20
  listColumns(tableNames, sequelize) {
12
21
  if (!tableNames?.length)
13
22
  return Promise.resolve([]);
@@ -66,4 +75,4 @@ class SQLiteDialect {
66
75
  }
67
76
  }
68
77
  exports.default = SQLiteDialect;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlLWRpYWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9zcWxpdGUtZGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFrRDtBQWNsRCxNQUFxQixhQUFhO0lBQ2hDLGdCQUFnQjtRQUNkLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUF5QztRQUMxRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUNULFVBQXNDLEVBQ3RDLFNBQW9CO1FBRXBCLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTTtZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQy9CLGVBQXlDLEVBQ3pDLFNBQW9CO1FBRXBCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDN0MsU0FBUyxDQUFDLEtBQUssQ0FBVywrQkFBK0IsRUFBRTtnQkFDekQsSUFBSSxFQUFFLHNCQUFVLENBQUMsTUFBTTtnQkFDdkIsWUFBWSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUU7YUFDdkQsQ0FBQztZQUNGLFNBQVMsQ0FBQyxLQUFLLENBQVUseURBQXlELEVBQUU7Z0JBQ2xGLElBQUksRUFBRSxzQkFBVSxDQUFDLE1BQU07Z0JBQ3ZCLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFO2FBQ3ZELENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0QyxPQUFPO2dCQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVTtnQkFDekMsVUFBVTtnQkFDVix5REFBeUQ7Z0JBQ3pELHdDQUF3QztnQkFDeEMsYUFBYSxFQUFFLFVBQVUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztnQkFDL0IsVUFBVSxFQUFFLElBQUk7YUFDakIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFnQjtRQUl0QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO1lBQzdFLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLHFCQUFxQixFQUFFLEtBQUs7YUFDN0IsQ0FBQztTQUNIO1FBRUQsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxRSxPQUFPO2dCQUNMLFlBQVksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztnQkFDaEUscUJBQXFCLEVBQUUsS0FBSzthQUM3QixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUU7WUFDNUMsT0FBTztnQkFDTCxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQy9CLHFCQUFxQixFQUFFLEtBQUs7YUFDN0IsQ0FBQztTQUNIO1FBRUQsT0FBTztZQUNMLFlBQVksRUFBRSxNQUFNLENBQUMsVUFBVTtZQUMvQixxQkFBcUIsRUFBRSxJQUFJO1NBQzVCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqRkQsZ0NBaUZDIn0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlLWRpYWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9kaWFsZWN0cy9zcWxpdGUtZGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFrRDtBQWNsRCxNQUFxQixhQUFhO0lBQ2hDLGdCQUFnQjtRQUNkLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUF5QztRQUMxRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUErQjtRQUM3QyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQ3BCOzs7O0tBSUQsRUFDQztZQUNFLElBQUksRUFBRSxzQkFBVSxDQUFDLE1BQU07U0FDeEIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FDVCxVQUFzQyxFQUN0QyxTQUFvQjtRQUVwQixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07WUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQixDQUMvQixlQUF5QyxFQUN6QyxTQUFvQjtRQUVwQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxLQUFLLENBQVcsK0JBQStCLEVBQUU7Z0JBQ3pELElBQUksRUFBRSxzQkFBVSxDQUFDLE1BQU07Z0JBQ3ZCLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFO2FBQ3ZELENBQUM7WUFDRixTQUFTLENBQUMsS0FBSyxDQUFVLHlEQUF5RCxFQUFFO2dCQUNsRixJQUFJLEVBQUUsc0JBQVUsQ0FBQyxNQUFNO2dCQUN2QixZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVMsRUFBRTthQUN2RCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFdEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVU7Z0JBQ3pDLFVBQVU7Z0JBQ1YseURBQXlEO2dCQUN6RCx3Q0FBd0M7Z0JBQ3hDLGFBQWEsRUFBRSxVQUFVLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQzFELE9BQU8sRUFBRSxJQUFJO2dCQUNiLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBZ0I7UUFJdEMsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRTtZQUM3RSxPQUFPO2dCQUNMLFlBQVksRUFBRSxJQUFJO2dCQUNsQixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUM7U0FDSDtRQUVELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUUsT0FBTztnQkFDTCxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7Z0JBQ2hFLHFCQUFxQixFQUFFLEtBQUs7YUFDN0IsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO1lBQzVDLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUMvQixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDL0IscUJBQXFCLEVBQUUsSUFBSTtTQUM1QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOUZELGdDQThGQyJ9
@@ -11,7 +11,7 @@ export default class SqlTypeConverter {
11
11
  * Note that we don't need to write multiple SQL queries, because arrays are only supported by
12
12
  * Postgres
13
13
  */
14
- private static getArrayType;
14
+ private static getArrayTypeForPostgres;
15
15
  private static getScalarType;
16
16
  private static typeMatch;
17
17
  private static typeStartsWith;
@@ -4,7 +4,7 @@ class SqlTypeConverter {
4
4
  static async convert(tableIdentifier, columnInfo) {
5
5
  switch (columnInfo.type) {
6
6
  case 'ARRAY':
7
- return this.getArrayType(tableIdentifier, columnInfo);
7
+ return this.getArrayTypeForPostgres(tableIdentifier, columnInfo);
8
8
  case 'USER-DEFINED':
9
9
  case this.typeMatch(columnInfo.type, SqlTypeConverter.enumRegex):
10
10
  return this.getEnumType(columnInfo);
@@ -24,7 +24,7 @@ class SqlTypeConverter {
24
24
  * Note that we don't need to write multiple SQL queries, because arrays are only supported by
25
25
  * Postgres
26
26
  */
27
- static async getArrayType(tableIdentifier, columnDescription) {
27
+ static async getArrayTypeForPostgres(tableIdentifier, columnDescription) {
28
28
  let subType;
29
29
  if (columnDescription.enumValues?.length) {
30
30
  subType = {
@@ -121,4 +121,4 @@ class SqlTypeConverter {
121
121
  }
122
122
  exports.default = SqlTypeConverter;
123
123
  SqlTypeConverter.enumRegex = /ENUM\((.*)\)/i;
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLXR5cGUtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludHJvc3BlY3Rpb24vaGVscGVycy9zcWwtdHlwZS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFxQixnQkFBZ0I7SUFHbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2xCLGVBQXlDLEVBQ3pDLFVBQTZCO1FBRTdCLFFBQVEsVUFBVSxDQUFDLElBQUksRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV4RCxLQUFLLGNBQWMsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUV0QztnQkFDRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMzRTtJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDeEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUE2QjtRQUN0RCxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUM7WUFDdEMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxDQUFDLENBQUMsMERBQTBEO2dCQUMxRCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQy9CLGVBQXlDLEVB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
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLXR5cGUtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludHJvc3BlY3Rpb24vaGVscGVycy9zcWwtdHlwZS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFxQixnQkFBZ0I7SUFHbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2xCLGVBQXlDLEVBQ3pDLFVBQTZCO1FBRTdCLFFBQVEsVUFBVSxDQUFDLElBQUksRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRW5FLEtBQUssY0FBYyxDQUFDO1lBQ3BCLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztnQkFDOUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXRDO2dCQUNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVELGdFQUFnRTtJQUN4RCxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQTZCO1FBQ3RELE9BQU8sVUFBVSxDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQztZQUN0QyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQ2pELENBQUMsQ0FBQywwREFBMEQ7Z0JBQzFELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUMxQyxlQUF5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
@@ -1,17 +1,19 @@
1
1
  import { Logger } from '@forestadmin/datasource-toolkit';
2
2
  import { Sequelize } from 'sequelize';
3
- import { Introspection, IntrospectionWithoutSource, Table } from './types';
3
+ import { LatestIntrospection, LegacyIntrospection } from './types';
4
4
  export default class Introspector {
5
5
  static readonly FORMAT_VERSION = 1;
6
6
  static readonly SOURCE = "@forestadmin/datasource-sql";
7
- static introspect(sequelize: Sequelize, logger?: Logger): Promise<Introspection>;
8
- static getIntrospectionInLatestFormat(introspection?: Table[] | Introspection | IntrospectionWithoutSource): Introspection | undefined;
7
+ static migrateOrIntrospect(sequelize: Sequelize, logger?: Logger, introspection?: LegacyIntrospection): Promise<LatestIntrospection>;
8
+ static introspect(sequelize: Sequelize, logger?: Logger): Promise<LatestIntrospection>;
9
+ static getIntrospectionInLatestFormat(introspection?: LegacyIntrospection): LatestIntrospection | undefined;
9
10
  private static migrateIntrospectionInLatestFormat;
10
11
  /** Get names of all tables in the public schema of the db */
11
12
  private static getTableNames;
12
13
  private static getTables;
13
14
  /** Instrospect a single table */
14
15
  private static getTable;
16
+ private static getTableReferences;
15
17
  private static getColumn;
16
18
  /**
17
19
  * Remove references to entities that are not present in the schema
@@ -19,5 +21,6 @@ export default class Introspector {
19
21
  */
20
22
  private static sanitizeInPlace;
21
23
  private static logBrokenRelationship;
24
+ private static getViews;
22
25
  }
23
26
  //# sourceMappingURL=introspector.d.ts.map
@@ -7,12 +7,19 @@ 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
9
  class Introspector {
10
+ static async migrateOrIntrospect(sequelize, logger, introspection) {
11
+ const latestIntrospection = this.getIntrospectionInLatestFormat(introspection);
12
+ if (latestIntrospection)
13
+ return latestIntrospection;
14
+ return this.introspect(sequelize, logger);
15
+ }
10
16
  static async introspect(sequelize, logger) {
11
17
  const dialect = (0, dialect_factory_1.default)(sequelize.getDialect());
12
18
  const tableNames = await this.getTableNames(dialect, sequelize);
13
19
  const tables = await this.getTables(dialect, tableNames, sequelize, logger);
20
+ const views = await this.getViews(dialect, sequelize, logger);
14
21
  this.sanitizeInPlace(tables, logger);
15
- return { tables, version: this.FORMAT_VERSION, source: this.SOURCE };
22
+ return { tables, views, version: this.FORMAT_VERSION, source: this.SOURCE };
16
23
  }
17
24
  static getIntrospectionInLatestFormat(introspection) {
18
25
  const formattedIntrospection = this.migrateIntrospectionInLatestFormat(introspection);
@@ -34,26 +41,22 @@ class Introspector {
34
41
  return formattedIntrospection;
35
42
  }
36
43
  static migrateIntrospectionInLatestFormat(introspection) {
37
- if (!introspection) {
44
+ if (!introspection)
38
45
  return undefined;
39
- }
40
46
  // First version of introspection: just an array of tables
41
47
  if (Array.isArray(introspection)) {
42
48
  return {
43
49
  tables: introspection,
50
+ views: [],
44
51
  version: this.FORMAT_VERSION,
45
52
  source: this.SOURCE,
46
53
  };
47
54
  }
48
- // Second version of introspection: did not include the source,
49
- // but was always generated by datasource-sql
50
- if (!Object.prototype.hasOwnProperty.call(introspection, 'source')) {
51
- return {
52
- ...introspection,
53
- source: this.SOURCE,
54
- };
55
- }
56
- return introspection;
55
+ return {
56
+ ...introspection,
57
+ source: introspection.source || this.SOURCE,
58
+ views: introspection.views || [],
59
+ };
57
60
  }
58
61
  /** Get names of all tables in the public schema of the db */
59
62
  static async getTableNames(dialect, sequelize) {
@@ -89,23 +92,10 @@ class Introspector {
89
92
  // Plus it has some bugs with schema handling in postgresql that forces us to be sure that
90
93
  // the table identifier is correct on our side
91
94
  const tableIdentifierForQuery = dialect.getTableIdentifier(tableIdentifier);
92
- const [tableIndexes, tableReferences] = await Promise.all([
95
+ const [tableIndexes, references] = await Promise.all([
93
96
  queryInterface.showIndex(tableIdentifierForQuery),
94
- queryInterface.getForeignKeyReferencesForTable(tableIdentifierForQuery),
97
+ this.getTableReferences(tableIdentifier, tableIdentifierForQuery, queryInterface),
95
98
  ]);
96
- const references = tableReferences
97
- .map(tableReference => ({
98
- ...tableReference,
99
- tableName: typeof tableReference.tableName === 'string'
100
- ? tableReference.tableName
101
- : // On SQLite, the query interface returns an object with a tableName property
102
- tableReference.tableName.tableName,
103
- }))
104
- .filter(
105
- // There is a bug right now with sequelize on postgresql: returned association
106
- // are not filtered on the schema. So we have to filter them manually.
107
- // Should be fixed with Sequelize v7
108
- r => r.tableName === tableIdentifier.tableName && r.tableSchema === tableIdentifier.schema);
109
99
  const columns = await Promise.all(columnDescriptions.map(async (columnDescription) => {
110
100
  const columnReferences = references.filter(r => r.columnName === columnDescription.name);
111
101
  const options = {
@@ -124,6 +114,22 @@ class Introspector {
124
114
  .map(i => i.fields.map(f => f.attribute)),
125
115
  };
126
116
  }
117
+ static async getTableReferences(tableIdentifier, tableIdentifierForQuery, queryInterface) {
118
+ const tableReferences = await queryInterface.getForeignKeyReferencesForTable(tableIdentifierForQuery);
119
+ return tableReferences
120
+ .map(tableReference => ({
121
+ ...tableReference,
122
+ tableName: typeof tableReference.tableName === 'string'
123
+ ? tableReference.tableName
124
+ : // On SQLite, the query interface returns an object with a tableName property
125
+ tableReference.tableName.tableName,
126
+ }))
127
+ .filter(
128
+ // There is a bug right now with sequelize on postgresql: returned association
129
+ // are not filtered on the schema. So we have to filter them manually.
130
+ // Should be fixed with Sequelize v7
131
+ r => r.tableName === tableIdentifier.tableName && r.tableSchema === tableIdentifier.schema);
132
+ }
127
133
  static async getColumn(sequelize, logger, tableIdentifier, options) {
128
134
  const { name, description, references } = options;
129
135
  try {
@@ -155,7 +161,7 @@ class Introspector {
155
161
  */
156
162
  static sanitizeInPlace(tables, logger) {
157
163
  for (const table of tables) {
158
- // Remove unique indexes which depennd on columns that are not present in the table.
164
+ // Remove unique indexes which depend on columns that are not present in the table.
159
165
  table.unique = table.unique.filter(unique => unique.every(column => table.columns.find(c => c.name === column)));
160
166
  for (const column of table.columns) {
161
167
  const references = column.constraints || [];
@@ -177,8 +183,29 @@ class Introspector {
177
183
  `Failed to load constraints on relation on table '${tableName}' referencing '${constraint.table}.${constraint.column}'. The relation will be ignored.`);
178
184
  });
179
185
  }
186
+ static async getViews(dialect, sequelize, logger) {
187
+ const viewNames = await dialect.listViews(sequelize);
188
+ const allColumns = await dialect.listColumns(viewNames, sequelize);
189
+ return Promise.all(viewNames.map(async (viewName, index) => {
190
+ const viewColumns = allColumns[index];
191
+ const columns = await Promise.all(viewColumns.map(async (columnDescription) => {
192
+ const options = {
193
+ name: columnDescription.name,
194
+ description: columnDescription,
195
+ references: [],
196
+ };
197
+ return this.getColumn(sequelize, logger, viewName, options);
198
+ }));
199
+ return {
200
+ name: viewName.tableName,
201
+ schema: viewName.schema,
202
+ columns: columns.filter(Boolean),
203
+ unique: [],
204
+ };
205
+ }));
206
+ }
180
207
  }
181
208
  exports.default = Introspector;
182
209
  Introspector.FORMAT_VERSION = 1;
183
210
  Introspector.SOURCE = '@forestadmin/datasource-sql';
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50cm9zcGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludHJvc3BlY3Rpb24vaW50cm9zcGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsaUZBQXFFO0FBRXJFLDBGQUFnRTtBQUNoRSxzRkFBNEQ7QUFTNUQsTUFBcUIsWUFBWTtJQUkvQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFvQixFQUFFLE1BQWU7UUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBQSx5QkFBMkIsRUFBQyxTQUFTLENBQUMsVUFBVSxFQUFhLENBQUMsQ0FBQztRQUUvRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFNBQWlDLENBQUMsQ0FBQztRQUN4RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNLENBQUMsOEJBQThCLENBQ25DLGFBQW9FO1FBRXBFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRGLElBQUksc0JBQXNCLElBQUksc0JBQXNCLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDM0UsTUFBTSxJQUFJLEtBQUs7WUFDYixtQ0FBbUM7WUFDbkMsa0dBQWtHLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUNuSSxDQUFDO1NBQ0g7UUFFRCxJQUFJLHNCQUFzQixJQUFJLHNCQUFzQixD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
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50cm9zcGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludHJvc3BlY3Rpb24vaW50cm9zcGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsaUZBQXFFO0FBRXJFLDBGQUFnRTtBQUNoRSxzRkFBNEQ7QUFTNUQsTUFBcUIsWUFBWTtJQUkvQixNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUM5QixTQUFvQixFQUNwQixNQUFlLEVBQ2YsYUFBbUM7UUFFbkMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFL0UsSUFBSSxtQkFBbUI7WUFBRSxPQUFPLG1CQUFtQixDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQW9CLEVBQUUsTUFBZTtRQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUEyQixFQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQWEsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBaUMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQWlDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFj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
@@ -1,3 +1,3 @@
1
- import { Introspection, IntrospectionWithoutSource } from './types';
2
- export default function listCollectionsFromIntrospection(introspection: Introspection | Introspection['tables'] | IntrospectionWithoutSource): string[];
1
+ import { LegacyIntrospection } from './types';
2
+ export default function listCollectionsFromIntrospection(introspection: LegacyIntrospection): string[];
3
3
  //# sourceMappingURL=list-collections-from-introspection.d.ts.map
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const introspector_1 = __importDefault(require("./introspector"));
3
7
  function listCollectionsFromIntrospection(introspection) {
4
8
  if (!introspection) {
5
9
  return [];
6
10
  }
7
- // Support the previous format of introspection
8
- const tables = Array.isArray(introspection) ? introspection : introspection.tables;
9
- return tables.map(table => table.name);
11
+ return introspector_1.default.getIntrospectionInLatestFormat(introspection).tables.map(table => table.name);
10
12
  }
11
13
  exports.default = listCollectionsFromIntrospection;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb2xsZWN0aW9ucy1mcm9tLWludHJvc3BlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9saXN0LWNvbGxlY3Rpb25zLWZyb20taW50cm9zcGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLFNBQXdCLGdDQUFnQyxDQUN0RCxhQUFtRjtJQUVuRixJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2xCLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCwrQ0FBK0M7SUFDL0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBRW5GLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBWEQsbURBV0MifQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb2xsZWN0aW9ucy1mcm9tLWludHJvc3BlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50cm9zcGVjdGlvbi9saXN0LWNvbGxlY3Rpb25zLWZyb20taW50cm9zcGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtFQUEwQztBQUcxQyxTQUF3QixnQ0FBZ0MsQ0FDdEQsYUFBa0M7SUFFbEMsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUNsQixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsT0FBTyxzQkFBWSxDQUFDLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQVJELG1EQVFDIn0=
@@ -38,11 +38,12 @@ export type Table = {
38
38
  }[];
39
39
  }[];
40
40
  };
41
- export type IntrospectionWithoutSource = {
41
+ export type ObjectIntrospection = {
42
42
  tables: Table[];
43
43
  version: number;
44
+ source?: '@forestadmin/datasource-sql';
45
+ views?: Table[];
44
46
  };
45
- export type Introspection = IntrospectionWithoutSource & {
46
- source: '@forestadmin/datasource-sql';
47
- };
47
+ export type LegacyIntrospection = ObjectIntrospection | Table[];
48
+ export type LatestIntrospection = Required<ObjectIntrospection>;
48
49
  //# sourceMappingURL=types.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import { Logger } from '@forestadmin/datasource-toolkit';
2
2
  import { Sequelize } from 'sequelize';
3
- import { Table } from '../introspection/types';
3
+ import { LatestIntrospection } from '../introspection/types';
4
4
  export default class ModelBuilder {
5
- static defineModels(sequelize: Sequelize, logger: Logger, tables: Table[]): void;
6
- private static defineModel;
5
+ static defineModels(sequelize: Sequelize, logger: Logger, introspection: LatestIntrospection): void;
6
+ private static defineModelFromTable;
7
7
  private static buildModelAttributes;
8
8
  /**
9
9
  * When the primary key is missing, we attempt to find a column that may act as such.
@@ -6,12 +6,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const sequelize_1 = require("sequelize");
7
7
  const sequelize_type_1 = __importDefault(require("./helpers/sequelize-type"));
8
8
  class ModelBuilder {
9
- static defineModels(sequelize, logger, tables) {
10
- for (const table of tables) {
11
- this.defineModel(sequelize, logger, table);
9
+ static defineModels(sequelize, logger, introspection) {
10
+ for (const table of introspection.tables) {
11
+ this.defineModelFromTable(sequelize, logger, table);
12
+ }
13
+ for (const table of introspection.views) {
14
+ this.defineModelFromTable(sequelize, logger, { ...table, view: true });
12
15
  }
13
16
  }
14
- static defineModel(sequelize, logger, table) {
17
+ static defineModelFromTable(sequelize, logger, table) {
15
18
  const hasTimestamps = this.hasTimestamps(table);
16
19
  const isParanoid = this.isParanoid(table);
17
20
  const dialect = sequelize.getDialect();
@@ -75,22 +78,29 @@ class ModelBuilder {
75
78
  */
76
79
  static guessPrimaryKeyInPlace(logger, table, attributes) {
77
80
  // Try to find a column named "id".
78
- let primaryKeys = table.columns.some(c => c.name === 'id') ? ['id'] : [];
81
+ const columnId = table.columns.find(c => c.name.toLowerCase() === 'id')?.name;
82
+ let primaryKeys = columnId ? [columnId] : [];
79
83
  // If there is no id column, look at unique indexes, and use the shortest one.
80
84
  // (hopefully only one column, but this can also be a composite key for many-to-many tables)
81
85
  if (!primaryKeys.length && table.unique.length) {
82
86
  [primaryKeys] = [...table.unique].sort((a, b) => a.length - b.length);
83
87
  }
84
- // If all the columns have contraints (e.g. foreign keys), use all of them as a composite key.
88
+ // If all the columns have constraints (e.g. foreign keys), use all of them as a composite key.
85
89
  if (!primaryKeys.length &&
86
90
  table.columns.length === 2 &&
87
91
  table.columns.every(c => c.constraints.length)) {
88
92
  primaryKeys = table.columns.map(c => c.name);
89
93
  }
94
+ // in case of views, it may occur that there is no primary key defined
95
+ // in this case, we just pick an arbitrary colum, since it will be read-only anyway
96
+ if (!primaryKeys.length && table.view) {
97
+ primaryKeys = Object.keys(attributes).slice(0, 1);
98
+ }
90
99
  for (const column of primaryKeys) {
91
100
  attributes[column].primaryKey = true;
92
101
  }
93
- if (primaryKeys.length) {
102
+ // View does not have primary key, so we don't need to warn about it. It is the normal behavior.
103
+ if (primaryKeys.length && !table.view) {
94
104
  logger?.('Warn', `Table "${table.name}" has no primary key. Using "${primaryKeys.join(', ')}".`);
95
105
  }
96
106
  }
@@ -103,4 +113,4 @@ class ModelBuilder {
103
113
  }
104
114
  }
105
115
  exports.default = ModelBuilder;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JtLWJ1aWxkZXIvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx5Q0FBK0Q7QUFJL0QsOEVBQTREO0FBRzVELE1BQXFCLFlBQVk7SUFDL0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFvQixFQUFFLE1BQWMsRUFBRSxNQUFlO1FBQ3ZFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQW9CLEVBQUUsTUFBYyxFQUFFLEtBQVk7UUFDM0UsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhHLElBQUk7WUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNyRCxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ3JCLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2FBQ3JCLENBQUMsQ0FBQztZQUVILHVFQUF1RTtZQUN2RSx3RUFBd0U7WUFDeEUseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENB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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JtLWJ1aWxkZXIvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx5Q0FBK0Q7QUFJL0QsOEVBQTREO0FBSzVELE1BQXFCLFlBQVk7SUFDL0IsTUFBTSxDQUFDLFlBQVksQ0FDakIsU0FBb0IsRUFDcEIsTUFBYyxFQUNkLGFBQWtDO1FBRWxDLEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyRDtRQUVELEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRTtZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsU0FBb0IsRUFDcEIsTUFBYyxFQUNkLEtBQWtCO1FBRWxCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVoRyxJQUFJO1lBQ0YsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDckQsU0FBUyxFQUFF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
@@ -1,8 +1,8 @@
1
1
  import { Logger } from '@forestadmin/datasource-toolkit';
2
2
  import { Sequelize } from 'sequelize';
3
- import { Table } from '../introspection/types';
3
+ import { LatestIntrospection } from '../introspection/types';
4
4
  export default class RelationBuilder {
5
- static defineRelations(sequelize: Sequelize, logger: Logger, tables: Table[]): void;
5
+ static defineRelations(sequelize: Sequelize, logger: Logger, introspection: LatestIntrospection): void;
6
6
  private static defineTableRelations;
7
7
  private static defineRelation;
8
8
  }
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const relation_extractor_1 = __importDefault(require("./helpers/relation-extractor"));
7
7
  const relation_name_generator_1 = __importDefault(require("./helpers/relation-name-generator"));
8
8
  class RelationBuilder {
9
- static defineRelations(sequelize, logger, tables) {
10
- for (const table of tables) {
11
- this.defineTableRelations(sequelize, logger, table, tables);
9
+ static defineRelations(sequelize, logger, introspection) {
10
+ for (const table of [...introspection.tables, ...introspection.views]) {
11
+ this.defineTableRelations(sequelize, logger, table, introspection.tables);
12
12
  }
13
13
  }
14
14
  static defineTableRelations(sequelize, logger, table, tables) {
@@ -61,4 +61,4 @@ class RelationBuilder {
61
61
  }
62
62
  }
63
63
  exports.default = RelationBuilder;
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29ybS1idWlsZGVyL3JlbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLHNGQUE2RDtBQUM3RCxnR0FBc0U7QUFJdEUsTUFBcUIsZUFBZTtJQUNsQyxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQW9CLEVBQUUsTUFBYyxFQUFFLE1BQWU7UUFDMUUsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsU0FBb0IsRUFDcEIsTUFBYyxFQUNkLEtBQVksRUFDWixNQUFlO1FBRWYsTUFBTSxTQUFTLEdBQUcsNEJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEUsTUFBTSxhQUFhLEdBQUcsaUNBQXFCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXJGLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWhDLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzlDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLHNCQUFzQixLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQzVGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFvQixFQUFFLFFBQWtCLEVBQUUsRUFBVTtRQUNoRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ2pDLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUNqQyxFQUFFO2dCQUNGLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDL0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0I7YUFDckMsQ0FBQyxDQUFDO1NBQ0o7YUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUMvQixFQUFFO2dCQUNGLFVBQVUsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDOUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxlQUFlO2FBQ3BDLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUM1QyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDckMsRUFBRTtnQkFDRixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM5QixTQUFTLEVBQUUsUUFBUSxDQUFDLGdCQUFnQjtnQkFDcEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxlQUFlO2FBQ3BDLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsRUFBRTtnQkFDRixVQUFVLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsZUFBZTthQUNwQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQTVERCxrQ0E0REMifQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29ybS1idWlsZGVyL3JlbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLHNGQUE2RDtBQUM3RCxnR0FBc0U7QUFJdEUsTUFBcUIsZUFBZTtJQUNsQyxNQUFNLENBQUMsZUFBZSxDQUNwQixTQUFvQixFQUNwQixNQUFjLEVBQ2QsYUFBa0M7UUFFbEMsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsU0FBb0IsRUFDcEIsTUFBYyxFQUNkLEtBQVksRUFDWixNQUFlO1FBRWYsTUFBTSxTQUFTLEdBQUcsNEJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEUsTUFBTSxhQUFhLEdBQUcsaUNBQXFCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXJGLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWhDLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzlDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLHNCQUFzQixLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQzVGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFvQixFQUFFLFFBQWtCLEVBQUUsRUFBVTtRQUNoRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ2pDLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUNqQyxFQUFFO2dCQUNGLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDL0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0I7YUFDckMsQ0FBQyxDQUFDO1NBQ0o7YUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUMvQixFQUFFO2dCQUNGLFVBQVUsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDOUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxlQUFlO2FBQ3BDLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUM1QyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDckMsRUFBRTtnQkFDRixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM5QixTQUFTLEVBQUUsUUFBUSxDQUFDLGdCQUFnQjtnQkFDcEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxlQUFlO2FBQ3BDLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsRUFBRTtnQkFDRixVQUFVLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsZUFBZTthQUNwQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQWhFRCxrQ0FnRUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/datasource-sql",
3
- "version": "1.11.2",
3
+ "version": "1.12.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.7.1",
15
+ "@forestadmin/datasource-sequelize": "1.8.0",
16
16
  "@forestadmin/datasource-toolkit": "1.32.2",
17
17
  "pluralize": "^8.0.0",
18
18
  "sequelize": "^6.28.0",