@nocobase/database 0.7.0-alpha.6 → 0.7.0-alpha.62

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 (298) hide show
  1. package/lib/collection-importer.js +101 -67
  2. package/lib/collection.js +339 -210
  3. package/lib/database.d.ts +4 -1
  4. package/lib/database.js +489 -275
  5. package/lib/fields/array-field.js +45 -25
  6. package/lib/fields/belongs-to-field.js +101 -54
  7. package/lib/fields/belongs-to-many-field.js +98 -53
  8. package/lib/fields/boolean-field.js +24 -9
  9. package/lib/fields/context-field.js +77 -42
  10. package/lib/fields/date-field.js +24 -9
  11. package/lib/fields/field.js +114 -75
  12. package/lib/fields/has-inverse-field.js +4 -2
  13. package/lib/fields/has-many-field.js +105 -56
  14. package/lib/fields/has-one-field.js +105 -54
  15. package/lib/fields/index.d.ts +3 -1
  16. package/lib/fields/index.js +277 -32
  17. package/lib/fields/json-field.js +36 -16
  18. package/lib/fields/number-field.js +53 -26
  19. package/lib/fields/password-field.js +118 -73
  20. package/lib/fields/radio-field.js +75 -47
  21. package/lib/fields/relation-field.js +41 -28
  22. package/lib/fields/sort-field.js +165 -89
  23. package/lib/fields/string-field.js +24 -9
  24. package/lib/fields/text-field.js +24 -9
  25. package/lib/fields/time-field.js +24 -9
  26. package/lib/fields/uid-field.js +57 -28
  27. package/lib/fields/uuid-field.d.ts +9 -0
  28. package/lib/fields/uuid-field.js +39 -0
  29. package/lib/fields/virtual-field.js +24 -9
  30. package/lib/filter-parser.js +288 -179
  31. package/lib/index.js +210 -29
  32. package/lib/magic-attribute-model.js +123 -71
  33. package/lib/mock-database.js +68 -34
  34. package/lib/model-hook.js +101 -60
  35. package/lib/model.js +116 -81
  36. package/lib/operators/array.js +136 -96
  37. package/lib/operators/association.js +30 -14
  38. package/lib/operators/boolean.d.ts +13 -0
  39. package/lib/operators/boolean.js +35 -0
  40. package/lib/operators/date.js +78 -34
  41. package/lib/operators/empty.js +113 -75
  42. package/lib/operators/index.js +15 -3
  43. package/lib/operators/ne.js +27 -12
  44. package/{esm/operators/ne.d.ts → lib/operators/notIn.d.ts} +2 -2
  45. package/lib/operators/notIn.js +29 -0
  46. package/lib/operators/string.js +56 -35
  47. package/lib/operators/utils.js +18 -10
  48. package/lib/options-parser.js +323 -215
  49. package/lib/playground.js +66 -53
  50. package/lib/relation-repository/belongs-to-many-repository.js +281 -198
  51. package/lib/relation-repository/belongs-to-repository.js +10 -6
  52. package/lib/relation-repository/hasmany-repository.js +168 -121
  53. package/lib/relation-repository/hasone-repository.js +10 -6
  54. package/lib/relation-repository/multiple-relation-repository.d.ts +3 -3
  55. package/lib/relation-repository/multiple-relation-repository.js +263 -148
  56. package/lib/relation-repository/relation-repository.d.ts +1 -1
  57. package/lib/relation-repository/relation-repository.js +155 -95
  58. package/lib/relation-repository/single-relation-repository.d.ts +6 -6
  59. package/lib/relation-repository/single-relation-repository.js +138 -99
  60. package/lib/relation-repository/types.js +4 -2
  61. package/lib/repository.d.ts +4 -7
  62. package/lib/repository.js +465 -291
  63. package/lib/transaction-decorator.js +80 -67
  64. package/lib/update-associations.d.ts +1 -2
  65. package/lib/update-associations.js +525 -321
  66. package/lib/update-guard.js +160 -117
  67. package/package.json +3 -8
  68. package/src/__tests__/fields/uuid-field.test.ts +30 -0
  69. package/src/__tests__/operator/notIn.test.ts +33 -0
  70. package/src/__tests__/option-parser.test.ts +20 -0
  71. package/src/database.ts +51 -4
  72. package/src/fields/context-field.ts +1 -1
  73. package/src/fields/index.ts +3 -0
  74. package/src/fields/uuid-field.ts +21 -0
  75. package/src/mock-database.ts +1 -1
  76. package/src/model-hook.ts +1 -1
  77. package/src/operators/boolean.ts +18 -0
  78. package/src/operators/index.ts +2 -0
  79. package/src/operators/notIn.ts +12 -0
  80. package/src/options-parser.ts +1 -1
  81. package/src/relation-repository/multiple-relation-repository.ts +8 -6
  82. package/src/relation-repository/relation-repository.ts +11 -6
  83. package/src/relation-repository/single-relation-repository.ts +6 -6
  84. package/src/repository.ts +4 -6
  85. package/src/update-associations.ts +1 -2
  86. package/esm/collection-importer.d.ts +0 -7
  87. package/esm/collection-importer.js +0 -49
  88. package/esm/collection-importer.js.map +0 -1
  89. package/esm/collection.d.ts +0 -73
  90. package/esm/collection.js +0 -224
  91. package/esm/collection.js.map +0 -1
  92. package/esm/database.d.ts +0 -101
  93. package/esm/database.js +0 -275
  94. package/esm/database.js.map +0 -1
  95. package/esm/fields/array-field.d.ts +0 -11
  96. package/esm/fields/array-field.js +0 -26
  97. package/esm/fields/array-field.js.map +0 -1
  98. package/esm/fields/belongs-to-field.d.ts +0 -12
  99. package/esm/fields/belongs-to-field.js +0 -57
  100. package/esm/fields/belongs-to-field.js.map +0 -1
  101. package/esm/fields/belongs-to-many-field.d.ts +0 -11
  102. package/esm/fields/belongs-to-many-field.js +0 -55
  103. package/esm/fields/belongs-to-many-field.js.map +0 -1
  104. package/esm/fields/boolean-field.d.ts +0 -8
  105. package/esm/fields/boolean-field.js +0 -8
  106. package/esm/fields/boolean-field.js.map +0 -1
  107. package/esm/fields/context-field.d.ts +0 -13
  108. package/esm/fields/context-field.js +0 -43
  109. package/esm/fields/context-field.js.map +0 -1
  110. package/esm/fields/date-field.d.ts +0 -8
  111. package/esm/fields/date-field.js +0 -8
  112. package/esm/fields/date-field.js.map +0 -1
  113. package/esm/fields/field.d.ts +0 -37
  114. package/esm/fields/field.js +0 -74
  115. package/esm/fields/field.js.map +0 -1
  116. package/esm/fields/has-inverse-field.d.ts +0 -4
  117. package/esm/fields/has-inverse-field.js +0 -2
  118. package/esm/fields/has-inverse-field.js.map +0 -1
  119. package/esm/fields/has-many-field.d.ts +0 -64
  120. package/esm/fields/has-many-field.js +0 -58
  121. package/esm/fields/has-many-field.js.map +0 -1
  122. package/esm/fields/has-one-field.d.ts +0 -64
  123. package/esm/fields/has-one-field.js +0 -57
  124. package/esm/fields/has-one-field.js.map +0 -1
  125. package/esm/fields/index.d.ts +0 -40
  126. package/esm/fields/index.js +0 -21
  127. package/esm/fields/index.js.map +0 -1
  128. package/esm/fields/json-field.d.ts +0 -14
  129. package/esm/fields/json-field.js +0 -17
  130. package/esm/fields/json-field.js.map +0 -1
  131. package/esm/fields/number-field.d.ts +0 -32
  132. package/esm/fields/number-field.js +0 -28
  133. package/esm/fields/number-field.js.map +0 -1
  134. package/esm/fields/password-field.d.ts +0 -21
  135. package/esm/fields/password-field.js +0 -71
  136. package/esm/fields/password-field.js.map +0 -1
  137. package/esm/fields/radio-field.d.ts +0 -14
  138. package/esm/fields/radio-field.js +0 -49
  139. package/esm/fields/radio-field.js.map +0 -1
  140. package/esm/fields/relation-field.d.ts +0 -20
  141. package/esm/fields/relation-field.js +0 -27
  142. package/esm/fields/relation-field.js.map +0 -1
  143. package/esm/fields/sort-field.d.ts +0 -16
  144. package/esm/fields/sort-field.js +0 -90
  145. package/esm/fields/sort-field.js.map +0 -1
  146. package/esm/fields/string-field.d.ts +0 -8
  147. package/esm/fields/string-field.js +0 -8
  148. package/esm/fields/string-field.js.map +0 -1
  149. package/esm/fields/text-field.d.ts +0 -8
  150. package/esm/fields/text-field.js +0 -8
  151. package/esm/fields/text-field.js.map +0 -1
  152. package/esm/fields/time-field.d.ts +0 -8
  153. package/esm/fields/time-field.js +0 -8
  154. package/esm/fields/time-field.js.map +0 -1
  155. package/esm/fields/uid-field.d.ts +0 -10
  156. package/esm/fields/uid-field.js +0 -27
  157. package/esm/fields/uid-field.js.map +0 -1
  158. package/esm/fields/virtual-field.d.ts +0 -8
  159. package/esm/fields/virtual-field.js +0 -8
  160. package/esm/fields/virtual-field.js.map +0 -1
  161. package/esm/filter-parser.d.ts +0 -27
  162. package/esm/filter-parser.js +0 -185
  163. package/esm/filter-parser.js.map +0 -1
  164. package/esm/index.d.ts +0 -15
  165. package/esm/index.js +0 -16
  166. package/esm/index.js.map +0 -1
  167. package/esm/magic-attribute-model.d.ts +0 -7
  168. package/esm/magic-attribute-model.js +0 -70
  169. package/esm/magic-attribute-model.js.map +0 -1
  170. package/esm/mock-database.d.ts +0 -22
  171. package/esm/mock-database.js +0 -34
  172. package/esm/mock-database.js.map +0 -1
  173. package/esm/model-hook.d.ts +0 -12
  174. package/esm/model-hook.js +0 -61
  175. package/esm/model-hook.js.map +0 -1
  176. package/esm/model.d.ts +0 -15
  177. package/esm/model.js +0 -80
  178. package/esm/model.js.map +0 -1
  179. package/esm/operators/array.d.ts +0 -26
  180. package/esm/operators/array.js +0 -105
  181. package/esm/operators/array.js.map +0 -1
  182. package/esm/operators/association.d.ts +0 -10
  183. package/esm/operators/association.js +0 -14
  184. package/esm/operators/association.js.map +0 -1
  185. package/esm/operators/date.d.ts +0 -34
  186. package/esm/operators/date.js +0 -35
  187. package/esm/operators/date.js.map +0 -1
  188. package/esm/operators/empty.d.ts +0 -28
  189. package/esm/operators/empty.js +0 -58
  190. package/esm/operators/empty.js.map +0 -1
  191. package/esm/operators/index.d.ts +0 -2
  192. package/esm/operators/index.js +0 -2
  193. package/esm/operators/index.js.map +0 -1
  194. package/esm/operators/ne.js +0 -12
  195. package/esm/operators/ne.js.map +0 -1
  196. package/esm/operators/string.d.ts +0 -21
  197. package/esm/operators/string.js +0 -35
  198. package/esm/operators/string.js.map +0 -1
  199. package/esm/operators/utils.d.ts +0 -4
  200. package/esm/operators/utils.js +0 -11
  201. package/esm/operators/utils.js.map +0 -1
  202. package/esm/options-parser.d.ts +0 -31
  203. package/esm/options-parser.js +0 -225
  204. package/esm/options-parser.js.map +0 -1
  205. package/esm/playground.d.ts +0 -1
  206. package/esm/playground.js +0 -53
  207. package/esm/playground.js.map +0 -1
  208. package/esm/relation-repository/belongs-to-many-repository.d.ts +0 -36
  209. package/esm/relation-repository/belongs-to-many-repository.js +0 -199
  210. package/esm/relation-repository/belongs-to-many-repository.js.map +0 -1
  211. package/esm/relation-repository/belongs-to-repository.d.ts +0 -17
  212. package/esm/relation-repository/belongs-to-repository.js +0 -4
  213. package/esm/relation-repository/belongs-to-repository.js.map +0 -1
  214. package/esm/relation-repository/hasmany-repository.d.ts +0 -23
  215. package/esm/relation-repository/hasmany-repository.js +0 -125
  216. package/esm/relation-repository/hasmany-repository.js.map +0 -1
  217. package/esm/relation-repository/hasone-repository.d.ts +0 -17
  218. package/esm/relation-repository/hasone-repository.js +0 -4
  219. package/esm/relation-repository/hasone-repository.js.map +0 -1
  220. package/esm/relation-repository/multiple-relation-repository.d.ts +0 -23
  221. package/esm/relation-repository/multiple-relation-repository.js +0 -149
  222. package/esm/relation-repository/multiple-relation-repository.js.map +0 -1
  223. package/esm/relation-repository/relation-repository.d.ts +0 -32
  224. package/esm/relation-repository/relation-repository.js +0 -93
  225. package/esm/relation-repository/relation-repository.js.map +0 -1
  226. package/esm/relation-repository/single-relation-repository.d.ts +0 -23
  227. package/esm/relation-repository/single-relation-repository.js +0 -96
  228. package/esm/relation-repository/single-relation-repository.js.map +0 -1
  229. package/esm/relation-repository/types.d.ts +0 -7
  230. package/esm/relation-repository/types.js +0 -2
  231. package/esm/relation-repository/types.js.map +0 -1
  232. package/esm/repository.d.ts +0 -165
  233. package/esm/repository.js +0 -276
  234. package/esm/repository.js.map +0 -1
  235. package/esm/transaction-decorator.d.ts +0 -1
  236. package/esm/transaction-decorator.js +0 -63
  237. package/esm/transaction-decorator.js.map +0 -1
  238. package/esm/update-associations.d.ts +0 -60
  239. package/esm/update-associations.js +0 -362
  240. package/esm/update-associations.js.map +0 -1
  241. package/esm/update-guard.d.ts +0 -26
  242. package/esm/update-guard.js +0 -122
  243. package/esm/update-guard.js.map +0 -1
  244. package/lib/collection-importer.js.map +0 -1
  245. package/lib/collection.js.map +0 -1
  246. package/lib/database.js.map +0 -1
  247. package/lib/fields/array-field.js.map +0 -1
  248. package/lib/fields/belongs-to-field.js.map +0 -1
  249. package/lib/fields/belongs-to-many-field.js.map +0 -1
  250. package/lib/fields/boolean-field.js.map +0 -1
  251. package/lib/fields/context-field.js.map +0 -1
  252. package/lib/fields/date-field.js.map +0 -1
  253. package/lib/fields/field.js.map +0 -1
  254. package/lib/fields/has-inverse-field.js.map +0 -1
  255. package/lib/fields/has-many-field.js.map +0 -1
  256. package/lib/fields/has-one-field.js.map +0 -1
  257. package/lib/fields/index.js.map +0 -1
  258. package/lib/fields/json-field.js.map +0 -1
  259. package/lib/fields/number-field.js.map +0 -1
  260. package/lib/fields/password-field.js.map +0 -1
  261. package/lib/fields/radio-field.js.map +0 -1
  262. package/lib/fields/relation-field.js.map +0 -1
  263. package/lib/fields/sort-field.js.map +0 -1
  264. package/lib/fields/string-field.js.map +0 -1
  265. package/lib/fields/text-field.js.map +0 -1
  266. package/lib/fields/time-field.js.map +0 -1
  267. package/lib/fields/uid-field.js.map +0 -1
  268. package/lib/fields/virtual-field.js.map +0 -1
  269. package/lib/filter-parser.js.map +0 -1
  270. package/lib/index.js.map +0 -1
  271. package/lib/magic-attribute-model.js.map +0 -1
  272. package/lib/mock-database.js.map +0 -1
  273. package/lib/model-hook.js.map +0 -1
  274. package/lib/model.js.map +0 -1
  275. package/lib/operators/array.js.map +0 -1
  276. package/lib/operators/association.js.map +0 -1
  277. package/lib/operators/date.js.map +0 -1
  278. package/lib/operators/empty.js.map +0 -1
  279. package/lib/operators/index.js.map +0 -1
  280. package/lib/operators/ne.js.map +0 -1
  281. package/lib/operators/string.js.map +0 -1
  282. package/lib/operators/utils.js.map +0 -1
  283. package/lib/options-parser.js.map +0 -1
  284. package/lib/playground.js.map +0 -1
  285. package/lib/relation-repository/belongs-to-many-repository.js.map +0 -1
  286. package/lib/relation-repository/belongs-to-repository.js.map +0 -1
  287. package/lib/relation-repository/hasmany-repository.js.map +0 -1
  288. package/lib/relation-repository/hasone-repository.js.map +0 -1
  289. package/lib/relation-repository/multiple-relation-repository.js.map +0 -1
  290. package/lib/relation-repository/relation-repository.js.map +0 -1
  291. package/lib/relation-repository/single-relation-repository.js.map +0 -1
  292. package/lib/relation-repository/types.js.map +0 -1
  293. package/lib/repository.js.map +0 -1
  294. package/lib/transaction-decorator.js.map +0 -1
  295. package/lib/update-associations.js.map +0 -1
  296. package/lib/update-guard.js.map +0 -1
  297. package/tsconfig.build.json +0 -9
  298. package/tsconfig.json +0 -5
