@nocobase/database 1.2.12-alpha → 1.3.0-alpha.20240710084543

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/package.json +4 -4
  2. package/lib/collection-factory.d.ts +0 -25
  3. package/lib/collection-factory.js +0 -61
  4. package/lib/collection-group-manager.d.ts +0 -34
  5. package/lib/collection-group-manager.js +0 -66
  6. package/lib/collection-importer.d.ts +0 -15
  7. package/lib/collection-importer.js +0 -83
  8. package/lib/collection.d.ts +0 -145
  9. package/lib/collection.js +0 -663
  10. package/lib/database-utils/index.d.ts +0 -16
  11. package/lib/database-utils/index.js +0 -75
  12. package/lib/database.d.ts +0 -228
  13. package/lib/database.js +0 -795
  14. package/lib/decorators/must-have-filter-decorator.d.ts +0 -10
  15. package/lib/decorators/must-have-filter-decorator.js +0 -48
  16. package/lib/decorators/target-collection-decorator.d.ts +0 -10
  17. package/lib/decorators/target-collection-decorator.js +0 -56
  18. package/lib/decorators/transaction-decorator.d.ts +0 -9
  19. package/lib/decorators/transaction-decorator.js +0 -95
  20. package/lib/eager-loading/eager-loading-tree.d.ts +0 -39
  21. package/lib/eager-loading/eager-loading-tree.js +0 -448
  22. package/lib/errors/identifier-error.d.ts +0 -11
  23. package/lib/errors/identifier-error.js +0 -44
  24. package/lib/errors/zero-column-table-error.d.ts +0 -10
  25. package/lib/errors/zero-column-table-error.js +0 -40
  26. package/lib/features/references-map.d.ts +0 -29
  27. package/lib/features/references-map.js +0 -120
  28. package/lib/features/referential-integrity-check.d.ts +0 -16
  29. package/lib/features/referential-integrity-check.js +0 -86
  30. package/lib/field-repository/array-field-repository.d.ts +0 -36
  31. package/lib/field-repository/array-field-repository.js +0 -179
  32. package/lib/fields/array-field.d.ts +0 -19
  33. package/lib/fields/array-field.js +0 -66
  34. package/lib/fields/belongs-to-field.d.ts +0 -25
  35. package/lib/fields/belongs-to-field.js +0 -166
  36. package/lib/fields/belongs-to-many-field.d.ts +0 -28
  37. package/lib/fields/belongs-to-many-field.js +0 -196
  38. package/lib/fields/boolean-field.d.ts +0 -16
  39. package/lib/fields/boolean-field.js +0 -45
  40. package/lib/fields/context-field.d.ts +0 -22
  41. package/lib/fields/context-field.js +0 -79
  42. package/lib/fields/date-field.d.ts +0 -21
  43. package/lib/fields/date-field.js +0 -73
  44. package/lib/fields/field.d.ts +0 -52
  45. package/lib/fields/field.js +0 -168
  46. package/lib/fields/has-inverse-field.d.ts +0 -12
  47. package/lib/fields/has-inverse-field.js +0 -24
  48. package/lib/fields/has-many-field.d.ts +0 -76
  49. package/lib/fields/has-many-field.js +0 -165
  50. package/lib/fields/has-one-field.d.ts +0 -76
  51. package/lib/fields/has-one-field.js +0 -159
  52. package/lib/fields/index.d.ts +0 -54
  53. package/lib/fields/index.js +0 -74
  54. package/lib/fields/json-field.d.ts +0 -22
  55. package/lib/fields/json-field.js +0 -63
  56. package/lib/fields/nanoid-field.d.ts +0 -22
  57. package/lib/fields/nanoid-field.js +0 -65
  58. package/lib/fields/number-field.d.ts +0 -49
  59. package/lib/fields/number-field.js +0 -94
  60. package/lib/fields/password-field.d.ts +0 -29
  61. package/lib/fields/password-field.js +0 -106
  62. package/lib/fields/radio-field.d.ts +0 -24
  63. package/lib/fields/radio-field.js +0 -75
  64. package/lib/fields/relation-field.d.ts +0 -31
  65. package/lib/fields/relation-field.js +0 -94
  66. package/lib/fields/set-field.d.ts +0 -18
  67. package/lib/fields/set-field.js +0 -55
  68. package/lib/fields/sort-field.d.ts +0 -22
  69. package/lib/fields/sort-field.js +0 -197
  70. package/lib/fields/string-field.d.ts +0 -16
  71. package/lib/fields/string-field.js +0 -45
  72. package/lib/fields/text-field.d.ts +0 -18
  73. package/lib/fields/text-field.js +0 -53
  74. package/lib/fields/time-field.d.ts +0 -16
  75. package/lib/fields/time-field.js +0 -45
  76. package/lib/fields/uid-field.d.ts +0 -21
  77. package/lib/fields/uid-field.js +0 -72
  78. package/lib/fields/uuid-field.d.ts +0 -20
  79. package/lib/fields/uuid-field.js +0 -63
  80. package/lib/fields/virtual-field.d.ts +0 -16
  81. package/lib/fields/virtual-field.js +0 -45
  82. package/lib/filter-match.d.ts +0 -9
  83. package/lib/filter-match.js +0 -75
  84. package/lib/filter-parser.d.ts +0 -29
  85. package/lib/filter-parser.js +0 -238
  86. package/lib/helpers.d.ts +0 -11
  87. package/lib/helpers.js +0 -182
  88. package/lib/index.d.ts +0 -37
  89. package/lib/index.js +0 -138
  90. package/lib/inherited-collection.d.ts +0 -22
  91. package/lib/inherited-collection.js +0 -147
  92. package/lib/inherited-map.d.ts +0 -29
  93. package/lib/inherited-map.js +0 -125
  94. package/lib/inherited-sync-runner.d.ts +0 -12
  95. package/lib/inherited-sync-runner.js +0 -184
  96. package/lib/interface-manager.d.ts +0 -17
  97. package/lib/interface-manager.js +0 -50
  98. package/lib/interfaces/base-interface.d.ts +0 -33
  99. package/lib/interfaces/base-interface.js +0 -80
  100. package/lib/interfaces/boolean-interface.d.ts +0 -13
  101. package/lib/interfaces/boolean-interface.js +0 -70
  102. package/lib/interfaces/checkboxes-interface.d.ts +0 -11
  103. package/lib/interfaces/checkboxes-interface.js +0 -41
  104. package/lib/interfaces/datetime-interface.d.ts +0 -13
  105. package/lib/interfaces/datetime-interface.js +0 -108
  106. package/lib/interfaces/index.d.ts +0 -14
  107. package/lib/interfaces/index.js +0 -40
  108. package/lib/interfaces/integer-interface.d.ts +0 -12
  109. package/lib/interfaces/integer-interface.js +0 -44
  110. package/lib/interfaces/json-interface.d.ts +0 -13
  111. package/lib/interfaces/json-interface.js +0 -47
  112. package/lib/interfaces/many-to-many-interface.d.ts +0 -11
  113. package/lib/interfaces/many-to-many-interface.js +0 -41
  114. package/lib/interfaces/many-to-one-interface.d.ts +0 -11
  115. package/lib/interfaces/many-to-one-interface.js +0 -41
  116. package/lib/interfaces/multiple-select-interface.d.ts +0 -13
  117. package/lib/interfaces/multiple-select-interface.js +0 -76
  118. package/lib/interfaces/number-interface.d.ts +0 -15
  119. package/lib/interfaces/number-interface.js +0 -72
  120. package/lib/interfaces/one-belongs-to-one-interface.d.ts +0 -11
  121. package/lib/interfaces/one-belongs-to-one-interface.js +0 -41
  122. package/lib/interfaces/one-has-one-interface.d.ts +0 -11
  123. package/lib/interfaces/one-has-one-interface.js +0 -41
  124. package/lib/interfaces/one-to-many-interface.d.ts +0 -11
  125. package/lib/interfaces/one-to-many-interface.js +0 -41
  126. package/lib/interfaces/percent-interface.d.ts +0 -13
  127. package/lib/interfaces/percent-interface.js +0 -55
  128. package/lib/interfaces/select-interface.d.ts +0 -13
  129. package/lib/interfaces/select-interface.js +0 -63
  130. package/lib/interfaces/to-many-interface.d.ts +0 -12
  131. package/lib/interfaces/to-many-interface.js +0 -61
  132. package/lib/interfaces/to-one-interface.d.ts +0 -13
  133. package/lib/interfaces/to-one-interface.js +0 -61
  134. package/lib/interfaces/utils.d.ts +0 -10
  135. package/lib/interfaces/utils.js +0 -72
  136. package/lib/listeners/adjacency-list.d.ts +0 -10
  137. package/lib/listeners/adjacency-list.js +0 -51
  138. package/lib/listeners/append-child-collection-name-after-repository-find.d.ts +0 -14
  139. package/lib/listeners/append-child-collection-name-after-repository-find.js +0 -75
  140. package/lib/listeners/index.d.ts +0 -10
  141. package/lib/listeners/index.js +0 -42
  142. package/lib/magic-attribute-model.d.ts +0 -16
  143. package/lib/magic-attribute-model.js +0 -213
  144. package/lib/migration.d.ts +0 -43
  145. package/lib/migration.js +0 -112
  146. package/lib/mock-database.d.ts +0 -33
  147. package/lib/mock-database.js +0 -136
  148. package/lib/model-hook.d.ts +0 -20
  149. package/lib/model-hook.js +0 -96
  150. package/lib/model.d.ts +0 -32
  151. package/lib/model.js +0 -179
  152. package/lib/operators/array.d.ts +0 -10
  153. package/lib/operators/array.js +0 -196
  154. package/lib/operators/association.d.ts +0 -10
  155. package/lib/operators/association.js +0 -44
  156. package/lib/operators/boolean.d.ts +0 -10
  157. package/lib/operators/boolean.js +0 -47
  158. package/lib/operators/child-collection.d.ts +0 -10
  159. package/lib/operators/child-collection.js +0 -77
  160. package/lib/operators/date.d.ts +0 -10
  161. package/lib/operators/date.js +0 -149
  162. package/lib/operators/empty.d.ts +0 -13
  163. package/lib/operators/empty.js +0 -102
  164. package/lib/operators/eq.d.ts +0 -10
  165. package/lib/operators/eq.js +0 -44
  166. package/lib/operators/index.d.ts +0 -13
  167. package/lib/operators/index.js +0 -63
  168. package/lib/operators/ne.d.ts +0 -10
  169. package/lib/operators/ne.js +0 -49
  170. package/lib/operators/notIn.d.ts +0 -10
  171. package/lib/operators/notIn.js +0 -42
  172. package/lib/operators/string.d.ts +0 -10
  173. package/lib/operators/string.js +0 -118
  174. package/lib/operators/utils.d.ts +0 -12
  175. package/lib/operators/utils.js +0 -53
  176. package/lib/options-parser.d.ts +0 -45
  177. package/lib/options-parser.js +0 -350
  178. package/lib/query-interface/mysql-query-interface.d.ts +0 -44
  179. package/lib/query-interface/mysql-query-interface.js +0 -134
  180. package/lib/query-interface/postgres-query-interface.d.ts +0 -41
  181. package/lib/query-interface/postgres-query-interface.js +0 -207
  182. package/lib/query-interface/query-interface-builder.d.ts +0 -10
  183. package/lib/query-interface/query-interface-builder.js +0 -55
  184. package/lib/query-interface/query-interface.d.ts +0 -52
  185. package/lib/query-interface/query-interface.js +0 -59
  186. package/lib/query-interface/sqlite-query-interface.d.ts +0 -44
  187. package/lib/query-interface/sqlite-query-interface.js +0 -141
  188. package/lib/relation-repository/belongs-to-many-repository.d.ts +0 -28
  189. package/lib/relation-repository/belongs-to-many-repository.js +0 -248
  190. package/lib/relation-repository/belongs-to-repository.d.ts +0 -17
  191. package/lib/relation-repository/belongs-to-repository.js +0 -51
  192. package/lib/relation-repository/hasmany-repository.d.ts +0 -21
  193. package/lib/relation-repository/hasmany-repository.js +0 -158
  194. package/lib/relation-repository/hasone-repository.d.ts +0 -17
  195. package/lib/relation-repository/hasone-repository.js +0 -51
  196. package/lib/relation-repository/multiple-relation-repository.d.ts +0 -27
  197. package/lib/relation-repository/multiple-relation-repository.js +0 -200
  198. package/lib/relation-repository/relation-repository.d.ts +0 -38
  199. package/lib/relation-repository/relation-repository.js +0 -175
  200. package/lib/relation-repository/single-relation-repository.d.ts +0 -36
  201. package/lib/relation-repository/single-relation-repository.js +0 -151
  202. package/lib/relation-repository/types.d.ts +0 -15
  203. package/lib/relation-repository/types.js +0 -24
  204. package/lib/repositories/tree-repository/adjacency-list-repository.d.ts +0 -26
  205. package/lib/repositories/tree-repository/adjacency-list-repository.js +0 -192
  206. package/lib/repositories/view-repository.d.ts +0 -11
  207. package/lib/repositories/view-repository.js +0 -41
  208. package/lib/repository.d.ts +0 -214
  209. package/lib/repository.js +0 -609
  210. package/lib/sql-parser/index.d.ts +0 -13
  211. package/lib/sql-parser/index.js +0 -33
  212. package/lib/sync-runner.d.ts +0 -41
  213. package/lib/sync-runner.js +0 -335
  214. package/lib/types.d.ts +0 -57
  215. package/lib/types.js +0 -24
  216. package/lib/update-associations.d.ts +0 -68
  217. package/lib/update-associations.js +0 -429
  218. package/lib/update-guard.d.ts +0 -36
  219. package/lib/update-guard.js +0 -212
  220. package/lib/utils.d.ts +0 -15
  221. package/lib/utils.js +0 -136
  222. package/lib/value-parsers/array-value-parser.d.ts +0 -16
  223. package/lib/value-parsers/array-value-parser.js +0 -67
  224. package/lib/value-parsers/base-value-parser.d.ts +0 -20
  225. package/lib/value-parsers/base-value-parser.js +0 -72
  226. package/lib/value-parsers/boolean-value-parser.d.ts +0 -12
  227. package/lib/value-parsers/boolean-value-parser.js +0 -61
  228. package/lib/value-parsers/date-value-parser.d.ts +0 -13
  229. package/lib/value-parsers/date-value-parser.js +0 -99
  230. package/lib/value-parsers/index.d.ts +0 -20
  231. package/lib/value-parsers/index.js +0 -87
  232. package/lib/value-parsers/json-value-parser.d.ts +0 -12
  233. package/lib/value-parsers/json-value-parser.js +0 -56
  234. package/lib/value-parsers/number-value-parser.d.ts +0 -12
  235. package/lib/value-parsers/number-value-parser.js +0 -67
  236. package/lib/value-parsers/string-value-parser.d.ts +0 -16
  237. package/lib/value-parsers/string-value-parser.js +0 -73
  238. package/lib/value-parsers/to-many-value-parser.d.ts +0 -21
  239. package/lib/value-parsers/to-many-value-parser.js +0 -117
  240. package/lib/value-parsers/to-one-value-parser.d.ts +0 -12
  241. package/lib/value-parsers/to-one-value-parser.js +0 -57
  242. package/lib/view/field-type-map.d.ts +0 -109
  243. package/lib/view/field-type-map.js +0 -101
  244. package/lib/view/view-inference.d.ts +0 -40
  245. package/lib/view/view-inference.js +0 -157
  246. package/lib/view-collection.d.ts +0 -14
  247. package/lib/view-collection.js +0 -54
