@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,106 +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 password_field_exports = {};
39
- __export(password_field_exports, {
40
- PasswordField: () => PasswordField
41
- });
42
- module.exports = __toCommonJS(password_field_exports);
43
- var import_crypto = __toESM(require("crypto"));
44
- var import_sequelize = require("sequelize");
45
- var import_field = require("./field");
46
- const _PasswordField = class _PasswordField extends import_field.Field {
47
- get dataType() {
48
- return import_sequelize.DataTypes.STRING;
49
- }
50
- async verify(password, hash) {
51
- password = password || "";
52
- hash = hash || "";
53
- const { length = 64, randomBytesSize = 8 } = this.options;
54
- return new Promise((resolve, reject) => {
55
- const salt = hash.substring(0, randomBytesSize * 2);
56
- const key = hash.substring(randomBytesSize * 2);
57
- import_crypto.default.scrypt(password, salt, length / 2 - randomBytesSize, (err, derivedKey) => {
58
- if (err)
59
- reject(err);
60
- resolve(key == derivedKey.toString("hex"));
61
- });
62
- });
63
- }
64
- async hash(password) {
65
- const { length = 64, randomBytesSize = 8 } = this.options;
66
- return new Promise((resolve, reject) => {
67
- const salt = import_crypto.default.randomBytes(randomBytesSize).toString("hex");
68
- import_crypto.default.scrypt(password, salt, length / 2 - randomBytesSize, (err, derivedKey) => {
69
- if (err)
70
- reject(err);
71
- resolve(salt + derivedKey.toString("hex"));
72
- });
73
- });
74
- }
75
- init() {
76
- const { name } = this.options;
77
- this.listener = async (model) => {
78
- if (!model.changed(name)) {
79
- return;
80
- }
81
- const value = model.get(name);
82
- if (value) {
83
- const hash = await this.hash(value);
84
- model.set(name, hash);
85
- } else {
86
- model.set(name, model.previous(name));
87
- }
88
- };
89
- }
90
- bind() {
91
- super.bind();
92
- this.on("beforeCreate", this.listener);
93
- this.on("beforeUpdate", this.listener);
94
- }
95
- unbind() {
96
- super.unbind();
97
- this.off("beforeCreate", this.listener);
98
- this.off("beforeUpdate", this.listener);
99
- }
100
- };
101
- __name(_PasswordField, "PasswordField");
102
- let PasswordField = _PasswordField;
103
- // Annotate the CommonJS export names for ESM import in node:
104
- 0 && (module.exports = {
105
- PasswordField
106
- });
@@ -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
- import { DataTypes } from 'sequelize';
10
- import { BaseColumnFieldOptions, Field } from './field';
11
- export interface RadioFieldOptions extends BaseColumnFieldOptions {
12
- type: 'radio';
13
- }
14
- /**
15
- * 暂时只支持全局,不支持批量
16
- */
17
- export declare class RadioField extends Field {
18
- get dataType(): DataTypes.AbstractDataTypeConstructor;
19
- listener: (model: any, { transaction }: {
20
- transaction: any;
21
- }) => Promise<void>;
22
- bind(): void;
23
- unbind(): void;
24
- }
@@ -1,75 +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 radio_field_exports = {};
29
- __export(radio_field_exports, {
30
- RadioField: () => RadioField
31
- });
32
- module.exports = __toCommonJS(radio_field_exports);
33
- var import_sequelize = require("sequelize");
34
- var import_field = require("./field");
35
- const _RadioField = class _RadioField extends import_field.Field {
36
- get dataType() {
37
- return import_sequelize.DataTypes.BOOLEAN;
38
- }
39
- listener = async (model, { transaction }) => {
40
- const { name } = this.options;
41
- if (!model.changed(name)) {
42
- return;
43
- }
44
- const value = model.get(name);
45
- if (value) {
46
- const M = this.collection.model;
47
- await M.update(
48
- { [name]: false },
49
- {
50
- where: {
51
- [name]: true
52
- },
53
- transaction,
54
- hooks: false
55
- }
56
- );
57
- }
58
- };
59
- bind() {
60
- super.bind();
61
- this.on("beforeCreate", this.listener);
62
- this.on("beforeUpdate", this.listener);
63
- }
64
- unbind() {
65
- super.unbind();
66
- this.off("beforeCreate", this.listener);
67
- this.off("beforeUpdate", this.listener);
68
- }
69
- };
70
- __name(_RadioField, "RadioField");
71
- let RadioField = _RadioField;
72
- // Annotate the CommonJS export names for ESM import in node:
73
- 0 && (module.exports = {
74
- RadioField
75
- });
@@ -1,31 +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 { BaseFieldOptions, Field } from './field';
10
- export type BaseRelationFieldOptions = BaseFieldOptions;
11
- export interface MultipleRelationFieldOptions extends BaseRelationFieldOptions {
12
- sortBy?: string | string[];
13
- }
14
- export declare abstract class RelationField extends Field {
15
- /**
16
- * target relation name
17
- */
18
- get target(): any;
19
- get foreignKey(): any;
20
- get sourceKey(): any;
21
- get targetKey(): any;
22
- /**
23
- * get target model from database by it's name
24
- * @constructor
25
- */
26
- get TargetModel(): import("sequelize").ModelCtor<import("sequelize").Model<any, any>>;
27
- targetCollection(): import("..").Collection<any, any>;
28
- isRelationField(): boolean;
29
- keyPairsTypeMatched(type1: any, type2: any): boolean;
30
- protected clearAccessors(): void;
31
- }
@@ -1,94 +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 relation_field_exports = {};
29
- __export(relation_field_exports, {
30
- RelationField: () => RelationField
31
- });
32
- module.exports = __toCommonJS(relation_field_exports);
33
- var import_field = require("./field");
34
- const _RelationField = class _RelationField extends import_field.Field {
35
- /**
36
- * target relation name
37
- */
38
- get target() {
39
- const { target, name } = this.options;
40
- return target || name;
41
- }
42
- get foreignKey() {
43
- return this.options.foreignKey;
44
- }
45
- get sourceKey() {
46
- return this.options.sourceKey || this.collection.model.primaryKeyAttribute;
47
- }
48
- get targetKey() {
49
- return this.options.targetKey || this.TargetModel.primaryKeyAttribute;
50
- }
51
- /**
52
- * get target model from database by it's name
53
- * @constructor
54
- */
55
- get TargetModel() {
56
- return this.context.database.sequelize.models[this.target];
57
- }
58
- targetCollection() {
59
- return this.context.database.getCollection(this.target);
60
- }
61
- isRelationField() {
62
- return true;
63
- }
64
- keyPairsTypeMatched(type1, type2) {
65
- type1 = type1.toLowerCase();
66
- type2 = type2.toLowerCase();
67
- const numberTypeGroups = ["integer", "bigint", "decimal", "float", "real", "double", "smallint", "tinyint"];
68
- const stringTypeGroups = ["string", "char", "text"];
69
- if (numberTypeGroups.includes(type1) && numberTypeGroups.includes(type2)) {
70
- return true;
71
- }
72
- if (stringTypeGroups.includes(type1) && stringTypeGroups.includes(type2)) {
73
- return true;
74
- }
75
- return type1 === type2;
76
- }
77
- clearAccessors() {
78
- const { collection } = this.context;
79
- const association = collection.model.associations[this.name];
80
- if (!association) {
81
- return;
82
- }
83
- const accessors = Object.values(association.accessors);
84
- accessors.forEach((accessor) => {
85
- delete collection.model.prototype[accessor];
86
- });
87
- }
88
- };
89
- __name(_RelationField, "RelationField");
90
- let RelationField = _RelationField;
91
- // Annotate the CommonJS export names for ESM import in node:
92
- 0 && (module.exports = {
93
- RelationField
94
- });
@@ -1,18 +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 { ArrayField } from './array-field';
10
- import { BaseColumnFieldOptions } from './field';
11
- export interface SetFieldOptions extends BaseColumnFieldOptions {
12
- type: 'set';
13
- }
14
- export declare class SetField extends ArrayField {
15
- beforeSave: (model: any) => void;
16
- bind(): void;
17
- unbind(): void;
18
- }
@@ -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 __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 set_field_exports = {};
29
- __export(set_field_exports, {
30
- SetField: () => SetField
31
- });
32
- module.exports = __toCommonJS(set_field_exports);
33
- var import_array_field = require("./array-field");
34
- const _SetField = class _SetField extends import_array_field.ArrayField {
35
- beforeSave = (model) => {
36
- const oldValue = model.get(this.options.name);
37
- if (oldValue) {
38
- model.set(this.options.name, [...new Set(oldValue)]);
39
- }
40
- };
41
- bind() {
42
- super.bind();
43
- this.on("beforeSave", this.beforeSave);
44
- }
45
- unbind() {
46
- super.unbind();
47
- this.off("beforeSave", this.beforeSave);
48
- }
49
- };
50
- __name(_SetField, "SetField");
51
- let SetField = _SetField;
52
- // Annotate the CommonJS export names for ESM import in node:
53
- 0 && (module.exports = {
54
- SetField
55
- });
@@ -1,22 +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 { DataTypes } from 'sequelize';
10
- import { BaseColumnFieldOptions, Field } from './field';
11
- export declare class SortField extends Field {
12
- get dataType(): DataTypes.BigIntDataTypeConstructor;
13
- setSortValue: (instance: any, options: any) => Promise<void>;
14
- onScopeChange: (instance: any, options: any) => Promise<void>;
15
- initRecordsSortValue: (options: any) => Promise<void>;
16
- bind(): void;
17
- unbind(): void;
18
- }
19
- export interface SortFieldOptions extends BaseColumnFieldOptions {
20
- type: 'sort';
21
- scopeKey?: string;
22
- }
@@ -1,197 +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 sort_field_exports = {};
29
- __export(sort_field_exports, {
30
- SortField: () => SortField
31
- });
32
- module.exports = __toCommonJS(sort_field_exports);
33
- var import_async_mutex = require("async-mutex");
34
- var import_lodash = require("lodash");
35
- var import_sequelize = require("sequelize");
36
- var import_field = require("./field");
37
- const sortFieldMutex = new import_async_mutex.Mutex();
38
- const _SortField = class _SortField extends import_field.Field {
39
- get dataType() {
40
- return import_sequelize.DataTypes.BIGINT;
41
- }
42
- setSortValue = async (instance, options) => {
43
- const { name, scopeKey } = this.options;
44
- const { model } = this.context.collection;
45
- if ((0, import_lodash.isNumber)(instance.get(name)) && instance._previousDataValues[scopeKey] == instance[scopeKey]) {
46
- return;
47
- }
48
- const where = {};
49
- if (scopeKey) {
50
- const value = instance.get(scopeKey);
51
- if (value !== void 0 && value !== null) {
52
- where[scopeKey] = value;
53
- }
54
- }
55
- await sortFieldMutex.runExclusive(async () => {
56
- const max = await model.max(name, { ...options, where });
57
- const newValue = (max || 0) + 1;
58
- instance.set(name, newValue);
59
- });
60
- };
61
- onScopeChange = async (instance, options) => {
62
- const { scopeKey } = this.options;
63
- if (scopeKey && !instance.isNewRecord && instance._previousDataValues[scopeKey] != instance[scopeKey]) {
64
- await this.setSortValue(instance, options);
65
- }
66
- };
67
- initRecordsSortValue = async (options) => {
68
- const { transaction } = options;
69
- const orderField = (() => {
70
- const model = this.collection.model;
71
- if (model.primaryKeyAttribute) {
72
- return model.primaryKeyAttribute;
73
- }
74
- if (model.rawAttributes["createdAt"]) {
75
- return model.rawAttributes["createdAt"].field;
76
- }
77
- throw new Error(`can not find order key for collection ${this.collection.name}`);
78
- })();
79
- const needInit = /* @__PURE__ */ __name(async (scopeKey2 = null, scopeValue = null) => {
80
- const filter = {};
81
- if (scopeKey2 && scopeValue) {
82
- filter[scopeKey2] = scopeValue;
83
- }
84
- const totalCount = await this.collection.repository.count({
85
- filter,
86
- transaction
87
- });
88
- const emptyCount = await this.collection.repository.count({
89
- filter: {
90
- [this.name]: null,
91
- ...filter
92
- },
93
- transaction
94
- });
95
- return emptyCount === totalCount && emptyCount > 0;
96
- }, "needInit");
97
- const doInit = /* @__PURE__ */ __name(async (scopeKey2 = null, scopeValue = null) => {
98
- const queryInterface = this.collection.db.sequelize.getQueryInterface();
99
- if (scopeKey2) {
100
- const scopeAttribute = this.collection.model.rawAttributes[scopeKey2];
101
- if (!scopeAttribute) {
102
- throw new Error(`can not find scope field ${scopeKey2} for collection ${this.collection.name}`);
103
- }
104
- scopeKey2 = scopeAttribute.field;
105
- }
106
- const quotedOrderField = queryInterface.quoteIdentifier(orderField);
107
- const sortColumnName = queryInterface.quoteIdentifier(this.collection.model.rawAttributes[this.name].field);
108
- let sql;
109
- const whereClause = scopeKey2 && scopeValue ? (() => {
110
- const filteredScopeValue = scopeValue.filter((v) => v !== null);
111
- if (filteredScopeValue.length === 0) {
112
- return "";
113
- }
114
- const initialClause = `
115
- WHERE ${queryInterface.quoteIdentifier(scopeKey2)} IN (${filteredScopeValue.map((v) => `'${v}'`).join(", ")})`;
116
- const nullCheck = scopeValue.includes(null) ? ` OR ${queryInterface.quoteIdentifier(scopeKey2)} IS NULL` : "";
117
- return initialClause + nullCheck;
118
- })() : "";
119
- if (this.collection.db.inDialect("postgres")) {
120
- sql = `
121
- UPDATE ${this.collection.quotedTableName()}
122
- SET ${sortColumnName} = ordered_table.new_sequence_number
123
- FROM (
124
- SELECT *, ROW_NUMBER() OVER (${scopeKey2 ? `PARTITION BY ${queryInterface.quoteIdentifier(scopeKey2)}` : ""} ORDER BY ${quotedOrderField}) AS new_sequence_number
125
- FROM ${this.collection.quotedTableName()}
126
- ${whereClause}
127
- ) AS ordered_table
128
- WHERE ${this.collection.quotedTableName()}.${quotedOrderField} = ordered_table.${quotedOrderField};
129
- `;
130
- } else if (this.collection.db.inDialect("sqlite")) {
131
- sql = `
132
- UPDATE ${this.collection.quotedTableName()}
133
- SET ${sortColumnName} = (
134
- SELECT new_sequence_number
135
- FROM (
136
- SELECT *, ROW_NUMBER() OVER (${scopeKey2 ? `PARTITION BY ${queryInterface.quoteIdentifier(scopeKey2)}` : ""} ORDER BY ${quotedOrderField}) AS new_sequence_number
137
- FROM ${this.collection.quotedTableName()}
138
- ${whereClause}
139
- ) AS ordered_table
140
- WHERE ${this.collection.quotedTableName()}.${quotedOrderField} = ordered_table.${quotedOrderField}
141
- );
142
- `;
143
- } else if (this.collection.db.inDialect("mysql") || this.collection.db.inDialect("mariadb")) {
144
- sql = `
145
- UPDATE ${this.collection.quotedTableName()}
146
- JOIN (
147
- SELECT *, ROW_NUMBER() OVER (${scopeKey2 ? `PARTITION BY ${queryInterface.quoteIdentifier(scopeKey2)}` : ""} ORDER BY ${quotedOrderField}) AS new_sequence_number
148
- FROM ${this.collection.quotedTableName()}
149
- ${whereClause}
150
- ) AS ordered_table ON ${this.collection.quotedTableName()}.${quotedOrderField} = ordered_table.${quotedOrderField}
151
- SET ${this.collection.quotedTableName()}.${sortColumnName} = ordered_table.new_sequence_number;
152
- `;
153
- }
154
- await this.collection.db.sequelize.query(sql, {
155
- transaction
156
- });
157
- }, "doInit");
158
- const scopeKey = this.options.scopeKey;
159
- if (scopeKey) {
160
- const groups = await this.collection.repository.find({
161
- attributes: [scopeKey],
162
- group: [scopeKey],
163
- raw: true,
164
- transaction
165
- });
166
- const needInitGroups = [];
167
- for (const group of groups) {
168
- if (await needInit(scopeKey, group[scopeKey])) {
169
- needInitGroups.push(group[scopeKey]);
170
- }
171
- }
172
- if (needInitGroups.length > 0) {
173
- await doInit(scopeKey, needInitGroups);
174
- }
175
- } else if (await needInit()) {
176
- await doInit();
177
- }
178
- };
179
- bind() {
180
- super.bind();
181
- this.on("afterSync", this.initRecordsSortValue);
182
- this.on("beforeUpdate", this.onScopeChange);
183
- this.on("beforeCreate", this.setSortValue);
184
- }
185
- unbind() {
186
- super.unbind();
187
- this.off("beforeUpdate", this.onScopeChange);
188
- this.off("beforeCreate", this.setSortValue);
189
- this.off("afterSync", this.initRecordsSortValue);
190
- }
191
- };
192
- __name(_SortField, "SortField");
193
- let SortField = _SortField;
194
- // Annotate the CommonJS export names for ESM import in node:
195
- 0 && (module.exports = {
196
- SortField
197
- });
@@ -1,16 +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 { DataTypes } from 'sequelize';
10
- import { BaseColumnFieldOptions, Field } from './field';
11
- export declare class StringField extends Field {
12
- get dataType(): DataTypes.StringDataTypeConstructor;
13
- }
14
- export interface StringFieldOptions extends BaseColumnFieldOptions {
15
- type: 'string';
16
- }