@nocobase/database 0.9.1-alpha.2 → 0.9.2-alpha.2
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.
- package/lib/collection-group-manager.d.ts +13 -0
- package/lib/collection-group-manager.js +91 -0
- package/lib/collection-importer.js +0 -24
- package/lib/collection.d.ts +24 -3
- package/lib/collection.js +176 -236
- package/lib/database-utils/index.js +3 -15
- package/lib/database.d.ts +3 -0
- package/lib/database.js +160 -298
- package/lib/decorators/must-have-filter-decorator.js +0 -7
- package/lib/decorators/transaction-decorator.js +5 -18
- package/lib/errors/identifier-error.js +0 -3
- package/lib/features/ReferencesMap.js +1 -14
- package/lib/features/referential-integrity-check.js +7 -21
- package/lib/field-repository/array-field-repository.js +5 -45
- package/lib/fields/array-field.js +0 -13
- package/lib/fields/belongs-to-field.js +24 -50
- package/lib/fields/belongs-to-many-field.js +23 -47
- package/lib/fields/boolean-field.js +0 -7
- package/lib/fields/context-field.js +2 -23
- package/lib/fields/date-field.d.ts +4 -0
- package/lib/fields/date-field.js +15 -7
- package/lib/fields/field.js +32 -85
- package/lib/fields/has-many-field.js +16 -49
- package/lib/fields/has-one-field.js +18 -52
- package/lib/fields/index.js +0 -44
- package/lib/fields/json-field.js +0 -12
- package/lib/fields/number-field.js +0 -23
- package/lib/fields/password-field.js +8 -35
- package/lib/fields/radio-field.js +0 -18
- package/lib/fields/relation-field.js +4 -16
- package/lib/fields/set-field.js +0 -8
- package/lib/fields/sort-field.js +84 -73
- package/lib/fields/string-field.js +0 -7
- package/lib/fields/text-field.js +0 -7
- package/lib/fields/time-field.js +0 -7
- package/lib/fields/uid-field.js +4 -22
- package/lib/fields/uuid-field.js +3 -12
- package/lib/fields/virtual-field.js +0 -7
- package/lib/filter-match.js +7 -22
- package/lib/filter-parser.js +37 -101
- package/lib/index.d.ts +3 -0
- package/lib/index.js +36 -42
- package/lib/inherited-collection.js +15 -62
- package/lib/inherited-map.js +7 -48
- package/lib/listeners/adjacency-list.d.ts +3 -0
- package/lib/listeners/adjacency-list.js +91 -0
- package/lib/listeners/index.d.ts +2 -0
- package/lib/listeners/index.js +12 -0
- package/lib/magic-attribute-model.js +58 -114
- package/lib/migration.js +7 -28
- package/lib/mock-database.d.ts +4 -4
- package/lib/mock-database.js +15 -18
- package/lib/model-hook.js +4 -35
- package/lib/model.js +12 -54
- package/lib/operators/array.js +2 -32
- package/lib/operators/association.js +0 -6
- package/lib/operators/boolean.js +0 -6
- package/lib/operators/child-collection.d.ts +2 -0
- package/lib/operators/child-collection.js +32 -0
- package/lib/operators/date.js +123 -60
- package/lib/operators/empty.js +3 -32
- package/lib/operators/eq.d.ts +2 -0
- package/lib/operators/eq.js +26 -0
- package/lib/operators/index.js +4 -7
- package/lib/operators/ne.js +5 -5
- package/lib/operators/notIn.js +0 -5
- package/lib/operators/string.js +0 -11
- package/lib/operators/utils.js +0 -6
- package/lib/options-parser.d.ts +1 -1
- package/lib/options-parser.js +47 -107
- package/lib/playground.js +0 -4
- package/lib/query-interface/mysql-query-interface.d.ts +11 -0
- package/lib/query-interface/mysql-query-interface.js +59 -10
- package/lib/query-interface/postgres-query-interface.d.ts +8 -0
- package/lib/query-interface/postgres-query-interface.js +70 -12
- package/lib/query-interface/query-interface-builder.js +0 -5
- package/lib/query-interface/query-interface.d.ts +12 -0
- package/lib/query-interface/query-interface.js +33 -3
- package/lib/query-interface/sqlite-query-interface.d.ts +11 -0
- package/lib/query-interface/sqlite-query-interface.js +61 -10
- package/lib/relation-repository/belongs-to-many-repository.js +21 -78
- package/lib/relation-repository/belongs-to-repository.js +0 -3
- package/lib/relation-repository/hasmany-repository.js +8 -44
- package/lib/relation-repository/hasone-repository.js +0 -3
- package/lib/relation-repository/multiple-relation-repository.js +14 -68
- package/lib/relation-repository/relation-repository.js +5 -42
- package/lib/relation-repository/single-relation-repository.js +5 -43
- package/lib/repository.d.ts +1 -0
- package/lib/repository.js +36 -182
- package/lib/sql-parser/index.js +10527 -0
- package/lib/sql-parser/sql.pegjs +1297 -0
- package/lib/sync-runner.js +19 -54
- package/lib/update-associations.js +58 -157
- package/lib/update-guard.js +10 -49
- package/lib/utils.js +6 -54
- package/lib/value-parsers/array-value-parser.js +3 -21
- package/lib/value-parsers/base-value-parser.js +0 -13
- package/lib/value-parsers/boolean-value-parser.js +4 -10
- package/lib/value-parsers/date-value-parser.js +0 -23
- package/lib/value-parsers/index.js +0 -10
- package/lib/value-parsers/json-value-parser.js +0 -7
- package/lib/value-parsers/number-value-parser.js +0 -9
- package/lib/value-parsers/string-value-parser.js +3 -20
- package/lib/value-parsers/to-many-value-parser.js +1 -42
- package/lib/value-parsers/to-one-value-parser.js +0 -14
- package/lib/view/field-type-map.d.ts +47 -0
- package/lib/view/field-type-map.js +56 -0
- package/lib/view/view-inference.d.ts +31 -0
- package/lib/view/view-inference.js +92 -0
- package/lib/view-collection.d.ts +6 -0
- package/lib/view-collection.js +24 -0
- package/package.json +4 -4
- package/src/__tests__/collection.test.ts +44 -0
- package/src/__tests__/fields/date.test.ts +75 -0
- package/src/__tests__/fields/sort-field.test.ts +100 -0
- package/src/__tests__/filter.test.ts +3 -3
- package/src/__tests__/group.test.ts +50 -0
- package/src/__tests__/inhertits/collection-inherits.test.ts +114 -0
- package/src/__tests__/operator/date-operator.test.ts +244 -98
- package/src/__tests__/operator/eq.test.ts +76 -0
- package/src/__tests__/operator/ne.test.ts +19 -1
- package/src/__tests__/relation-repository/belongs-to-many-repository.test.ts +82 -0
- package/src/__tests__/repository/find.test.ts +33 -0
- package/src/__tests__/repository.test.ts +88 -0
- package/src/__tests__/sql-parser.test.ts +13 -0
- package/src/__tests__/tree.test.ts +217 -0
- package/src/__tests__/view/list-view.test.ts +34 -0
- package/src/__tests__/view/view-collection.test.ts +199 -0
- package/src/__tests__/view/view-inference.test.ts +145 -0
- package/src/__tests__/view/view-repository.test.ts +67 -0
- package/src/collection-group-manager.ts +94 -0
- package/src/collection.ts +108 -14
- package/src/database-utils/index.ts +1 -0
- package/src/database.ts +79 -12
- package/src/features/ReferencesMap.ts +3 -2
- package/src/fields/belongs-to-many-field.ts +15 -2
- package/src/fields/date-field.ts +18 -0
- package/src/fields/field.ts +16 -8
- package/src/fields/json-field.ts +1 -0
- package/src/fields/sort-field.ts +90 -29
- package/src/filter-parser.ts +1 -0
- package/src/index.ts +3 -1
- package/src/listeners/adjacency-list.ts +60 -0
- package/src/listeners/index.ts +7 -0
- package/src/mock-database.ts +14 -2
- package/src/model.ts +4 -0
- package/src/operators/child-collection.ts +24 -0
- package/src/operators/date.ts +108 -24
- package/src/operators/eq.ts +14 -0
- package/src/operators/index.ts +2 -0
- package/src/operators/ne.ts +12 -7
- package/src/options-parser.ts +25 -11
- package/src/query-interface/mysql-query-interface.ts +53 -1
- package/src/query-interface/postgres-query-interface.ts +84 -3
- package/src/query-interface/query-interface.ts +31 -0
- package/src/query-interface/sqlite-query-interface.ts +62 -1
- package/src/relation-repository/belongs-to-many-repository.ts +20 -1
- package/src/relation-repository/hasmany-repository.ts +5 -3
- package/src/relation-repository/multiple-relation-repository.ts +9 -1
- package/src/repository.ts +6 -13
- package/src/sql-parser/index.js +10698 -0
- package/src/sql-parser/readme.md +2 -0
- package/src/sql-parser/sql.pegjs +1297 -0
- package/src/sync-runner.ts +13 -15
- package/src/update-associations.ts +26 -22
- package/src/view/field-type-map.ts +56 -0
- package/src/view/view-inference.ts +106 -0
- package/src/view-collection.ts +21 -0
package/lib/repository.js
CHANGED
|
@@ -4,89 +4,57 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Repository = void 0;
|
|
7
|
-
|
|
8
7
|
function _lodash() {
|
|
9
8
|
const data = _interopRequireWildcard(require("lodash"));
|
|
10
|
-
|
|
11
9
|
_lodash = function _lodash() {
|
|
12
10
|
return data;
|
|
13
11
|
};
|
|
14
|
-
|
|
15
12
|
return data;
|
|
16
13
|
}
|
|
17
|
-
|
|
18
14
|
function _sequelize() {
|
|
19
15
|
const data = require("sequelize");
|
|
20
|
-
|
|
21
16
|
_sequelize = function _sequelize() {
|
|
22
17
|
return data;
|
|
23
18
|
};
|
|
24
|
-
|
|
25
19
|
return data;
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
var _mustHaveFilterDecorator = _interopRequireDefault(require("./decorators/must-have-filter-decorator"));
|
|
29
|
-
|
|
30
22
|
var _transactionDecorator = require("./decorators/transaction-decorator");
|
|
31
|
-
|
|
32
23
|
var _arrayFieldRepository = require("./field-repository/array-field-repository");
|
|
33
|
-
|
|
34
24
|
var _fields = require("./fields");
|
|
35
|
-
|
|
36
25
|
var _filterParser = _interopRequireDefault(require("./filter-parser"));
|
|
37
|
-
|
|
38
26
|
var _optionsParser = require("./options-parser");
|
|
39
|
-
|
|
40
27
|
var _belongsToManyRepository = require("./relation-repository/belongs-to-many-repository");
|
|
41
|
-
|
|
42
28
|
var _belongsToRepository = require("./relation-repository/belongs-to-repository");
|
|
43
|
-
|
|
44
29
|
var _hasmanyRepository = require("./relation-repository/hasmany-repository");
|
|
45
|
-
|
|
46
30
|
var _hasoneRepository = require("./relation-repository/hasone-repository");
|
|
47
|
-
|
|
48
31
|
var _updateAssociations = require("./update-associations");
|
|
49
|
-
|
|
50
32
|
var _updateGuard = require("./update-guard");
|
|
51
|
-
|
|
52
33
|
var _utils = require("./utils");
|
|
53
|
-
|
|
54
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
55
|
-
|
|
56
35
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
57
|
-
|
|
58
36
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
59
|
-
|
|
60
37
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
61
|
-
|
|
62
38
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
63
|
-
|
|
64
39
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
65
|
-
|
|
66
40
|
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; }
|
|
67
|
-
|
|
68
41
|
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; }
|
|
69
|
-
|
|
70
|
-
function
|
|
71
|
-
|
|
42
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
43
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
44
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
72
45
|
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); } }
|
|
73
|
-
|
|
74
46
|
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); }); }; }
|
|
75
|
-
|
|
76
47
|
var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
|
|
77
48
|
var c = arguments.length,
|
|
78
|
-
|
|
79
|
-
|
|
49
|
+
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
50
|
+
d;
|
|
80
51
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
81
52
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
82
53
|
};
|
|
83
|
-
|
|
84
54
|
const debug = require('debug')('noco-database');
|
|
85
|
-
|
|
86
55
|
const transaction = (0, _transactionDecorator.transactionWrapperBuilder)(function () {
|
|
87
56
|
return this.collection.model.sequelize.transaction();
|
|
88
57
|
});
|
|
89
|
-
|
|
90
58
|
class RelationRepositoryBuilder {
|
|
91
59
|
constructor(collection, associationName) {
|
|
92
60
|
this.collection = void 0;
|
|
@@ -102,10 +70,8 @@ class RelationRepositoryBuilder {
|
|
|
102
70
|
this.collection = collection;
|
|
103
71
|
this.associationName = associationName;
|
|
104
72
|
this.association = this.collection.model.associations[this.associationName];
|
|
105
|
-
|
|
106
73
|
if (!this.association) {
|
|
107
74
|
const field = collection.getField(associationName);
|
|
108
|
-
|
|
109
75
|
if (field && field instanceof _fields.ArrayField) {
|
|
110
76
|
this.association = {
|
|
111
77
|
associationType: 'ArrayField'
|
|
@@ -113,22 +79,17 @@ class RelationRepositoryBuilder {
|
|
|
113
79
|
}
|
|
114
80
|
}
|
|
115
81
|
}
|
|
116
|
-
|
|
117
82
|
builder() {
|
|
118
83
|
return this.builderMap;
|
|
119
84
|
}
|
|
120
|
-
|
|
121
85
|
of(id) {
|
|
122
86
|
if (!this.association) {
|
|
123
87
|
return;
|
|
124
88
|
}
|
|
125
|
-
|
|
126
89
|
const klass = this.builder()[this.association.associationType];
|
|
127
90
|
return new klass(this.collection, this.associationName, id);
|
|
128
91
|
}
|
|
129
|
-
|
|
130
92
|
}
|
|
131
|
-
|
|
132
93
|
class Repository {
|
|
133
94
|
constructor(collection) {
|
|
134
95
|
this.database = void 0;
|
|
@@ -141,21 +102,15 @@ class Repository {
|
|
|
141
102
|
/**
|
|
142
103
|
* return count by filter
|
|
143
104
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
105
|
count(countOptions) {
|
|
147
106
|
var _this = this;
|
|
148
|
-
|
|
149
107
|
return _asyncToGenerator(function* () {
|
|
150
108
|
var _queryOptions$include;
|
|
151
|
-
|
|
152
109
|
let options = countOptions ? _lodash().default.clone(countOptions) : {};
|
|
153
110
|
const transaction = yield _this.getTransaction(options);
|
|
154
|
-
|
|
155
111
|
if (countOptions === null || countOptions === void 0 ? void 0 : countOptions.filter) {
|
|
156
112
|
options = _objectSpread(_objectSpread({}, options), _this.parseFilter(countOptions.filter, countOptions));
|
|
157
113
|
}
|
|
158
|
-
|
|
159
114
|
if (countOptions === null || countOptions === void 0 ? void 0 : countOptions.filterByTk) {
|
|
160
115
|
options['where'] = {
|
|
161
116
|
[_sequelize().Op.and]: [options['where'] || {}, {
|
|
@@ -163,19 +118,16 @@ class Repository {
|
|
|
163
118
|
}]
|
|
164
119
|
};
|
|
165
120
|
}
|
|
166
|
-
|
|
167
121
|
const queryOptions = _objectSpread(_objectSpread({}, options), {}, {
|
|
168
122
|
distinct: Boolean(_this.collection.model.primaryKeyAttribute)
|
|
169
123
|
});
|
|
170
|
-
|
|
171
124
|
if (((_queryOptions$include = queryOptions.include) === null || _queryOptions$include === void 0 ? void 0 : _queryOptions$include.length) === 0) {
|
|
172
125
|
delete queryOptions.include;
|
|
173
126
|
}
|
|
174
|
-
|
|
175
127
|
const count = yield _this.collection.model.count(_objectSpread(_objectSpread({}, queryOptions), {}, {
|
|
176
128
|
transaction
|
|
177
|
-
}));
|
|
178
|
-
|
|
129
|
+
}));
|
|
130
|
+
// @ts-ignore
|
|
179
131
|
return count;
|
|
180
132
|
})();
|
|
181
133
|
}
|
|
@@ -183,21 +135,15 @@ class Repository {
|
|
|
183
135
|
* find
|
|
184
136
|
* @param options
|
|
185
137
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
138
|
find(options) {
|
|
189
139
|
var _this2 = this;
|
|
190
|
-
|
|
191
140
|
return _asyncToGenerator(function* () {
|
|
192
141
|
const model = _this2.collection.model;
|
|
193
142
|
const transaction = yield _this2.getTransaction(options);
|
|
194
|
-
|
|
195
143
|
const opts = _objectSpread({
|
|
196
144
|
subQuery: false
|
|
197
145
|
}, _this2.buildQueryOptions(options));
|
|
198
|
-
|
|
199
146
|
let rows;
|
|
200
|
-
|
|
201
147
|
if (opts.include && opts.include.length > 0) {
|
|
202
148
|
// @ts-ignore
|
|
203
149
|
const primaryKeyField = model.primaryKeyField || model.primaryKeyAttribute;
|
|
@@ -208,7 +154,6 @@ class Repository {
|
|
|
208
154
|
transaction,
|
|
209
155
|
include: opts.include.filter(include => {
|
|
210
156
|
var _JSON$stringify;
|
|
211
|
-
|
|
212
157
|
return Object.keys(include.where || {}).length > 0 || ((_JSON$stringify = JSON.stringify(opts === null || opts === void 0 ? void 0 : opts.filter)) === null || _JSON$stringify === void 0 ? void 0 : _JSON$stringify.includes(include.association));
|
|
213
158
|
})
|
|
214
159
|
}))).map(row => {
|
|
@@ -217,11 +162,9 @@ class Repository {
|
|
|
217
162
|
pk: row.get(primaryKeyField)
|
|
218
163
|
};
|
|
219
164
|
});
|
|
220
|
-
|
|
221
165
|
if (ids.length == 0) {
|
|
222
166
|
return [];
|
|
223
167
|
}
|
|
224
|
-
|
|
225
168
|
const templateModel = yield model.findOne(_objectSpread(_objectSpread({}, opts), {}, {
|
|
226
169
|
includeIgnoreAttributes: false,
|
|
227
170
|
attributes: [primaryKeyField],
|
|
@@ -242,7 +185,6 @@ class Repository {
|
|
|
242
185
|
where,
|
|
243
186
|
transaction
|
|
244
187
|
});
|
|
245
|
-
|
|
246
188
|
return model.findAll(options).then(rows => {
|
|
247
189
|
return {
|
|
248
190
|
rows,
|
|
@@ -257,28 +199,11 @@ class Repository {
|
|
|
257
199
|
transaction
|
|
258
200
|
}));
|
|
259
201
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
try {
|
|
266
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
267
|
-
const row = _step.value;
|
|
268
|
-
|
|
269
|
-
const rowCollectionName = _this2.database.tableNameCollectionMap.get(options.raw ? row['__tableName'] : row.get('__tableName')).name;
|
|
270
|
-
|
|
271
|
-
options.raw ? row['__collection'] = rowCollectionName : row.set('__collection', rowCollectionName, {
|
|
272
|
-
raw: true
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
} catch (err) {
|
|
276
|
-
_iterator.e(err);
|
|
277
|
-
} finally {
|
|
278
|
-
_iterator.f();
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
|
|
202
|
+
yield _this2.collection.db.emitAsync('afterRepositoryFind', {
|
|
203
|
+
findOptions: options,
|
|
204
|
+
dataCollection: _this2.collection,
|
|
205
|
+
data: rows
|
|
206
|
+
});
|
|
282
207
|
return rows;
|
|
283
208
|
})();
|
|
284
209
|
}
|
|
@@ -286,11 +211,8 @@ class Repository {
|
|
|
286
211
|
* find and count
|
|
287
212
|
* @param options
|
|
288
213
|
*/
|
|
289
|
-
|
|
290
|
-
|
|
291
214
|
findAndCount(options) {
|
|
292
215
|
var _this3 = this;
|
|
293
|
-
|
|
294
216
|
return _asyncToGenerator(function* () {
|
|
295
217
|
const transaction = yield _this3.getTransaction(options);
|
|
296
218
|
options = _objectSpread(_objectSpread({}, options), {}, {
|
|
@@ -305,8 +227,6 @@ class Repository {
|
|
|
305
227
|
* Find By Id
|
|
306
228
|
*
|
|
307
229
|
*/
|
|
308
|
-
|
|
309
|
-
|
|
310
230
|
findById(id) {
|
|
311
231
|
return this.collection.model.findByPk(id);
|
|
312
232
|
}
|
|
@@ -315,11 +235,8 @@ class Repository {
|
|
|
315
235
|
*
|
|
316
236
|
* @param options
|
|
317
237
|
*/
|
|
318
|
-
|
|
319
|
-
|
|
320
238
|
findOne(options) {
|
|
321
239
|
var _this4 = this;
|
|
322
|
-
|
|
323
240
|
return _asyncToGenerator(function* () {
|
|
324
241
|
const transaction = yield _this4.getTransaction(options);
|
|
325
242
|
const rows = yield _this4.find(_objectSpread(_objectSpread({}, options), {}, {
|
|
@@ -335,38 +252,29 @@ class Repository {
|
|
|
335
252
|
* @param values
|
|
336
253
|
* @param options
|
|
337
254
|
*/
|
|
338
|
-
|
|
339
|
-
|
|
340
255
|
create(options) {
|
|
341
256
|
var _this5 = this;
|
|
342
|
-
|
|
343
257
|
return _asyncToGenerator(function* () {
|
|
344
258
|
if (Array.isArray(options.values)) {
|
|
345
259
|
return _this5.createMany(_objectSpread(_objectSpread({}, options), {}, {
|
|
346
260
|
records: options.values
|
|
347
261
|
}));
|
|
348
262
|
}
|
|
349
|
-
|
|
350
263
|
const transaction = yield _this5.getTransaction(options);
|
|
351
|
-
|
|
352
264
|
const guard = _updateGuard.UpdateGuard.fromOptions(_this5.model, _objectSpread(_objectSpread({}, options), {}, {
|
|
353
265
|
action: 'create',
|
|
354
266
|
underscored: _this5.collection.options.underscored
|
|
355
267
|
}));
|
|
356
|
-
|
|
357
268
|
const values = guard.sanitize(options.values || {});
|
|
358
269
|
const instance = yield _this5.model.create(values, _objectSpread(_objectSpread({}, options), {}, {
|
|
359
270
|
transaction
|
|
360
271
|
}));
|
|
361
|
-
|
|
362
272
|
if (!instance) {
|
|
363
273
|
return;
|
|
364
274
|
}
|
|
365
|
-
|
|
366
275
|
yield (0, _updateAssociations.updateAssociations)(instance, values, _objectSpread(_objectSpread({}, options), {}, {
|
|
367
276
|
transaction
|
|
368
277
|
}));
|
|
369
|
-
|
|
370
278
|
if (options.hooks !== false) {
|
|
371
279
|
yield _this5.database.emitAsync(`${_this5.collection.name}.afterCreateWithAssociations`, instance, _objectSpread(_objectSpread({}, options), {}, {
|
|
372
280
|
transaction
|
|
@@ -376,7 +284,6 @@ class Repository {
|
|
|
376
284
|
}));
|
|
377
285
|
instance.clearChangedWithAssociations();
|
|
378
286
|
}
|
|
379
|
-
|
|
380
287
|
return instance;
|
|
381
288
|
})();
|
|
382
289
|
}
|
|
@@ -386,22 +293,17 @@ class Repository {
|
|
|
386
293
|
* @param records
|
|
387
294
|
* @param options
|
|
388
295
|
*/
|
|
389
|
-
|
|
390
|
-
|
|
391
296
|
createMany(options) {
|
|
392
297
|
var _this6 = this;
|
|
393
|
-
|
|
394
298
|
return _asyncToGenerator(function* () {
|
|
395
299
|
const transaction = yield _this6.getTransaction(options);
|
|
396
300
|
const records = options.records;
|
|
397
301
|
const instances = [];
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
_step2;
|
|
401
|
-
|
|
302
|
+
var _iterator = _createForOfIteratorHelper(records),
|
|
303
|
+
_step;
|
|
402
304
|
try {
|
|
403
|
-
for (
|
|
404
|
-
const values =
|
|
305
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
306
|
+
const values = _step.value;
|
|
405
307
|
const instance = yield _this6.create({
|
|
406
308
|
values,
|
|
407
309
|
transaction
|
|
@@ -409,11 +311,10 @@ class Repository {
|
|
|
409
311
|
instances.push(instance);
|
|
410
312
|
}
|
|
411
313
|
} catch (err) {
|
|
412
|
-
|
|
314
|
+
_iterator.e(err);
|
|
413
315
|
} finally {
|
|
414
|
-
|
|
316
|
+
_iterator.f();
|
|
415
317
|
}
|
|
416
|
-
|
|
417
318
|
return instances;
|
|
418
319
|
})();
|
|
419
320
|
}
|
|
@@ -423,56 +324,44 @@ class Repository {
|
|
|
423
324
|
* @param values
|
|
424
325
|
* @param options
|
|
425
326
|
*/
|
|
426
|
-
|
|
427
|
-
|
|
428
327
|
update(options) {
|
|
429
328
|
var _this7 = this;
|
|
430
|
-
|
|
431
329
|
return _asyncToGenerator(function* () {
|
|
432
330
|
if (Array.isArray(options.values)) {
|
|
433
331
|
return _this7.updateMany(_objectSpread(_objectSpread({}, options), {}, {
|
|
434
332
|
records: options.values
|
|
435
333
|
}));
|
|
436
334
|
}
|
|
437
|
-
|
|
438
335
|
const transaction = yield _this7.getTransaction(options);
|
|
439
|
-
|
|
440
336
|
const guard = _updateGuard.UpdateGuard.fromOptions(_this7.model, _objectSpread(_objectSpread({}, options), {}, {
|
|
441
337
|
underscored: _this7.collection.options.underscored
|
|
442
338
|
}));
|
|
443
|
-
|
|
444
339
|
const values = guard.sanitize(options.values);
|
|
445
|
-
|
|
446
340
|
const queryOptions = _this7.buildQueryOptions(options);
|
|
447
|
-
|
|
448
341
|
const instances = yield _this7.find(_objectSpread(_objectSpread({}, queryOptions), {}, {
|
|
449
342
|
transaction
|
|
450
343
|
}));
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
_step3;
|
|
454
|
-
|
|
344
|
+
var _iterator2 = _createForOfIteratorHelper(instances),
|
|
345
|
+
_step2;
|
|
455
346
|
try {
|
|
456
|
-
for (
|
|
457
|
-
const instance =
|
|
347
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
348
|
+
const instance = _step2.value;
|
|
458
349
|
yield (0, _updateAssociations.updateModelByValues)(instance, values, _objectSpread(_objectSpread({}, options), {}, {
|
|
459
350
|
sanitized: true,
|
|
460
351
|
transaction
|
|
461
352
|
}));
|
|
462
353
|
}
|
|
463
354
|
} catch (err) {
|
|
464
|
-
|
|
355
|
+
_iterator2.e(err);
|
|
465
356
|
} finally {
|
|
466
|
-
|
|
357
|
+
_iterator2.f();
|
|
467
358
|
}
|
|
468
|
-
|
|
469
359
|
if (options.hooks !== false) {
|
|
470
|
-
var
|
|
471
|
-
|
|
472
|
-
|
|
360
|
+
var _iterator3 = _createForOfIteratorHelper(instances),
|
|
361
|
+
_step3;
|
|
473
362
|
try {
|
|
474
|
-
for (
|
|
475
|
-
const instance =
|
|
363
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
364
|
+
const instance = _step3.value;
|
|
476
365
|
yield _this7.database.emitAsync(`${_this7.collection.name}.afterUpdateWithAssociations`, instance, _objectSpread(_objectSpread({}, options), {}, {
|
|
477
366
|
transaction
|
|
478
367
|
}));
|
|
@@ -482,36 +371,29 @@ class Repository {
|
|
|
482
371
|
instance.clearChangedWithAssociations();
|
|
483
372
|
}
|
|
484
373
|
} catch (err) {
|
|
485
|
-
|
|
374
|
+
_iterator3.e(err);
|
|
486
375
|
} finally {
|
|
487
|
-
|
|
376
|
+
_iterator3.f();
|
|
488
377
|
}
|
|
489
378
|
}
|
|
490
|
-
|
|
491
379
|
return instances;
|
|
492
380
|
})();
|
|
493
381
|
}
|
|
494
|
-
|
|
495
382
|
updateMany(options) {
|
|
496
383
|
var _this8 = this;
|
|
497
|
-
|
|
498
384
|
return _asyncToGenerator(function* () {
|
|
499
385
|
const transaction = yield _this8.getTransaction(options);
|
|
500
386
|
const records = options.records;
|
|
501
387
|
const instances = [];
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
_step5;
|
|
505
|
-
|
|
388
|
+
var _iterator4 = _createForOfIteratorHelper(records),
|
|
389
|
+
_step4;
|
|
506
390
|
try {
|
|
507
|
-
for (
|
|
508
|
-
const values =
|
|
391
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
392
|
+
const values = _step4.value;
|
|
509
393
|
const filterByTk = values[_this8.model.primaryKeyAttribute];
|
|
510
|
-
|
|
511
394
|
if (!filterByTk) {
|
|
512
395
|
throw new Error('filterByTk invalid');
|
|
513
396
|
}
|
|
514
|
-
|
|
515
397
|
const instance = yield _this8.update({
|
|
516
398
|
values,
|
|
517
399
|
filterByTk,
|
|
@@ -520,29 +402,23 @@ class Repository {
|
|
|
520
402
|
instances.push(instance);
|
|
521
403
|
}
|
|
522
404
|
} catch (err) {
|
|
523
|
-
|
|
405
|
+
_iterator4.e(err);
|
|
524
406
|
} finally {
|
|
525
|
-
|
|
407
|
+
_iterator4.f();
|
|
526
408
|
}
|
|
527
|
-
|
|
528
409
|
return instances;
|
|
529
410
|
})();
|
|
530
411
|
}
|
|
531
|
-
|
|
532
412
|
destroy(options) {
|
|
533
413
|
var _this9 = this;
|
|
534
|
-
|
|
535
414
|
return _asyncToGenerator(function* () {
|
|
536
415
|
const transaction = yield _this9.getTransaction(options);
|
|
537
416
|
const modelFilterKey = _this9.collection.filterTargetKey;
|
|
538
417
|
options = options;
|
|
539
|
-
|
|
540
418
|
if (options['individualHooks'] === undefined) {
|
|
541
419
|
options['individualHooks'] = true;
|
|
542
420
|
}
|
|
543
|
-
|
|
544
421
|
const filterByTk = options.filterByTk && !_lodash().default.isArray(options.filterByTk) ? [options.filterByTk] : options.filterByTk;
|
|
545
|
-
|
|
546
422
|
if (_this9.collection.model.primaryKeyAttributes.length !== 1 && filterByTk && !_lodash().default.get(_this9.collection.options, 'filterTargetKey')) {
|
|
547
423
|
if (_this9.collection.model.primaryKeyAttributes.length > 1) {
|
|
548
424
|
throw new Error(`filterByTk is not supported for composite primary key`);
|
|
@@ -550,7 +426,6 @@ class Repository {
|
|
|
550
426
|
throw new Error(`filterByTk is not supported for collection that has no primary key`);
|
|
551
427
|
}
|
|
552
428
|
}
|
|
553
|
-
|
|
554
429
|
if (filterByTk && !options.filter) {
|
|
555
430
|
return yield _this9.model.destroy(_objectSpread(_objectSpread({}, options), {}, {
|
|
556
431
|
where: {
|
|
@@ -561,31 +436,25 @@ class Repository {
|
|
|
561
436
|
transaction
|
|
562
437
|
}));
|
|
563
438
|
}
|
|
564
|
-
|
|
565
439
|
if (options.filter) {
|
|
566
440
|
if (_this9.collection.model.primaryKeyAttributes.length !== 1 && !_lodash().default.get(_this9.collection.options, 'filterTargetKey')) {
|
|
567
441
|
const queryOptions = _objectSpread({}, _this9.buildQueryOptions(options));
|
|
568
|
-
|
|
569
442
|
return yield _this9.model.destroy(_objectSpread(_objectSpread({}, queryOptions), {}, {
|
|
570
443
|
transaction
|
|
571
444
|
}));
|
|
572
445
|
}
|
|
573
|
-
|
|
574
446
|
let pks = (yield _this9.find({
|
|
575
447
|
filter: options.filter,
|
|
576
448
|
transaction
|
|
577
449
|
})).map(instance => instance.get(modelFilterKey));
|
|
578
|
-
|
|
579
450
|
if (filterByTk) {
|
|
580
451
|
pks = _lodash().default.intersection(pks.map(i => `${i}`), filterByTk.map(i => `${i}`));
|
|
581
452
|
}
|
|
582
|
-
|
|
583
453
|
return yield _this9.destroy(_objectSpread(_objectSpread({}, _lodash().default.omit(options, 'filter')), {}, {
|
|
584
454
|
filterByTk: pks,
|
|
585
455
|
transaction
|
|
586
456
|
}));
|
|
587
457
|
}
|
|
588
|
-
|
|
589
458
|
if (options.truncate) {
|
|
590
459
|
return yield _this9.model.destroy(_objectSpread(_objectSpread({}, options), {}, {
|
|
591
460
|
truncate: true,
|
|
@@ -597,12 +466,9 @@ class Repository {
|
|
|
597
466
|
/**
|
|
598
467
|
* @param association target association
|
|
599
468
|
*/
|
|
600
|
-
|
|
601
|
-
|
|
602
469
|
relation(association) {
|
|
603
470
|
return new RelationRepositoryBuilder(this.collection, association);
|
|
604
471
|
}
|
|
605
|
-
|
|
606
472
|
buildQueryOptions(options) {
|
|
607
473
|
const parser = new _optionsParser.OptionsParser(options, {
|
|
608
474
|
collection: this.collection
|
|
@@ -613,7 +479,6 @@ class Repository {
|
|
|
613
479
|
where: {}
|
|
614
480
|
}, options), params);
|
|
615
481
|
}
|
|
616
|
-
|
|
617
482
|
parseFilter(filter, options) {
|
|
618
483
|
const parser = new _filterParser.default(filter, {
|
|
619
484
|
collection: this.collection,
|
|
@@ -623,35 +488,24 @@ class Repository {
|
|
|
623
488
|
});
|
|
624
489
|
return parser.toSequelizeParams();
|
|
625
490
|
}
|
|
626
|
-
|
|
627
491
|
getTransaction(options, autoGen = false) {
|
|
628
492
|
var _this10 = this;
|
|
629
|
-
|
|
630
493
|
return _asyncToGenerator(function* () {
|
|
631
494
|
if (_lodash().default.isPlainObject(options) && options.transaction) {
|
|
632
495
|
return options.transaction;
|
|
633
496
|
}
|
|
634
|
-
|
|
635
497
|
if (autoGen) {
|
|
636
498
|
return yield _this10.model.sequelize.transaction();
|
|
637
499
|
}
|
|
638
|
-
|
|
639
500
|
return null;
|
|
640
501
|
})();
|
|
641
502
|
}
|
|
642
|
-
|
|
643
503
|
}
|
|
644
|
-
|
|
645
504
|
exports.Repository = Repository;
|
|
646
|
-
|
|
647
505
|
__decorate([transaction()], Repository.prototype, "create", null);
|
|
648
|
-
|
|
649
506
|
__decorate([transaction()], Repository.prototype, "createMany", null);
|
|
650
|
-
|
|
651
507
|
__decorate([transaction(), (0, _mustHaveFilterDecorator.default)()], Repository.prototype, "update", null);
|
|
652
|
-
|
|
653
508
|
__decorate([transaction()], Repository.prototype, "updateMany", null);
|
|
654
|
-
|
|
655
509
|
__decorate([transaction((args, transaction) => {
|
|
656
510
|
return {
|
|
657
511
|
filterByTk: args[0],
|