@@ -1,30 +1,50 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.ArrayField = void 0;
4
- const field_1 = require("./field");
5
- const sequelize_1 = require("sequelize");
6
- class ArrayField extends field_1.Field {
7
- get dataType() {
8
- if (this.database.sequelize.getDialect() === 'postgres') {
9
- return sequelize_1.DataTypes.JSONB;
10
- }
11
- return sequelize_1.DataTypes.JSON;
12
- }
13
- sortValue(model) {
14
- const oldValue = model.get(this.options.name);
15
- if (oldValue) {
16
- const newValue = oldValue.sort();
17
- model.set(this.options.name, newValue);
18
- }
19
- }
20
- bind() {
21
- super.bind();
22
- this.on('beforeSave', this.sortValue.bind(this));
7
+
8
+ var _field = require("./field");
9
+
10
+ function _sequelize() {
11
+ const data = require("sequelize");
12
+
13
+ _sequelize = function _sequelize() {
14
+ return data;
15
+ };
16
+
17
+ return data;
18
+ }
19
+
20
+ class ArrayField extends _field.Field {
21
+ get dataType() {
22
+ if (this.database.sequelize.getDialect() === 'postgres') {
23
+ return _sequelize().DataTypes.JSONB;
23
24
  }
24
- unbind() {
25
- super.unbind();
26
- this.off('beforeSave', this.sortValue.bind(this));
25
+
26
+ return _sequelize().DataTypes.JSON;
27
+ }
28
+
29
+ sortValue(model) {
30
+ const oldValue = model.get(this.options.name);
31
+
32
+ if (oldValue) {
33
+ const newValue = oldValue.sort();
34
+ model.set(this.options.name, newValue);
27
35
  }
36
+ }
37
+
38
+ bind() {
39
+ super.bind();
40
+ this.on('beforeSave', this.sortValue.bind(this));
41
+ }
42
+
43
+ unbind() {
44
+ super.unbind();
45
+ this.off('beforeSave', this.sortValue.bind(this));
46
+ }
47
+
28
48
  }
29
- exports.ArrayField = ArrayField;
30
- //# sourceMappingURL=array-field.js.map
49
+
50
+ exports.ArrayField = ArrayField;
@@ -1,61 +1,108 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.BelongsToField = void 0;
4
- const lodash_1 = require("lodash");
5
- const sequelize_1 = require("sequelize");
6
- const relation_field_1 = require("./relation-field");
7
- class BelongsToField extends relation_field_1.RelationField {
8
- get target() {
9
- const { target, name } = this.options;
10
- return target || sequelize_1.Utils.pluralize(name);
7
+
8
+ function _lodash() {
9
+ const data = require("lodash");
10
+
11
+ _lodash = function _lodash() {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function _sequelize() {
19
+ const data = require("sequelize");
20
+
21
+ _sequelize = function _sequelize() {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
28
+ var _relationField = require("./relation-field");
29
+
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
+
32
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
+
34
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
+
36
+ class BelongsToField extends _relationField.RelationField {
37
+ get target() {
38
+ const _this$options = this.options,
39
+ target = _this$options.target,
40
+ name = _this$options.name;
41
+ return target || _sequelize().Utils.pluralize(name);
42
+ }
43
+
44
+ bind() {
45
+ const _this$context = this.context,
46
+ database = _this$context.database,
47
+ collection = _this$context.collection;
48
+ const Target = this.TargetModel; // if target model not exists, add it to pending field,
49
+ // it will bind later
50
+
51
+ if (!Target) {
52
+ database.addPendingField(this);
53
+ return false;
11
54
  }
12
- bind() {
13
- const { database, collection } = this.context;
14
- const Target = this.TargetModel;
15
- // if target model not exists, add it to pending field,
16
- // it will bind later
17
- if (!Target) {
18
- database.addPendingField(this);
19
- return false;
20
- }
21
- if (collection.model.associations[this.name]) {
22
- delete collection.model.associations[this.name];
23
- }
24
- // define relation on sequelize model
25
- const association = collection.model.belongsTo(Target, Object.assign({ as: this.name }, (0, lodash_1.omit)(this.options, ['name', 'type', 'target'])));
26
- // inverse relation
27
- // this.TargetModel.hasMany(collection.model);
28
- // 建立关系之后从 pending 列表中删除
29
- database.removePendingField(this);
30
- if (!this.options.foreignKey) {
31
- this.options.foreignKey = association.foreignKey;
32
- }
33
- if (!this.options.sourceKey) {
34
- // @ts-ignore
35
- this.options.sourceKey = association.sourceKey;
36
- }
37
- return true;
55
+
56
+ if (collection.model.associations[this.name]) {
57
+ delete collection.model.associations[this.name];
58
+ } // define relation on sequelize model
59
+
60
+
61
+ const association = collection.model.belongsTo(Target, _objectSpread({
62
+ as: this.name
63
+ }, (0, _lodash().omit)(this.options, ['name', 'type', 'target']))); // inverse relation
64
+ // this.TargetModel.hasMany(collection.model);
65
+ // 建立关系之后从 pending 列表中删除
66
+
67
+ database.removePendingField(this);
68
+
69
+ if (!this.options.foreignKey) {
70
+ this.options.foreignKey = association.foreignKey;
38
71
  }
39
- unbind() {
40
- const { database, collection } = this.context;
41
- // 如果关系字段还没建立就删除了,也同步删除待建立关联的关系字段
42
- database.removePendingField(this);
43
- // 如果外键没有显式的创建,关系表也无反向关联字段,删除关系时,外键也删除掉
44
- const tcoll = database.collections.get(this.target);
45
- const foreignKey = this.options.foreignKey;
46
- const field1 = collection.getField(foreignKey);
47
- const field2 = tcoll.findField((field) => {
48
- return field.type === 'hasMany' && field.foreignKey === foreignKey;
49
- });
50
- if (!field1 && !field2) {
51
- collection.model.removeAttribute(foreignKey);
52
- }
53
- // 删掉 model 的关联字段
54
- delete collection.model.associations[this.name];
55
- // @ts-ignore
56
- collection.model.refreshAttributes();
72
+
73
+ if (!this.options.sourceKey) {
74
+ // @ts-ignore
75
+ this.options.sourceKey = association.sourceKey;
57
76
  }
77
+
78
+ return true;
79
+ }
80
+
81
+ unbind() {
82
+ const _this$context2 = this.context,
83
+ database = _this$context2.database,
84
+ collection = _this$context2.collection; // 如果关系字段还没建立就删除了,也同步删除待建立关联的关系字段
85
+
86
+ database.removePendingField(this); // 如果外键没有显式的创建,关系表也无反向关联字段,删除关系时,外键也删除掉
87
+
88
+ const tcoll = database.collections.get(this.target);
89
+ const foreignKey = this.options.foreignKey;
90
+ const field1 = collection.getField(foreignKey);
91
+ const field2 = tcoll.findField(field => {
92
+ return field.type === 'hasMany' && field.foreignKey === foreignKey;
93
+ });
94
+
95
+ if (!field1 && !field2) {
96
+ collection.model.removeAttribute(foreignKey);
97
+ } // 删掉 model 的关联字段
98
+
99
+
100
+ delete collection.model.associations[this.name]; // @ts-ignore
101
+
102
+ collection.model.refreshAttributes();
103
+ }
104
+
58
105
  }
106
+
59
107
  exports.BelongsToField = BelongsToField;
60
- BelongsToField.type = 'belongsTo';
61
- //# sourceMappingURL=belongs-to-field.js.map
108
+ BelongsToField.type = 'belongsTo';
@@ -1,59 +1,104 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.BelongsToManyField = void 0;
4
- const lodash_1 = require("lodash");
5
- const sequelize_1 = require("sequelize");
6
- const relation_field_1 = require("./relation-field");
7
- class BelongsToManyField extends relation_field_1.RelationField {
8
- get through() {
9
- return (this.options.through ||
10
- sequelize_1.Utils.camelize([this.context.collection.model.name, this.target]
11
- .map((name) => name.toLowerCase())
12
- .sort()
13
- .join('_')));
7
+
8
+ function _lodash() {
9
+ const data = require("lodash");
10
+
11
+ _lodash = function _lodash() {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function _sequelize() {
19
+ const data = require("sequelize");
20
+
21
+ _sequelize = function _sequelize() {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
28
+ var _relationField = require("./relation-field");
29
+
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
+
32
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
+
34
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
+
36
+ class BelongsToManyField extends _relationField.RelationField {
37
+ get through() {
38
+ return this.options.through || _sequelize().Utils.camelize([this.context.collection.model.name, this.target].map(name => name.toLowerCase()).sort().join('_'));
39
+ }
40
+
41
+ bind() {
42
+ const _this$context = this.context,
43
+ database = _this$context.database,
44
+ collection = _this$context.collection;
45
+ const Target = this.TargetModel;
46
+
47
+ if (!Target) {
48
+ database.addPendingField(this);
49
+ return false;
50
+ }
51
+
52
+ const through = this.through;
53
+ let Through;
54
+
55
+ if (database.hasCollection(through)) {
56
+ Through = database.getCollection(through);
57
+ } else {
58
+ Through = database.collection({
59
+ name: through
60
+ });
61
+ Object.defineProperty(Through.model, 'isThrough', {
62
+ value: true
63
+ });
64
+ }
65
+
66
+ const association = collection.model.belongsToMany(Target, _objectSpread(_objectSpread({}, (0, _lodash().omit)(this.options, ['name', 'type', 'target'])), {}, {
67
+ as: this.name,
68
+ through: Through.model
69
+ })); // 建立关系之后从 pending 列表中删除
70
+
71
+ database.removePendingField(this);
72
+
73
+ if (!this.options.foreignKey) {
74
+ this.options.foreignKey = association.foreignKey;
75
+ }
76
+
77
+ if (!this.options.sourceKey) {
78
+ this.options.sourceKey = association.sourceKey;
14
79
  }
15
- bind() {
16
- const { database, collection } = this.context;
17
- const Target = this.TargetModel;
18
- if (!Target) {
19
- database.addPendingField(this);
20
- return false;
21
- }
22
- const through = this.through;
23
- let Through;
24
- if (database.hasCollection(through)) {
25
- Through = database.getCollection(through);
26
- }
27
- else {
28
- Through = database.collection({
29
- name: through,
30
- });
31
- Object.defineProperty(Through.model, 'isThrough', { value: true });
32
- }
33
- const association = collection.model.belongsToMany(Target, Object.assign(Object.assign({}, (0, lodash_1.omit)(this.options, ['name', 'type', 'target'])), { as: this.name, through: Through.model }));
34
- // 建立关系之后从 pending 列表中删除
35
- database.removePendingField(this);
36
- if (!this.options.foreignKey) {
37
- this.options.foreignKey = association.foreignKey;
38
- }
39
- if (!this.options.sourceKey) {
40
- this.options.sourceKey = association.sourceKey;
41
- }
42
- if (!this.options.otherKey) {
43
- this.options.otherKey = association.otherKey;
44
- }
45
- if (!this.options.through) {
46
- this.options.through = this.through;
47
- }
48
- return true;
80
+
81
+ if (!this.options.otherKey) {
82
+ this.options.otherKey = association.otherKey;
49
83
  }
50
- unbind() {
51
- const { database, collection } = this.context;
52
- // 如果关系字段还没建立就删除了,也同步删除待建立关联的关系字段
53
- database.removePendingField(this);
54
- // 删掉 model 的关联字段
55
- delete collection.model.associations[this.name];
84
+
85
+ if (!this.options.through) {
86
+ this.options.through = this.through;
56
87
  }
88
+
89
+ return true;
90
+ }
91
+
92
+ unbind() {
93
+ const _this$context2 = this.context,
94
+ database = _this$context2.database,
95
+ collection = _this$context2.collection; // 如果关系字段还没建立就删除了,也同步删除待建立关联的关系字段
96
+
97
+ database.removePendingField(this); // 删掉 model 的关联字段
98
+
99
+ delete collection.model.associations[this.name];
100
+ }
101
+
57
102
  }
58
- exports.BelongsToManyField = BelongsToManyField;
59
- //# sourceMappingURL=belongs-to-many-field.js.map
103
+
104
+ exports.BelongsToManyField = BelongsToManyField;
@@ -1,12 +1,27 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.BooleanField = void 0;
4
- const sequelize_1 = require("sequelize");
5
- const field_1 = require("./field");
6
- class BooleanField extends field_1.Field {
7
- get dataType() {
8
- return sequelize_1.DataTypes.BOOLEAN;
9
- }
7
+
8
+ function _sequelize() {
9
+ const data = require("sequelize");
10
+
11
+ _sequelize = function _sequelize() {
12
+ return data;
13
+ };
14
+
15
+ return data;
10
16
  }
11
- exports.BooleanField = BooleanField;
12
- //# sourceMappingURL=boolean-field.js.map
17
+
18
+ var _field = require("./field");
19
+
20
+ class BooleanField extends _field.Field {
21
+ get dataType() {
22
+ return _sequelize().DataTypes.BOOLEAN;
23
+ }
24
+
25
+ }
26
+
27
+ exports.BooleanField = BooleanField;
@@ -1,47 +1,82 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
12
6
  exports.ContextField = void 0;
13
- const utils_1 = require("@umijs/utils");
14
- const sequelize_1 = require("sequelize");
15
- const field_1 = require("./field");
16
- class ContextField extends field_1.Field {
17
- get dataType() {
18
- const type = this.options.dataType || 'string';
19
- return sequelize_1.DataTypes[type.toUpperCase()] || sequelize_1.DataTypes.STRING;
20
- }
21
- init() {
22
- const { name, dataIndex } = this.options;
23
- this.listener = (model, options) => __awaiter(this, void 0, void 0, function* () {
24
- const { context } = options;
25
- model.set(name, utils_1.lodash.get(context, dataIndex));
26
- model.changed(name, true);
27
- });
28
- }
29
- bind() {
30
- super.bind();
31
- const { createOnly } = this.options;
32
- this.on('beforeCreate', this.listener);
33
- if (!createOnly) {
34
- this.on('beforeUpdate', this.listener);
35
- }
7
+
8
+ function _lodash() {
9
+ const data = _interopRequireDefault(require("lodash"));
10
+
11
+ _lodash = function _lodash() {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function _sequelize() {
19
+ const data = require("sequelize");
20
+
21
+ _sequelize = function _sequelize() {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
28
+ var _field = require("./field");
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+
32
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
33
+
34
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
35
+
36
+ class ContextField extends _field.Field {
37
+ get dataType() {
38
+ const type = this.options.dataType || 'string';
39
+ return _sequelize().DataTypes[type.toUpperCase()] || _sequelize().DataTypes.STRING;
40
+ }
41
+
42
+ init() {
43
+ const _this$options = this.options,
44
+ name = _this$options.name,
45
+ dataIndex = _this$options.dataIndex;
46
+
47
+ this.listener = /*#__PURE__*/function () {
48
+ var _ref = _asyncToGenerator(function* (model, options) {
49
+ const context = options.context;
50
+ model.set(name, _lodash().default.get(context, dataIndex));
51
+ model.changed(name, true);
52
+ });
53
+
54
+ return function (_x, _x2) {
55
+ return _ref.apply(this, arguments);
56
+ };
57
+ }();
58
+ }
59
+
60
+ bind() {
61
+ super.bind();
62
+ const createOnly = this.options.createOnly;
63
+ this.on('beforeCreate', this.listener);
64
+
65
+ if (!createOnly) {
66
+ this.on('beforeUpdate', this.listener);
36
67
  }
37
- unbind() {
38
- super.unbind();
39
- const { createOnly } = this.options;
40
- this.off('beforeCreate', this.listener);
41
- if (!createOnly) {
42
- this.off('beforeUpdate', this.listener);
43
- }
68
+ }
69
+
70
+ unbind() {
71
+ super.unbind();
72
+ const createOnly = this.options.createOnly;
73
+ this.off('beforeCreate', this.listener);
74
+
75
+ if (!createOnly) {
76
+ this.off('beforeUpdate', this.listener);
44
77
  }
78
+ }
79
+
45
80
  }
46
- exports.ContextField = ContextField;
47
- //# sourceMappingURL=context-field.js.map
81
+
82
+ exports.ContextField = ContextField;
@@ -1,12 +1,27 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.DateField = void 0;
4
- const sequelize_1 = require("sequelize");
5
- const field_1 = require("./field");
6
- class DateField extends field_1.Field {
7
- get dataType() {
8
- return sequelize_1.DataTypes.DATE;
9
- }
7
+
8
+ function _sequelize() {
9
+ const data = require("sequelize");
10
+
11
+ _sequelize = function _sequelize() {
12
+ return data;
13
+ };
14
+
15
+ return data;
10
16
  }
11
- exports.DateField = DateField;
12
- //# sourceMappingURL=date-field.js.map
17
+
18
+ var _field = require("./field");
19
+
20
+ class DateField extends _field.Field {
21
+ get dataType() {
22
+ return _sequelize().DataTypes.DATE;
23
+ }
24
+
25
+ }
26
+
27
+ exports.DateField = DateField;