@nocobase/database 1.2.13-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,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 { DataType, ModelAttributeColumnOptions, ModelIndexesOptions, SyncOptions, Transactionable } from 'sequelize';
10
- import { Collection } from '../collection';
11
- import { Database } from '../database';
12
- import { ModelEventTypes } from '../types';
13
- export interface FieldContext {
14
- database: Database;
15
- collection: Collection;
16
- }
17
- export interface BaseFieldOptions {
18
- name?: string;
19
- hidden?: boolean;
20
- translation?: boolean;
21
- [key: string]: any;
22
- }
23
- export interface BaseColumnFieldOptions extends BaseFieldOptions, Omit<ModelAttributeColumnOptions, 'type'> {
24
- dataType?: DataType;
25
- index?: boolean | ModelIndexesOptions;
26
- }
27
- export declare abstract class Field {
28
- options: any;
29
- context: FieldContext;
30
- database: Database;
31
- collection: Collection;
32
- [key: string]: any;
33
- constructor(options?: any, context?: FieldContext);
34
- get name(): any;
35
- get type(): any;
36
- abstract get dataType(): any;
37
- isRelationField(): boolean;
38
- sync(syncOptions: SyncOptions): Promise<void>;
39
- init(): void;
40
- on(eventName: ModelEventTypes, listener: (...args: any[]) => void): this;
41
- off(eventName: string, listener: (...args: any[]) => void): this;
42
- get(name: string): any;
43
- remove(): void | Field;
44
- columnName(): any;
45
- existsInDb(options?: Transactionable): Promise<boolean>;
46
- merge(obj: any): void;
47
- bind(): void;
48
- unbind(): void;
49
- toSequelize(): any;
50
- isSqlite(): boolean;
51
- typeToString(): any;
52
- }
@@ -1,168 +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 field_exports = {};
39
- __export(field_exports, {
40
- Field: () => Field
41
- });
42
- module.exports = __toCommonJS(field_exports);
43
- var import_lodash = __toESM(require("lodash"));
44
- var import_utils = require("../utils");
45
- const _Field = class _Field {
46
- options;
47
- context;
48
- database;
49
- collection;
50
- constructor(options, context) {
51
- this.context = context;
52
- this.database = this.context.database;
53
- this.collection = this.context.collection;
54
- this.options = options || {};
55
- this.init();
56
- }
57
- get name() {
58
- return this.options.name;
59
- }
60
- get type() {
61
- return this.options.type;
62
- }
63
- isRelationField() {
64
- return false;
65
- }
66
- async sync(syncOptions) {
67
- await this.collection.sync({
68
- ...syncOptions,
69
- force: false,
70
- alter: {
71
- drop: false
72
- }
73
- });
74
- }
75
- init() {
76
- }
77
- on(eventName, listener) {
78
- this.database.on(`${this.collection.name}.${eventName}`, listener);
79
- return this;
80
- }
81
- off(eventName, listener) {
82
- this.database.off(`${this.collection.name}.${eventName}`, listener);
83
- return this;
84
- }
85
- get(name) {
86
- return this.options[name];
87
- }
88
- remove() {
89
- this.collection.removeIndex([this.name]);
90
- return this.collection.removeField(this.name);
91
- }
92
- columnName() {
93
- if (this.options.field) {
94
- return this.options.field;
95
- }
96
- if (this.database.options.underscored) {
97
- return (0, import_utils.snakeCase)(this.name);
98
- }
99
- return this.name;
100
- }
101
- async existsInDb(options) {
102
- const opts = {
103
- transaction: options == null ? void 0 : options.transaction
104
- };
105
- let sql;
106
- if (this.database.sequelize.getDialect() === "sqlite") {
107
- sql = `SELECT *
108
- from pragma_table_info('${this.collection.model.tableName}')
109
- WHERE name = '${this.columnName()}'`;
110
- } else if (this.database.inDialect("mysql", "mariadb")) {
111
- sql = `
112
- select column_name
113
- from INFORMATION_SCHEMA.COLUMNS
114
- where TABLE_SCHEMA = '${this.database.options.database}'
115
- AND TABLE_NAME = '${this.collection.model.tableName}'
116
- AND column_name = '${this.columnName()}'
117
- `;
118
- } else {
119
- sql = `
120
- select column_name
121
- from INFORMATION_SCHEMA.COLUMNS
122
- where TABLE_NAME = '${this.collection.model.tableName}'
123
- AND column_name = '${this.columnName()}'
124
- AND table_schema = '${this.collection.collectionSchema() || "public"}'
125
- `;
126
- }
127
- const [rows] = await this.database.sequelize.query(sql, opts);
128
- return rows.length > 0;
129
- }
130
- merge(obj) {
131
- Object.assign(this.options, obj);
132
- }
133
- bind() {
134
- const { model } = this.context.collection;
135
- model.rawAttributes[this.name] = this.toSequelize();
136
- model.refreshAttributes();
137
- if (this.options.index) {
138
- this.context.collection.addIndex([this.name]);
139
- }
140
- }
141
- unbind() {
142
- const { model } = this.context.collection;
143
- delete model.prototype[this.name];
144
- model.removeAttribute(this.name);
145
- if (this.options.index || this.options.unique) {
146
- this.context.collection.removeIndex([this.name]);
147
- }
148
- }
149
- toSequelize() {
150
- const opts = import_lodash.default.omit(this.options, ["name"]);
151
- if (this.dataType) {
152
- Object.assign(opts, { type: this.database.sequelize.normalizeDataType(this.dataType) });
153
- }
154
- return opts;
155
- }
156
- isSqlite() {
157
- return this.database.sequelize.getDialect() === "sqlite";
158
- }
159
- typeToString() {
160
- return this.dataType.toString();
161
- }
162
- };
163
- __name(_Field, "Field");
164
- let Field = _Field;
165
- // Annotate the CommonJS export names for ESM import in node:
166
- 0 && (module.exports = {
167
- Field
168
- });
@@ -1,12 +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 { Field } from './field';
10
- export interface HasInverseField {
11
- inverseField: () => Field;
12
- }
@@ -1,24 +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 __copyProps = (to, from, except, desc) => {
15
- if (from && typeof from === "object" || typeof from === "function") {
16
- for (let key of __getOwnPropNames(from))
17
- if (!__hasOwnProp.call(to, key) && key !== except)
18
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
- }
20
- return to;
21
- };
22
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
- var has_inverse_field_exports = {};
24
- module.exports = __toCommonJS(has_inverse_field_exports);
@@ -1,76 +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 { AssociationScope, DataType, ForeignKeyOptions, HasManyOptions, HasManyOptions as SequelizeHasManyOptions } from 'sequelize';
10
- import { Reference } from '../features/references-map';
11
- import { MultipleRelationFieldOptions, RelationField } from './relation-field';
12
- export interface HasManyFieldOptions extends HasManyOptions {
13
- /**
14
- * The name of the field to use as the key for the association in the source table. Defaults to the primary
15
- * key of the source table
16
- */
17
- sourceKey?: string;
18
- /**
19
- * A string or a data type to represent the identifier in the table
20
- */
21
- keyType?: DataType;
22
- scope?: AssociationScope;
23
- /**
24
- * The alias of this model, in singular form. See also the `name` option passed to `sequelize.define`. If
25
- * you create multiple associations between the same tables, you should provide an alias to be able to
26
- * distinguish between them. If you provide an alias when creating the assocition, you should provide the
27
- * same alias when eager loading and when getting associated models. Defaults to the singularized name of
28
- * target
29
- */
30
- as?: string | {
31
- singular: string;
32
- plural: string;
33
- };
34
- /**
35
- * The name of the foreign key in the target table or an object representing the type definition for the
36
- * foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property
37
- * to set the name of the column. Defaults to the name of source + primary key of source
38
- */
39
- foreignKey?: string | ForeignKeyOptions;
40
- /**
41
- * What happens when delete occurs.
42
- *
43
- * Cascade if this is a n:m, and set null if it is a 1:m
44
- *
45
- * @default 'SET NULL' or 'CASCADE'
46
- */
47
- onDelete?: string;
48
- /**
49
- * What happens when update occurs
50
- *
51
- * @default 'CASCADE'
52
- */
53
- onUpdate?: string;
54
- /**
55
- * Should on update and on delete constraints be enabled on the foreign key.
56
- */
57
- constraints?: boolean;
58
- foreignKeyConstraint?: boolean;
59
- /**
60
- * If `false` the applicable hooks will not be called.
61
- * The default value depends on the context.
62
- */
63
- hooks?: boolean;
64
- }
65
- export declare class HasManyField extends RelationField {
66
- get dataType(): any;
67
- get foreignKey(): any;
68
- reference(association: any): Reference;
69
- checkAssociationKeys(): void;
70
- bind(): boolean;
71
- unbind(): void;
72
- }
73
- export interface HasManyFieldOptions extends MultipleRelationFieldOptions, SequelizeHasManyOptions {
74
- type: 'hasMany';
75
- target?: string;
76
- }
@@ -1,165 +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 has_many_field_exports = {};
29
- __export(has_many_field_exports, {
30
- HasManyField: () => HasManyField
31
- });
32
- module.exports = __toCommonJS(has_many_field_exports);
33
- var import_lodash = require("lodash");
34
- var import_sequelize = require("sequelize");
35
- var import_references_map = require("../features/references-map");
36
- var import_utils = require("../utils");
37
- var import_relation_field = require("./relation-field");
38
- const _HasManyField = class _HasManyField extends import_relation_field.RelationField {
39
- get dataType() {
40
- return "HasMany";
41
- }
42
- get foreignKey() {
43
- if (this.options.foreignKey) {
44
- return this.options.foreignKey;
45
- }
46
- const { model } = this.context.collection;
47
- return import_sequelize.Utils.camelize([model.options.name.singular, this.sourceKey || model.primaryKeyAttribute].join("_"));
48
- }
49
- reference(association) {
50
- const sourceKey = association.sourceKey;
51
- return (0, import_references_map.buildReference)({
52
- sourceCollectionName: this.database.modelCollection.get(association.target).name,
53
- sourceField: association.foreignKey,
54
- targetField: sourceKey,
55
- targetCollectionName: this.database.modelCollection.get(association.source).name,
56
- onDelete: this.options.onDelete
57
- });
58
- }
59
- checkAssociationKeys() {
60
- let { foreignKey, sourceKey } = this.options;
61
- if (!sourceKey) {
62
- sourceKey = this.collection.model.primaryKeyAttribute;
63
- }
64
- if (!foreignKey) {
65
- foreignKey = import_sequelize.Utils.camelize([import_sequelize.Utils.singularize(this.name), this.collection.model.primaryKeyAttribute].join("_"));
66
- }
67
- const foreignKeyAttribute = this.TargetModel.rawAttributes[foreignKey];
68
- const sourceKeyAttribute = this.collection.model.rawAttributes[sourceKey];
69
- if (!foreignKeyAttribute || !sourceKeyAttribute) {
70
- return;
71
- }
72
- const foreignKeyType = foreignKeyAttribute.type.constructor.toString();
73
- const sourceKeyType = sourceKeyAttribute.type.constructor.toString();
74
- if (!this.keyPairsTypeMatched(foreignKeyType, sourceKeyType)) {
75
- throw new Error(
76
- `Foreign key "${foreignKey}" type "${foreignKeyType}" does not match source key "${sourceKey}" type "${sourceKeyType}" in has many relation "${this.name}" of collection "${this.collection.name}"`
77
- );
78
- }
79
- }
80
- bind() {
81
- const { database, collection } = this.context;
82
- const Target = this.TargetModel;
83
- if (!Target) {
84
- database.addPendingField(this);
85
- return false;
86
- }
87
- this.checkAssociationKeys();
88
- if (collection.model.associations[this.name]) {
89
- delete collection.model.associations[this.name];
90
- }
91
- const association = collection.model.hasMany(Target, {
92
- constraints: false,
93
- ...(0, import_lodash.omit)(this.options, ["name", "type", "target", "onDelete"]),
94
- as: this.name,
95
- foreignKey: this.foreignKey
96
- });
97
- database.removePendingField(this);
98
- if (!this.options.foreignKey) {
99
- this.options.foreignKey = association.foreignKey;
100
- }
101
- if (!this.options.sourceKey) {
102
- this.options.sourceKey = association.sourceKey;
103
- }
104
- try {
105
- (0, import_utils.checkIdentifier)(this.options.foreignKey);
106
- } catch (error) {
107
- this.unbind();
108
- throw error;
109
- }
110
- if (!this.options.sourceKey) {
111
- this.options.sourceKey = association.sourceKey;
112
- }
113
- let tcoll;
114
- if (this.target === collection.name) {
115
- tcoll = collection;
116
- } else {
117
- tcoll = database.getCollection(this.target);
118
- }
119
- if (tcoll) {
120
- tcoll.addIndex([this.options.foreignKey]);
121
- }
122
- this.database.referenceMap.addReference(this.reference(association));
123
- if (this.options.sortable) {
124
- const targetCollection = database.modelCollection.get(this.TargetModel);
125
- const sortFieldName = `${this.options.foreignKey}Sort`;
126
- targetCollection.setField(sortFieldName, {
127
- type: "sort",
128
- hidden: true,
129
- scopeKey: this.options.foreignKey
130
- });
131
- this.options.sortBy = sortFieldName;
132
- }
133
- return true;
134
- }
135
- unbind() {
136
- const { database, collection } = this.context;
137
- database.removePendingField(this);
138
- const tcoll = database.getCollection(this.target);
139
- if (tcoll) {
140
- const foreignKey = this.options.foreignKey;
141
- const field = tcoll.findField((field2) => {
142
- if (field2.name === foreignKey) {
143
- return true;
144
- }
145
- return field2.type === "belongsTo" && field2.foreignKey === foreignKey;
146
- });
147
- if (!field) {
148
- tcoll.model.removeAttribute(foreignKey);
149
- }
150
- }
151
- const association = collection.model.associations[this.name];
152
- if (association && !this.options.inherit) {
153
- this.database.referenceMap.removeReference(this.reference(association));
154
- }
155
- this.clearAccessors();
156
- delete collection.model.associations[this.name];
157
- collection.model.refreshAttributes();
158
- }
159
- };
160
- __name(_HasManyField, "HasManyField");
161
- let HasManyField = _HasManyField;
162
- // Annotate the CommonJS export names for ESM import in node:
163
- 0 && (module.exports = {
164
- HasManyField
165
- });
@@ -1,76 +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 { AssociationScope, DataType, ForeignKeyOptions, HasOneOptions, HasOneOptions as SequelizeHasOneOptions } from 'sequelize';
10
- import { Reference } from '../features/references-map';
11
- import { BaseRelationFieldOptions, RelationField } from './relation-field';
12
- export interface HasOneFieldOptions extends HasOneOptions {
13
- /**
14
- * The name of the field to use as the key for the association in the source table. Defaults to the primary
15
- * key of the source table
16
- */
17
- sourceKey?: string;
18
- /**
19
- * A string or a data type to represent the identifier in the table
20
- */
21
- keyType?: DataType;
22
- scope?: AssociationScope;
23
- /**
24
- * The alias of this model, in singular form. See also the `name` option passed to `sequelize.define`. If
25
- * you create multiple associations between the same tables, you should provide an alias to be able to
26
- * distinguish between them. If you provide an alias when creating the assocition, you should provide the
27
- * same alias when eager loading and when getting associated models. Defaults to the singularized name of
28
- * target
29
- */
30
- as?: string | {
31
- singular: string;
32
- plural: string;
33
- };
34
- /**
35
- * The name of the foreign key in the target table or an object representing the type definition for the
36
- * foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property
37
- * to set the name of the column. Defaults to the name of source + primary key of source
38
- */
39
- foreignKey?: string | ForeignKeyOptions;
40
- /**
41
- * What happens when delete occurs.
42
- *
43
- * Cascade if this is a n:m, and set null if it is a 1:m
44
- *
45
- * @default 'SET NULL' or 'CASCADE'
46
- */
47
- onDelete?: string;
48
- /**
49
- * What happens when update occurs
50
- *
51
- * @default 'CASCADE'
52
- */
53
- onUpdate?: string;
54
- /**
55
- * Should on update and on delete constraints be enabled on the foreign key.
56
- */
57
- constraints?: boolean;
58
- foreignKeyConstraint?: boolean;
59
- /**
60
- * If `false` the applicable hooks will not be called.
61
- * The default value depends on the context.
62
- */
63
- hooks?: boolean;
64
- }
65
- export declare class HasOneField extends RelationField {
66
- get dataType(): any;
67
- get target(): any;
68
- get foreignKey(): any;
69
- reference(association: any): Reference;
70
- checkAssociationKeys(): void;
71
- bind(): boolean;
72
- unbind(): void;
73
- }
74
- export interface HasOneFieldOptions extends BaseRelationFieldOptions, SequelizeHasOneOptions {
75
- type: 'hasOne';
76
- }