@@ -1,134 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __create = Object.create;
11
- var __defProp = Object.defineProperty;
12
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
- var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
- var __hasOwnProp = Object.prototype.hasOwnProperty;
16
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
- var __export = (target, all) => {
18
- for (var name in all)
19
- __defProp(target, name, { get: all[name], enumerable: true });
20
- };
21
- var __copyProps = (to, from, except, desc) => {
22
- if (from && typeof from === "object" || typeof from === "function") {
23
- for (let key of __getOwnPropNames(from))
24
- if (!__hasOwnProp.call(to, key) && key !== except)
25
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
- }
27
- return to;
28
- };
29
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
- // If the importer is in node compatibility mode or this is not an ESM
31
- // file that has been converted to a CommonJS file using a Babel-
32
- // compatible transform (i.e. "__esModule" has not been set), then set
33
- // "default" to the CommonJS "module.exports" for node compatibility.
34
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
- mod
36
- ));
37
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
- var mysql_query_interface_exports = {};
39
- __export(mysql_query_interface_exports, {
40
- default: () => MysqlQueryInterface
41
- });
42
- module.exports = __toCommonJS(mysql_query_interface_exports);
43
- var import_sql_parser = __toESM(require("../sql-parser"));
44
- var import_query_interface = __toESM(require("./query-interface"));
45
- /* istanbul ignore file -- @preserve */
46
- const _MysqlQueryInterface = class _MysqlQueryInterface extends import_query_interface.default {
47
- constructor(db) {
48
- super(db);
49
- }
50
- async collectionTableExists(collection, options) {
51
- const transaction = options == null ? void 0 : options.transaction;
52
- const tableName = collection.model.tableName;
53
- const databaseName = this.db.options.database;
54
- const sql = `SELECT TABLE_NAME
55
- FROM INFORMATION_SCHEMA.TABLES
56
- WHERE TABLE_SCHEMA = '${databaseName}'
57
- AND TABLE_NAME = '${tableName}'`;
58
- const results = await this.db.sequelize.query(sql, { type: "SELECT", transaction });
59
- return results.length > 0;
60
- }
61
- async listViews() {
62
- const sql = `SELECT TABLE_NAME as name, VIEW_DEFINITION as definition
63
- FROM information_schema.views
64
- WHERE TABLE_SCHEMA = DATABASE()
65
- ORDER BY TABLE_NAME;`;
66
- return await this.db.sequelize.query(sql, { type: "SELECT" });
67
- }
68
- async viewColumnUsage(options) {
69
- try {
70
- const { ast } = this.parseSQL(await this.viewDef(options.viewName));
71
- const columns = ast.columns;
72
- const results = [];
73
- for (const column of columns) {
74
- if (column.expr.type === "column_ref") {
75
- results.push([
76
- column.as || column.expr.column,
77
- {
78
- column_name: column.expr.column,
79
- table_name: column.expr.table
80
- }
81
- ]);
82
- }
83
- }
84
- return Object.fromEntries(results);
85
- } catch (e) {
86
- this.db.logger.warn(e);
87
- return {};
88
- }
89
- }
90
- parseSQL(sql) {
91
- return import_sql_parser.default.parse(sql);
92
- }
93
- async viewDef(viewName) {
94
- const viewDefinition = await this.db.sequelize.query(`SHOW CREATE VIEW ${viewName}`, { type: "SELECT" });
95
- const createView = viewDefinition[0]["Create View"];
96
- const regex = /(?<=AS\s)([\s\S]*)/i;
97
- const match = createView.match(regex);
98
- const sql = match[0];
99
- return sql;
100
- }
101
- async showTableDefinition(tableInfo) {
102
- const { tableName } = tableInfo;
103
- const sql = `SHOW CREATE TABLE ${tableName}`;
104
- const results = await this.db.sequelize.query(sql, { type: "SELECT" });
105
- return results[0]["Create Table"];
106
- }
107
- async getAutoIncrementInfo(options) {
108
- const { tableInfo, fieldName, transaction } = options;
109
- const sql = `SELECT AUTO_INCREMENT as currentVal
110
- FROM information_schema.tables
111
- WHERE table_schema = DATABASE()
112
- AND table_name = '${tableInfo.tableName}';`;
113
- const results = await this.db.sequelize.query(sql, { type: "SELECT", transaction });
114
- let currentVal = results[0]["currentVal"];
115
- if (currentVal === null) {
116
- const maxSql = `SELECT MAX(\`${fieldName}\`) as currentVal
117
- FROM \`${tableInfo.tableName}\`;`;
118
- const maxResults = await this.db.sequelize.query(maxSql, { type: "SELECT", transaction });
119
- currentVal = maxResults[0]["currentVal"];
120
- }
121
- return {
122
- currentVal
123
- };
124
- }
125
- async setAutoIncrementVal(options) {
126
- const { tableInfo, columnName, seqName, currentVal, transaction } = options;
127
- if (currentVal) {
128
- const sql = `ALTER TABLE ${this.quoteIdentifier(tableInfo.tableName)} AUTO_INCREMENT = ${currentVal};`;
129
- await this.db.sequelize.query(sql, { transaction });
130
- }
131
- }
132
- };
133
- __name(_MysqlQueryInterface, "MysqlQueryInterface");
134
- let MysqlQueryInterface = _MysqlQueryInterface;
@@ -1,41 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { Collection } from '../collection';
10
- import QueryInterface, { TableInfo } from './query-interface';
11
- import { Transaction } from 'sequelize';
12
- export default class PostgresQueryInterface extends QueryInterface {
13
- constructor(db: any);
14
- setAutoIncrementVal(options: {
15
- tableInfo: TableInfo;
16
- columnName: string;
17
- seqName?: string;
18
- currentVal?: number;
19
- transaction?: Transaction;
20
- }): Promise<void>;
21
- getAutoIncrementInfo(options: {
22
- tableInfo: TableInfo;
23
- fieldName: string;
24
- transaction: Transaction;
25
- }): Promise<{
26
- seqName?: string;
27
- currentVal: number;
28
- }>;
29
- collectionTableExists(collection: Collection, options?: any): Promise<any>;
30
- listViews(): Promise<[unknown[], unknown]>;
31
- viewDef(viewName: string): Promise<string>;
32
- parseSQL(sql: string): any;
33
- viewColumnUsage(options: any): Promise<{
34
- [view_column_name: string]: {
35
- column_name: string;
36
- table_name: string;
37
- table_schema?: string;
38
- };
39
- }>;
40
- showTableDefinition(tableInfo: TableInfo): Promise<any>;
41
- }
@@ -1,207 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __create = Object.create;
11
- var __defProp = Object.defineProperty;
12
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
- var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
- var __hasOwnProp = Object.prototype.hasOwnProperty;
16
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
- var __export = (target, all) => {
18
- for (var name in all)
19
- __defProp(target, name, { get: all[name], enumerable: true });
20
- };
21
- var __copyProps = (to, from, except, desc) => {
22
- if (from && typeof from === "object" || typeof from === "function") {
23
- for (let key of __getOwnPropNames(from))
24
- if (!__hasOwnProp.call(to, key) && key !== except)
25
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
- }
27
- return to;
28
- };
29
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
- // If the importer is in node compatibility mode or this is not an ESM
31
- // file that has been converted to a CommonJS file using a Babel-
32
- // compatible transform (i.e. "__esModule" has not been set), then set
33
- // "default" to the CommonJS "module.exports" for node compatibility.
34
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
- mod
36
- ));
37
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
- var postgres_query_interface_exports = {};
39
- __export(postgres_query_interface_exports, {
40
- default: () => PostgresQueryInterface
41
- });
42
- module.exports = __toCommonJS(postgres_query_interface_exports);
43
- var import_lodash = __toESM(require("lodash"));
44
- var import_sql_parser = __toESM(require("../sql-parser"));
45
- var import_query_interface = __toESM(require("./query-interface"));
46
- const _PostgresQueryInterface = class _PostgresQueryInterface extends import_query_interface.default {
47
- constructor(db) {
48
- super(db);
49
- }
50
- async setAutoIncrementVal(options) {
51
- const { tableInfo, columnName, seqName, currentVal, transaction } = options;
52
- if (!seqName) {
53
- throw new Error("seqName is required to set auto increment val in postgres");
54
- }
55
- await this.db.sequelize.query(
56
- `alter table ${this.db.utils.quoteTable({
57
- tableName: tableInfo.tableName,
58
- schema: tableInfo.schema
59
- })}
60
- alter column "${columnName}" set default nextval('${seqName}')`,
61
- {
62
- transaction
63
- }
64
- );
65
- if (currentVal) {
66
- await this.db.sequelize.query(`select setval('${seqName}', ${currentVal})`, {
67
- transaction
68
- });
69
- }
70
- }
71
- async getAutoIncrementInfo(options) {
72
- const fieldName = options.fieldName || "id";
73
- const tableInfo = options.tableInfo;
74
- const transaction = options.transaction;
75
- const sequenceNameResult = await this.db.sequelize.query(
76
- `SELECT column_default
77
- FROM information_schema.columns
78
- WHERE table_name = '${tableInfo.tableName}'
79
- and table_schema = '${tableInfo.schema || "public"}'
80
- and "column_name" = '${fieldName}';`,
81
- {
82
- transaction
83
- }
84
- );
85
- const columnDefault = sequenceNameResult[0][0]["column_default"];
86
- const regex = new RegExp(/nextval\('(.*)'::regclass\)/);
87
- const match = regex.exec(columnDefault);
88
- const sequenceName = match[1];
89
- const sequenceCurrentValResult = await this.db.sequelize.query(
90
- `select last_value
91
- from ${sequenceName}`,
92
- {
93
- transaction
94
- }
95
- );
96
- const sequenceCurrentVal = parseInt(sequenceCurrentValResult[0][0]["last_value"]);
97
- return {
98
- seqName: sequenceName,
99
- currentVal: sequenceCurrentVal
100
- };
101
- }
102
- async collectionTableExists(collection, options) {
103
- const transaction = options == null ? void 0 : options.transaction;
104
- const tableName = collection.model.tableName;
105
- const schema = collection.collectionSchema() || "public";
106
- const sql = `SELECT EXISTS(SELECT 1
107
- FROM information_schema.tables
108
- WHERE table_schema = '${schema}'
109
- AND table_name = '${tableName}')`;
110
- const results = await this.db.sequelize.query(sql, { type: "SELECT", transaction });
111
- return results[0]["exists"];
112
- }
113
- async listViews() {
114
- const sql = `
115
- SELECT viewname as name, definition, schemaname as schema
116
- FROM pg_views
117
- WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
118
- ORDER BY viewname;
119
- `;
120
- return await this.db.sequelize.query(sql, { type: "SELECT" });
121
- }
122
- async viewDef(viewName) {
123
- const [schema, name] = viewName.split(".");
124
- const viewDefQuery = await this.db.sequelize.query(
125
- `
126
- select pg_get_viewdef(format('%I.%I', '${schema}', '${name}')::regclass, true) as definition
127
- `,
128
- { type: "SELECT" }
129
- );
130
- return import_lodash.default.trim(viewDefQuery[0]["definition"]);
131
- }
132
- parseSQL(sql) {
133
- return import_sql_parser.default.parse(sql, {
134
- database: "Postgresql"
135
- });
136
- }
137
- async viewColumnUsage(options) {
138
- const { viewName, schema = "public" } = options;
139
- const sql = `
140
- SELECT *
141
- FROM information_schema.view_column_usage
142
- WHERE view_schema = '${schema}'
143
- AND view_name = '${viewName}';
144
- `;
145
- const columnUsages = await this.db.sequelize.query(sql, { type: "SELECT" });
146
- const def = await this.viewDef(`${schema}.${viewName}`);
147
- try {
148
- const { ast } = this.parseSQL(def);
149
- const columns = ast[0].columns;
150
- const usages = columns.map((column) => {
151
- const fieldAlias = column.as || column.expr.column;
152
- const columnUsage = columnUsages.find((columnUsage2) => {
153
- let columnExprTable = column.expr.table;
154
- const from = ast[0].from;
155
- if (columnExprTable === null && column.expr.type === "column_ref") {
156
- columnExprTable = from[0].table;
157
- } else {
158
- const findAs = from.find((from2) => from2.as === columnExprTable);
159
- if (findAs) {
160
- columnExprTable = findAs.table;
161
- }
162
- }
163
- return columnUsage2.column_name === column.expr.column && columnUsage2.table_name === columnExprTable;
164
- });
165
- return [
166
- fieldAlias,
167
- columnUsage ? {
168
- ...columnUsage
169
- } : null
170
- ];
171
- }).filter(([, columnUsage]) => columnUsage !== null);
172
- return Object.fromEntries(usages);
173
- } catch (e) {
174
- console.log(e);
175
- return {};
176
- }
177
- }
178
- async showTableDefinition(tableInfo) {
179
- const showFunc = `
180
- CREATE OR REPLACE FUNCTION show_create_table(p_schema text, p_table_name text)
181
- RETURNS text AS
182
- $BODY$
183
- SELECT 'CREATE TABLE ' || quote_ident(p_schema) || '.' || quote_ident(p_table_name) || ' (' || E'\\n' || '' ||
184
- string_agg(column_list.column_expr, ', ' || E'\\n' || '') ||
185
- '' || E'\\n' || ');'
186
- FROM (
187
- SELECT ' ' || quote_ident(column_name) || ' ' || data_type ||
188
- coalesce('(' || character_maximum_length || ')', '') ||
189
- case when is_nullable = 'YES' then '' else ' NOT NULL' end as column_expr
190
- FROM information_schema.columns
191
- WHERE table_schema = p_schema AND table_name = p_table_name
192
- ORDER BY ordinal_position) column_list;
193
- $BODY$
194
- LANGUAGE SQL STABLE;
195
- `;
196
- await this.db.sequelize.query(showFunc, { type: "RAW" });
197
- const res = await this.db.sequelize.query(
198
- `SELECT show_create_table('${tableInfo.schema || "public"}', '${tableInfo.tableName}')`,
199
- {
200
- type: "SELECT"
201
- }
202
- );
203
- return res[0]["show_create_table"];
204
- }
205
- };
206
- __name(_PostgresQueryInterface, "PostgresQueryInterface");
207
- let PostgresQueryInterface = _PostgresQueryInterface;
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import Database from '../database';
10
- export default function buildQueryInterface(db: Database): any;
@@ -1,55 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __create = Object.create;
11
- var __defProp = Object.defineProperty;
12
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
- var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
- var __hasOwnProp = Object.prototype.hasOwnProperty;
16
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
- var __export = (target, all) => {
18
- for (var name in all)
19
- __defProp(target, name, { get: all[name], enumerable: true });
20
- };
21
- var __copyProps = (to, from, except, desc) => {
22
- if (from && typeof from === "object" || typeof from === "function") {
23
- for (let key of __getOwnPropNames(from))
24
- if (!__hasOwnProp.call(to, key) && key !== except)
25
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
- }
27
- return to;
28
- };
29
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
- // If the importer is in node compatibility mode or this is not an ESM
31
- // file that has been converted to a CommonJS file using a Babel-
32
- // compatible transform (i.e. "__esModule" has not been set), then set
33
- // "default" to the CommonJS "module.exports" for node compatibility.
34
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
- mod
36
- ));
37
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
- var query_interface_builder_exports = {};
39
- __export(query_interface_builder_exports, {
40
- default: () => buildQueryInterface
41
- });
42
- module.exports = __toCommonJS(query_interface_builder_exports);
43
- var import_mysql_query_interface = __toESM(require("./mysql-query-interface"));
44
- var import_postgres_query_interface = __toESM(require("./postgres-query-interface"));
45
- var import_sqlite_query_interface = __toESM(require("./sqlite-query-interface"));
46
- function buildQueryInterface(db) {
47
- const map = {
48
- mysql: import_mysql_query_interface.default,
49
- mariadb: import_mysql_query_interface.default,
50
- postgres: import_postgres_query_interface.default,
51
- sqlite: import_sqlite_query_interface.default
52
- };
53
- return new map[db.options.dialect](db);
54
- }
55
- __name(buildQueryInterface, "buildQueryInterface");
@@ -1,52 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { QueryInterface as SequelizeQueryInterface, Transaction, Transactionable } from 'sequelize';
10
- import { Collection } from '../collection';
11
- import Database from '../database';
12
- export type TableInfo = {
13
- tableName: string;
14
- schema?: string;
15
- };
16
- export default abstract class QueryInterface {
17
- db: Database;
18
- sequelizeQueryInterface: SequelizeQueryInterface;
19
- protected constructor(db: Database);
20
- abstract collectionTableExists(collection: Collection, options?: Transactionable): Promise<boolean>;
21
- abstract listViews(): any;
22
- abstract viewDef(viewName: string): Promise<string>;
23
- abstract viewColumnUsage(options: {
24
- viewName: string;
25
- schema?: string;
26
- }): Promise<{
27
- [view_column_name: string]: {
28
- column_name: string;
29
- table_name: string;
30
- table_schema?: string;
31
- };
32
- }>;
33
- abstract parseSQL(sql: string): any;
34
- abstract showTableDefinition(tableInfo: TableInfo): Promise<any>;
35
- dropAll(options: any): Promise<void>;
36
- abstract getAutoIncrementInfo(options: {
37
- tableInfo: TableInfo;
38
- fieldName: string;
39
- transaction?: Transaction;
40
- }): Promise<{
41
- seqName?: string;
42
- currentVal: number;
43
- }>;
44
- abstract setAutoIncrementVal(options: {
45
- tableInfo: TableInfo;
46
- columnName: string;
47
- seqName?: string;
48
- currentVal: number;
49
- transaction?: Transaction;
50
- }): Promise<void>;
51
- quoteIdentifier(identifier: string): any;
52
- }
@@ -1,59 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __defProp = Object.defineProperty;
11
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
- var __getOwnPropNames = Object.getOwnPropertyNames;
13
- var __hasOwnProp = Object.prototype.hasOwnProperty;
14
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
- var __export = (target, all) => {
16
- for (var name in all)
17
- __defProp(target, name, { get: all[name], enumerable: true });
18
- };
19
- var __copyProps = (to, from, except, desc) => {
20
- if (from && typeof from === "object" || typeof from === "function") {
21
- for (let key of __getOwnPropNames(from))
22
- if (!__hasOwnProp.call(to, key) && key !== except)
23
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
24
- }
25
- return to;
26
- };
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var query_interface_exports = {};
29
- __export(query_interface_exports, {
30
- default: () => QueryInterface
31
- });
32
- module.exports = __toCommonJS(query_interface_exports);
33
- const _QueryInterface = class _QueryInterface {
34
- constructor(db) {
35
- this.db = db;
36
- this.sequelizeQueryInterface = db.sequelize.getQueryInterface();
37
- }
38
- sequelizeQueryInterface;
39
- async dropAll(options) {
40
- if (options.drop !== true)
41
- return;
42
- const views = await this.listViews();
43
- for (const view of views) {
44
- let removeSql;
45
- if (view.schema) {
46
- removeSql = `DROP VIEW IF EXISTS "${view.schema}"."${view.name}"`;
47
- } else {
48
- removeSql = `DROP VIEW IF EXISTS ${view.name}`;
49
- }
50
- await this.db.sequelize.query(removeSql, { transaction: options.transaction });
51
- }
52
- await this.db.sequelize.getQueryInterface().dropAllTables(options);
53
- }
54
- quoteIdentifier(identifier) {
55
- return this.db.sequelize.getQueryInterface().queryGenerator.quoteIdentifier(identifier);
56
- }
57
- };
58
- __name(_QueryInterface, "QueryInterface");
59
- let QueryInterface = _QueryInterface;
@@ -1,44 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { Collection } from '../collection';
10
- import QueryInterface, { TableInfo } from './query-interface';
11
- import { Transaction } from 'sequelize';
12
- export default class SqliteQueryInterface extends QueryInterface {
13
- constructor(db: any);
14
- collectionTableExists(collection: Collection, options?: any): Promise<boolean>;
15
- listViews(): Promise<[unknown[], unknown]>;
16
- viewColumnUsage(options: {
17
- viewName: string;
18
- schema?: string;
19
- }): Promise<{
20
- [view_column_name: string]: {
21
- column_name: string;
22
- table_name: string;
23
- table_schema?: string;
24
- };
25
- }>;
26
- parseSQL(sql: string): any;
27
- viewDef(viewName: string): Promise<string>;
28
- showTableDefinition(tableInfo: TableInfo): Promise<any>;
29
- getAutoIncrementInfo(options: {
30
- tableInfo: TableInfo;
31
- fieldName: string;
32
- transaction: Transaction;
33
- }): Promise<{
34
- seqName?: string;
35
- currentVal: number;
36
- }>;
37
- setAutoIncrementVal(options: {
38
- tableInfo: TableInfo;
39
- columnName: string;
40
- seqName?: string;
41
- currentVal: number;
42
- transaction?: Transaction;
43
- }): Promise<void>;
44
- }