tspace-mysql 1.1.2 → 1.1.4
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/dist/cli/models/model.js +1 -1
- package/dist/cli/tables/table.js +1 -1
- package/dist/lib/config/env.d.ts +6 -0
- package/dist/lib/config/env.js +8 -1
- package/dist/lib/connection/index.d.ts +29 -8
- package/dist/lib/connection/index.js +85 -28
- package/dist/lib/constants/index.js +9 -8
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/tspace/AbstractDatabase.d.ts +9 -4
- package/dist/lib/tspace/AbstractDatabase.js +5 -5
- package/dist/lib/tspace/AbstractModel.d.ts +30 -16
- package/dist/lib/tspace/Blueprint.d.ts +92 -21
- package/dist/lib/tspace/Blueprint.js +110 -39
- package/dist/lib/tspace/DB.d.ts +54 -4
- package/dist/lib/tspace/DB.js +168 -54
- package/dist/lib/tspace/Database.d.ts +104 -55
- package/dist/lib/tspace/Database.js +473 -281
- package/dist/lib/tspace/Interface.d.ts +8 -8
- package/dist/lib/tspace/Logger.js +2 -1
- package/dist/lib/tspace/Model.d.ts +168 -132
- package/dist/lib/tspace/Model.js +609 -425
- package/dist/lib/tspace/ProxyHandler.js +1 -1
- package/dist/lib/utils/index.d.ts +4 -4
- package/dist/lib/utils/index.js +27 -30
- package/package.json +1 -1
package/dist/lib/tspace/Model.js
CHANGED
|
@@ -102,15 +102,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
102
102
|
};
|
|
103
103
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
104
104
|
exports.Model = void 0;
|
|
105
|
-
var AbstractModel_1 = require("./AbstractModel");
|
|
106
105
|
var pluralize_1 = __importDefault(require("pluralize"));
|
|
106
|
+
var AbstractModel_1 = require("./AbstractModel");
|
|
107
107
|
var DB_1 = require("./DB");
|
|
108
108
|
var ProxyHandler_1 = require("./ProxyHandler");
|
|
109
109
|
var Model = /** @class */ (function (_super) {
|
|
110
110
|
__extends(Model, _super);
|
|
111
111
|
function Model() {
|
|
112
112
|
var _this = _super.call(this) || this;
|
|
113
|
+
/**
|
|
114
|
+
*
|
|
115
|
+
* Get initialize for model
|
|
116
|
+
*/
|
|
113
117
|
_this._initialModel();
|
|
118
|
+
/**
|
|
119
|
+
*
|
|
120
|
+
* Boot Setup for model
|
|
121
|
+
*/
|
|
122
|
+
_this.boot();
|
|
114
123
|
return new Proxy(_this, ProxyHandler_1.proxyHandler);
|
|
115
124
|
}
|
|
116
125
|
/**
|
|
@@ -133,13 +142,13 @@ var Model = /** @class */ (function (_super) {
|
|
|
133
142
|
};
|
|
134
143
|
/**
|
|
135
144
|
* Assign in model uuid when creating
|
|
136
|
-
* @param {string} uuid custom column
|
|
145
|
+
* @param {string?} column [column=uuid] custom column replace this
|
|
137
146
|
* @return {this} this
|
|
138
147
|
*/
|
|
139
|
-
Model.prototype.useUUID = function (
|
|
148
|
+
Model.prototype.useUUID = function (column) {
|
|
140
149
|
this.$db.set('UUID', true);
|
|
141
|
-
if (
|
|
142
|
-
this.$db.set('UUID_FORMAT',
|
|
150
|
+
if (column)
|
|
151
|
+
this.$db.set('UUID_FORMAT', column);
|
|
143
152
|
return this;
|
|
144
153
|
};
|
|
145
154
|
/**
|
|
@@ -161,7 +170,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
161
170
|
this.$constants('PATTERN').snake_case,
|
|
162
171
|
this.$constants('PATTERN').camelCase
|
|
163
172
|
];
|
|
164
|
-
this._assertError(!allowPattern.includes(pattern), "
|
|
173
|
+
this._assertError(!allowPattern.includes(pattern), "tspace-mysql support only pattern [".concat(allowPattern, "]"));
|
|
165
174
|
this.$db.set('PATTERN', pattern);
|
|
166
175
|
return this;
|
|
167
176
|
};
|
|
@@ -169,39 +178,37 @@ var Model = /** @class */ (function (_super) {
|
|
|
169
178
|
*
|
|
170
179
|
* Assign in model show data not be deleted
|
|
171
180
|
* Relations has reference this method
|
|
181
|
+
* @param {string?} column
|
|
172
182
|
* @return {this} this
|
|
173
183
|
*/
|
|
174
|
-
Model.prototype.useSoftDelete = function () {
|
|
184
|
+
Model.prototype.useSoftDelete = function (column) {
|
|
175
185
|
this.$db.set('SOFT_DELETE', true);
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
};
|
|
179
|
-
/**
|
|
180
|
-
* Assign in model show data not be deleted in relations
|
|
181
|
-
* repicate
|
|
182
|
-
* @return {this} this
|
|
183
|
-
*/
|
|
184
|
-
Model.prototype.useDisableSoftDeleteInRelations = function () {
|
|
185
|
-
this.$db.set('SOFT_DELETE_RELATIONS', false);
|
|
186
|
+
if (column)
|
|
187
|
+
this.$db.set('SOFT_DELETE_FORMAT', column);
|
|
186
188
|
return this;
|
|
187
189
|
};
|
|
188
190
|
/**
|
|
189
191
|
*
|
|
190
192
|
* Assign timestamp when insert || updated created_at and update_at in table
|
|
193
|
+
* @param {object} timestampFormat
|
|
194
|
+
* @property {string} timestampFormat.createdAt - change column of created at
|
|
195
|
+
* @property {string} timestampFormat.updatedAt - change column of updated at
|
|
191
196
|
* @return {this} this
|
|
192
197
|
*/
|
|
193
198
|
Model.prototype.useTimestamp = function (timestampFormat) {
|
|
194
199
|
this.$db.set('TIMESTAMP', true);
|
|
195
|
-
if (timestampFormat)
|
|
200
|
+
if (timestampFormat) {
|
|
196
201
|
this.$db.set('TIMESTAMP_FORMAT', {
|
|
197
202
|
CREATED_AT: timestampFormat.createdAt,
|
|
198
203
|
UPDATED_AT: timestampFormat.updatedAt
|
|
199
204
|
});
|
|
205
|
+
}
|
|
200
206
|
return this;
|
|
201
207
|
};
|
|
202
208
|
/**
|
|
203
209
|
*
|
|
204
210
|
* Assign table name in model
|
|
211
|
+
* @param {string} table table name in database
|
|
205
212
|
* @return {this} this
|
|
206
213
|
*/
|
|
207
214
|
Model.prototype.useTable = function (table) {
|
|
@@ -216,7 +223,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
216
223
|
* @return {this} this
|
|
217
224
|
*/
|
|
218
225
|
Model.prototype.useTableSingular = function () {
|
|
219
|
-
var
|
|
226
|
+
var _a;
|
|
227
|
+
var table = this._classToTableName((_a = this.constructor) === null || _a === void 0 ? void 0 : _a.name, { singular: true });
|
|
220
228
|
this.$db.set('TABLE_NAME', "`".concat(pluralize_1.default.singular(table), "`"));
|
|
221
229
|
this.$db.get('SELECT', "".concat(this.$constants('SELECT'), " *"));
|
|
222
230
|
this.$db.get('FROM', "".concat(this.$constants('FROM'), "'"));
|
|
@@ -228,14 +236,36 @@ var Model = /** @class */ (function (_super) {
|
|
|
228
236
|
* @return {this} this
|
|
229
237
|
*/
|
|
230
238
|
Model.prototype.useTablePlural = function () {
|
|
231
|
-
var
|
|
239
|
+
var _a;
|
|
240
|
+
var table = this._classToTableName((_a = this.constructor) === null || _a === void 0 ? void 0 : _a.name);
|
|
232
241
|
this.$db.set('TABLE_NAME', "`".concat(pluralize_1.default.plural(table), "`"));
|
|
233
242
|
this.$db.get('SELECT', "".concat(this.$constants('SELECT'), " *"));
|
|
234
243
|
this.$db.get('FROM', "".concat(this.$constants('FROM'), "'"));
|
|
235
244
|
return this;
|
|
236
245
|
};
|
|
246
|
+
/**
|
|
247
|
+
*
|
|
248
|
+
* boot for initialize of models
|
|
249
|
+
* @return {void} void
|
|
250
|
+
*/
|
|
251
|
+
Model.prototype.boot = function () { };
|
|
252
|
+
/**
|
|
253
|
+
*
|
|
254
|
+
* Clone instance of model
|
|
255
|
+
* @override Method
|
|
256
|
+
* @return {this} this
|
|
257
|
+
*/
|
|
258
|
+
Model.prototype.clone = function (instance) {
|
|
259
|
+
if (!(instance instanceof Model)) {
|
|
260
|
+
throw new Error('value is not a instanceof Model');
|
|
261
|
+
}
|
|
262
|
+
var copy = Object.fromEntries(instance.$db.get());
|
|
263
|
+
this.$db.clone(copy);
|
|
264
|
+
return this;
|
|
265
|
+
};
|
|
237
266
|
/**
|
|
238
267
|
* Assign ignore delete_at in model
|
|
268
|
+
* @param {boolean} condition
|
|
239
269
|
* @return {this} this
|
|
240
270
|
*/
|
|
241
271
|
Model.prototype.ignoreSoftDelete = function (condition) {
|
|
@@ -244,7 +274,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
244
274
|
return this;
|
|
245
275
|
};
|
|
246
276
|
/**
|
|
247
|
-
*
|
|
277
|
+
* Assign ignore delete_at in model
|
|
278
|
+
* @param {boolean} condition
|
|
248
279
|
* @return {this} this
|
|
249
280
|
*/
|
|
250
281
|
Model.prototype.disableSoftDelete = function (condition) {
|
|
@@ -253,8 +284,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
253
284
|
return this;
|
|
254
285
|
};
|
|
255
286
|
/**
|
|
256
|
-
*
|
|
257
|
-
* @param {
|
|
287
|
+
* Assign build in function to result of data
|
|
288
|
+
* @param {object} func
|
|
258
289
|
* @return {this} this
|
|
259
290
|
*/
|
|
260
291
|
Model.prototype.registry = function (func) {
|
|
@@ -263,7 +294,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
263
294
|
};
|
|
264
295
|
/**
|
|
265
296
|
*
|
|
266
|
-
*
|
|
297
|
+
* Use relations in registry of model return result of relation query
|
|
267
298
|
* @param {...string} nameRelations ...name registry in models using (hasOne , hasMany , belongsTo , belongsToMany)
|
|
268
299
|
* @return {this} this
|
|
269
300
|
*/
|
|
@@ -274,14 +305,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
274
305
|
nameRelations[_i] = arguments[_i];
|
|
275
306
|
}
|
|
276
307
|
var relations = nameRelations.map(function (name) {
|
|
277
|
-
var _a;
|
|
308
|
+
var _a, _b;
|
|
278
309
|
var relation = (_a = _this.$db.get('RELATION')) === null || _a === void 0 ? void 0 : _a.find(function (data) { return data.name === name; });
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (!relationHasExists) {
|
|
283
|
-
throw new Error("unknown relationship in [".concat(_this.$constants('RELATIONSHIP'), "] !"));
|
|
284
|
-
}
|
|
310
|
+
_this._assertError(relation == null, "relation ".concat(name, " not be register !"));
|
|
311
|
+
var relationHasExists = (_b = Object.values(_this.$constants('RELATIONSHIP'))) === null || _b === void 0 ? void 0 : _b.includes(relation.relation);
|
|
312
|
+
_this._assertError(!relationHasExists, "unknown relationship in [".concat(_this.$constants('RELATIONSHIP'), "] !"));
|
|
285
313
|
if (relation.query == null)
|
|
286
314
|
relation.query = new relation.model();
|
|
287
315
|
return relation;
|
|
@@ -299,9 +327,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
299
327
|
};
|
|
300
328
|
/**
|
|
301
329
|
*
|
|
302
|
-
*
|
|
330
|
+
* Use relations in registry of model return only exists result of relation query
|
|
303
331
|
* @param {...string} nameRelations if data exists return blank
|
|
304
|
-
* @return {this}
|
|
332
|
+
* @return {this} this
|
|
305
333
|
*/
|
|
306
334
|
Model.prototype.withExists = function () {
|
|
307
335
|
var nameRelations = [];
|
|
@@ -314,31 +342,94 @@ var Model = /** @class */ (function (_super) {
|
|
|
314
342
|
};
|
|
315
343
|
/**
|
|
316
344
|
*
|
|
317
|
-
*
|
|
345
|
+
* Use relation '${name}' registry of model return callback this query model
|
|
318
346
|
* @param {string} nameRelation name relation in registry in your model
|
|
319
347
|
* @param {function} callback query callback
|
|
320
348
|
* @return {this} this
|
|
321
349
|
*/
|
|
322
350
|
Model.prototype.withQuery = function (nameRelation, callback) {
|
|
351
|
+
var _a;
|
|
323
352
|
var relation = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
353
|
+
this._assertError(relation == null, "relation ".concat(nameRelation, " not be register !"));
|
|
354
|
+
var relationHasExists = (_a = Object.values(this.$constants('RELATIONSHIP'))) === null || _a === void 0 ? void 0 : _a.includes(relation.relation);
|
|
355
|
+
this._assertError(!relationHasExists, "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
356
|
+
relation.query = callback(new relation.model());
|
|
357
|
+
return this;
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
*
|
|
361
|
+
* Use relations in registry of model retrun result of relation query
|
|
362
|
+
* @param {...string} nameRelations ...name registry in models using (hasOne , hasMany , belongsTo , belongsToMany)
|
|
363
|
+
* @return {this} this
|
|
364
|
+
*/
|
|
365
|
+
Model.prototype.relations = function () {
|
|
366
|
+
var _this = this;
|
|
367
|
+
var nameRelations = [];
|
|
368
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
369
|
+
nameRelations[_i] = arguments[_i];
|
|
328
370
|
}
|
|
371
|
+
var relations = nameRelations.map(function (name) {
|
|
372
|
+
var _a, _b;
|
|
373
|
+
var relation = (_a = _this.$db.get('RELATION')) === null || _a === void 0 ? void 0 : _a.find(function (data) { return data.name === name; });
|
|
374
|
+
_this._assertError(relation == null, "relation ".concat(name, " not be register !"));
|
|
375
|
+
var relationHasExists = (_b = Object.values(_this.$constants('RELATIONSHIP'))) === null || _b === void 0 ? void 0 : _b.includes(relation.relation);
|
|
376
|
+
_this._assertError(!relationHasExists, "unknown relationship in [".concat(_this.$constants('RELATIONSHIP'), "] !"));
|
|
377
|
+
if (relation.query == null)
|
|
378
|
+
relation.query = new relation.model();
|
|
379
|
+
return relation;
|
|
380
|
+
});
|
|
381
|
+
relations.sort(function (cur, prev) { return cur.relation.length - prev.relation.length; });
|
|
382
|
+
var setRelations = this.$db.get('WITH').length
|
|
383
|
+
? __spreadArray(__spreadArray([], __read(relations.map(function (w) {
|
|
384
|
+
var exists = _this.$db.get('WITH').find(function (r) { return r.name === w.name; });
|
|
385
|
+
if (exists)
|
|
386
|
+
return null;
|
|
387
|
+
return w;
|
|
388
|
+
}).filter(function (d) { return d != null; })), false), __read(this.$db.get('WITH')), false) : relations;
|
|
389
|
+
this.$db.set('WITH', setRelations);
|
|
390
|
+
return this;
|
|
391
|
+
};
|
|
392
|
+
/**
|
|
393
|
+
*
|
|
394
|
+
* Use relations in registry of model return only exists result of relation query
|
|
395
|
+
* @param {...string} nameRelations if data exists return blank
|
|
396
|
+
* @return {this}
|
|
397
|
+
*/
|
|
398
|
+
Model.prototype.relationsExists = function () {
|
|
399
|
+
var nameRelations = [];
|
|
400
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
401
|
+
nameRelations[_i] = arguments[_i];
|
|
402
|
+
}
|
|
403
|
+
this.with.apply(this, __spreadArray([], __read(nameRelations), false));
|
|
404
|
+
this.$db.set('WITH_EXISTS', true);
|
|
405
|
+
return this;
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
*
|
|
409
|
+
* Use relation '${name}' registry of model return callback this query model
|
|
410
|
+
* @param {string} nameRelation name relation in registry in your model
|
|
411
|
+
* @param {function} callback query callback
|
|
412
|
+
* @return {this} this
|
|
413
|
+
*/
|
|
414
|
+
Model.prototype.relationQuery = function (nameRelation, callback) {
|
|
415
|
+
var _a;
|
|
416
|
+
var relation = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
417
|
+
this._assertError(relation == null, "relation ".concat(nameRelation, " not be register !"));
|
|
418
|
+
var relationHasExists = (_a = Object.values(this.$constants('RELATIONSHIP'))) === null || _a === void 0 ? void 0 : _a.includes(relation.relation);
|
|
419
|
+
this._assertError(!relationHasExists, "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
329
420
|
relation.query = callback(new relation.model());
|
|
330
421
|
return this;
|
|
331
422
|
};
|
|
332
423
|
/**
|
|
333
424
|
* Assign the relation in model Objects
|
|
334
|
-
* @param
|
|
335
|
-
* @
|
|
336
|
-
* @
|
|
337
|
-
* @
|
|
338
|
-
* @
|
|
339
|
-
* @
|
|
340
|
-
* @
|
|
341
|
-
* @return
|
|
425
|
+
* @param {object} relations registry relation in your model
|
|
426
|
+
* @property {string} relation.name
|
|
427
|
+
* @property {string} relation.as
|
|
428
|
+
* @property {class} relation.model
|
|
429
|
+
* @property {string} relation.localKey
|
|
430
|
+
* @property {string} relation.foreignKey
|
|
431
|
+
* @property {string} relation.freezeTable
|
|
432
|
+
* @return {this} this
|
|
342
433
|
*/
|
|
343
434
|
Model.prototype.hasOne = function (_a) {
|
|
344
435
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -357,14 +448,14 @@ var Model = /** @class */ (function (_super) {
|
|
|
357
448
|
};
|
|
358
449
|
/**
|
|
359
450
|
* Assign the relation in model Objects
|
|
360
|
-
* @param
|
|
361
|
-
* @
|
|
362
|
-
* @
|
|
363
|
-
* @
|
|
364
|
-
* @
|
|
365
|
-
* @
|
|
366
|
-
* @
|
|
367
|
-
* @return
|
|
451
|
+
* @param {object} relations registry relation in your model
|
|
452
|
+
* @property {string} relation.name
|
|
453
|
+
* @property {string} relation.as
|
|
454
|
+
* @property {class} relation.model
|
|
455
|
+
* @property {string} relation.localKey
|
|
456
|
+
* @property {string} relation.foreignKey
|
|
457
|
+
* @property {string} relation.freezeTable
|
|
458
|
+
* @return {this} this
|
|
368
459
|
*/
|
|
369
460
|
Model.prototype.hasMany = function (_a) {
|
|
370
461
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -383,14 +474,14 @@ var Model = /** @class */ (function (_super) {
|
|
|
383
474
|
};
|
|
384
475
|
/**
|
|
385
476
|
* Assign the relation in model Objects
|
|
386
|
-
* @param
|
|
387
|
-
* @
|
|
388
|
-
* @
|
|
389
|
-
* @
|
|
390
|
-
* @
|
|
391
|
-
* @
|
|
392
|
-
* @
|
|
393
|
-
* @return
|
|
477
|
+
* @param {object} relations registry relation in your model
|
|
478
|
+
* @property {string} relation.name
|
|
479
|
+
* @property {string} relation.as
|
|
480
|
+
* @property {class} relation.model
|
|
481
|
+
* @property {string} relation.localKey
|
|
482
|
+
* @property {string} relation.foreignKey
|
|
483
|
+
* @property {string} relation.freezeTable
|
|
484
|
+
* @return {this} this
|
|
394
485
|
*/
|
|
395
486
|
Model.prototype.belongsTo = function (_a) {
|
|
396
487
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -409,14 +500,14 @@ var Model = /** @class */ (function (_super) {
|
|
|
409
500
|
};
|
|
410
501
|
/**
|
|
411
502
|
* Assign the relation in model Objects
|
|
412
|
-
* @param
|
|
413
|
-
* @
|
|
414
|
-
* @
|
|
415
|
-
* @
|
|
416
|
-
* @
|
|
417
|
-
* @
|
|
418
|
-
* @
|
|
419
|
-
* @return
|
|
503
|
+
* @param {object} relations registry relation in your model
|
|
504
|
+
* @property {string} relation.name
|
|
505
|
+
* @property {string} relation.as
|
|
506
|
+
* @property {class} relation.model
|
|
507
|
+
* @property {string} relation.localKey
|
|
508
|
+
* @property {string} relation.foreignKey
|
|
509
|
+
* @property {string} relation.freezeTable
|
|
510
|
+
* @return {this} this
|
|
420
511
|
*/
|
|
421
512
|
Model.prototype.belongsToMany = function (_a) {
|
|
422
513
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -434,16 +525,17 @@ var Model = /** @class */ (function (_super) {
|
|
|
434
525
|
return this;
|
|
435
526
|
};
|
|
436
527
|
/**
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
528
|
+
* Assign the relation in model Objects
|
|
529
|
+
* @param {object} relations registry relation in your model
|
|
530
|
+
* @property {string} relation.name
|
|
531
|
+
* @property {string} relation.as
|
|
532
|
+
* @property {class} relation.model
|
|
533
|
+
* @property {string} relation.localKey
|
|
534
|
+
* @property {string} relation.foreignKey
|
|
535
|
+
* @property {string} relation.freezeTable
|
|
536
|
+
* @param {function} callback callback query relation of model
|
|
537
|
+
* @return {this} this
|
|
538
|
+
*/
|
|
447
539
|
Model.prototype.hasOneQuery = function (_a, callback) {
|
|
448
540
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
449
541
|
var nameRelation = name == null
|
|
@@ -459,24 +551,21 @@ var Model = /** @class */ (function (_super) {
|
|
|
459
551
|
freezeTable: freezeTable,
|
|
460
552
|
query: null
|
|
461
553
|
};
|
|
462
|
-
|
|
463
|
-
this.with(nameRelation);
|
|
464
|
-
var r = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
465
|
-
this._assertError(r == null, "relation ".concat(nameRelation, " not be register !"));
|
|
466
|
-
this._assertError(!Object.values(this.$constants('RELATIONSHIP')).includes(r.relation), "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
554
|
+
var r = this._handleRelationsQuery(nameRelation, relation);
|
|
467
555
|
r.query = callback(new r.model());
|
|
468
556
|
return this;
|
|
469
557
|
};
|
|
470
558
|
/**
|
|
471
559
|
* Assign the relation in model Objects
|
|
472
|
-
* @param
|
|
473
|
-
* @
|
|
474
|
-
* @
|
|
475
|
-
* @
|
|
476
|
-
* @
|
|
477
|
-
* @
|
|
478
|
-
* @
|
|
479
|
-
* @
|
|
560
|
+
* @param {object} relations registry relation in your model
|
|
561
|
+
* @property {string} relation.name
|
|
562
|
+
* @property {string} relation.as
|
|
563
|
+
* @property {class} relation.model
|
|
564
|
+
* @property {string} relation.localKey
|
|
565
|
+
* @property {string} relation.foreignKey
|
|
566
|
+
* @property {string} relation.freezeTable
|
|
567
|
+
* @param {function} callback callback query relation of model
|
|
568
|
+
* @return {this} this
|
|
480
569
|
*/
|
|
481
570
|
Model.prototype.hasManyQuery = function (_a, callback) {
|
|
482
571
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -493,24 +582,21 @@ var Model = /** @class */ (function (_super) {
|
|
|
493
582
|
freezeTable: freezeTable,
|
|
494
583
|
query: null
|
|
495
584
|
};
|
|
496
|
-
|
|
497
|
-
this.with(nameRelation);
|
|
498
|
-
var r = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
499
|
-
this._assertError(r == null, "relation ".concat(nameRelation, " not be register !"));
|
|
500
|
-
this._assertError(!Object.values(this.$constants('RELATIONSHIP')).includes(r.relation), "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
585
|
+
var r = this._handleRelationsQuery(nameRelation, relation);
|
|
501
586
|
r.query = callback(new r.model());
|
|
502
587
|
return this;
|
|
503
588
|
};
|
|
504
589
|
/**
|
|
505
590
|
* Assign the relation in model Objects
|
|
506
|
-
* @param
|
|
507
|
-
* @
|
|
508
|
-
* @
|
|
509
|
-
* @
|
|
510
|
-
* @
|
|
511
|
-
* @
|
|
512
|
-
* @
|
|
513
|
-
* @
|
|
591
|
+
* @param {object} relations registry relation in your model
|
|
592
|
+
* @property {string} relation.name
|
|
593
|
+
* @property {string} relation.as
|
|
594
|
+
* @property {class} relation.model
|
|
595
|
+
* @property {string} relation.localKey
|
|
596
|
+
* @property {string} relation.foreignKey
|
|
597
|
+
* @property {string} relation.freezeTable
|
|
598
|
+
* @param {function} callback callback query relation of model
|
|
599
|
+
* @return {this} this
|
|
514
600
|
*/
|
|
515
601
|
Model.prototype.belongsToQuery = function (_a, callback) {
|
|
516
602
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -527,24 +613,21 @@ var Model = /** @class */ (function (_super) {
|
|
|
527
613
|
freezeTable: freezeTable,
|
|
528
614
|
query: null
|
|
529
615
|
};
|
|
530
|
-
|
|
531
|
-
this.with(nameRelation);
|
|
532
|
-
var r = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
533
|
-
this._assertError(r == null, "relation ".concat(nameRelation, " not be register !"));
|
|
534
|
-
this._assertError(!Object.values(this.$constants('RELATIONSHIP')).includes(r.relation), "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
616
|
+
var r = this._handleRelationsQuery(nameRelation, relation);
|
|
535
617
|
r.query = callback(new r.model());
|
|
536
618
|
return this;
|
|
537
619
|
};
|
|
538
620
|
/**
|
|
539
621
|
* Assign the relation in model Objects
|
|
540
|
-
* @param
|
|
541
|
-
* @
|
|
542
|
-
* @
|
|
543
|
-
* @
|
|
544
|
-
* @
|
|
545
|
-
* @
|
|
546
|
-
* @
|
|
547
|
-
* @
|
|
622
|
+
* @param {object} relations registry relation in your model
|
|
623
|
+
* @property {string} relation.name
|
|
624
|
+
* @property {string} relation.as
|
|
625
|
+
* @property {class} relation.model
|
|
626
|
+
* @property {string} relation.localKey
|
|
627
|
+
* @property {string} relation.foreignKey
|
|
628
|
+
* @property {string} relation.freezeTable
|
|
629
|
+
* @param {function} callback callback query relation of model
|
|
630
|
+
* @return {this} this
|
|
548
631
|
*/
|
|
549
632
|
Model.prototype.belongsToManyQuery = function (_a, callback) {
|
|
550
633
|
var name = _a.name, as = _a.as, model = _a.model, localKey = _a.localKey, foreignKey = _a.foreignKey, freezeTable = _a.freezeTable;
|
|
@@ -561,11 +644,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
561
644
|
freezeTable: freezeTable,
|
|
562
645
|
query: null
|
|
563
646
|
};
|
|
564
|
-
|
|
565
|
-
this.with(nameRelation);
|
|
566
|
-
var r = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
567
|
-
this._assertError(r == null, "relation ".concat(nameRelation, " not be register !"));
|
|
568
|
-
this._assertError(!Object.values(this.$constants('RELATIONSHIP')).includes(r.relation), "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
647
|
+
var r = this._handleRelationsQuery(nameRelation, relation);
|
|
569
648
|
r.query = callback(new r.model());
|
|
570
649
|
return this;
|
|
571
650
|
};
|
|
@@ -579,9 +658,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
579
658
|
return __generator(this, function (_a) {
|
|
580
659
|
switch (_a.label) {
|
|
581
660
|
case 0:
|
|
582
|
-
this.whereNotNull(this._valuePattern('
|
|
583
|
-
sql = this.
|
|
584
|
-
return [4 /*yield*/, this._execute(sql, 'GET')];
|
|
661
|
+
this.whereNotNull(this._valuePattern(this.$db.get('SOFT_DELETE_FORMAT')));
|
|
662
|
+
sql = this._buildQueryModel();
|
|
663
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'GET' })];
|
|
585
664
|
case 1: return [2 /*return*/, _a.sent()];
|
|
586
665
|
}
|
|
587
666
|
});
|
|
@@ -598,9 +677,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
598
677
|
switch (_a.label) {
|
|
599
678
|
case 0:
|
|
600
679
|
this.$db.set('SOFT_DELETE', false);
|
|
601
|
-
this.whereNotNull(this._valuePattern('
|
|
602
|
-
sql = this.
|
|
603
|
-
return [4 /*yield*/, this._execute(sql, 'GET')];
|
|
680
|
+
this.whereNotNull(this._valuePattern(this.$db.get('SOFT_DELETE_FORMAT')));
|
|
681
|
+
sql = this._buildQueryModel();
|
|
682
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'GET' })];
|
|
604
683
|
case 1: return [2 /*return*/, _a.sent()];
|
|
605
684
|
}
|
|
606
685
|
});
|
|
@@ -616,8 +695,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
616
695
|
return __generator(this, function (_a) {
|
|
617
696
|
switch (_a.label) {
|
|
618
697
|
case 0:
|
|
619
|
-
updatedAt = this._valuePattern('
|
|
620
|
-
deletedAt = this._valuePattern('
|
|
698
|
+
updatedAt = this._valuePattern(this.$db.get('TIMESTAMP_FORMAT').UPDATED_AT);
|
|
699
|
+
deletedAt = this._valuePattern(this.$db.get('SOFT_DELETE_FORMAT'));
|
|
621
700
|
query = this.$db.get('TIMESTAMP')
|
|
622
701
|
? "".concat(deletedAt, " = NULL , ").concat(updatedAt, " = '").concat(this.$utils.timestamp(), "'")
|
|
623
702
|
: "".concat(deletedAt, " = NULL");
|
|
@@ -639,7 +718,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
639
718
|
* @return {string}
|
|
640
719
|
*/
|
|
641
720
|
Model.prototype.toString = function () {
|
|
642
|
-
return this.
|
|
721
|
+
return this._buildQueryModel();
|
|
643
722
|
};
|
|
644
723
|
/**
|
|
645
724
|
*
|
|
@@ -647,7 +726,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
647
726
|
* @return {string}
|
|
648
727
|
*/
|
|
649
728
|
Model.prototype.toSQL = function () {
|
|
650
|
-
return this.
|
|
729
|
+
return this._buildQueryModel();
|
|
651
730
|
};
|
|
652
731
|
/**
|
|
653
732
|
*
|
|
@@ -660,7 +739,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
660
739
|
return __generator(this, function (_a) {
|
|
661
740
|
switch (_a.label) {
|
|
662
741
|
case 0:
|
|
663
|
-
sql = this.
|
|
742
|
+
sql = this._buildQueryModel();
|
|
664
743
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
665
744
|
case 1:
|
|
666
745
|
result = _a.sent();
|
|
@@ -685,7 +764,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
685
764
|
switch (_a.label) {
|
|
686
765
|
case 0:
|
|
687
766
|
this.$db.set('SELECT', "".concat(this.$constants('SELECT'), " ").concat(column));
|
|
688
|
-
sql = this.
|
|
767
|
+
sql = this._buildQueryModel();
|
|
689
768
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
690
769
|
case 1:
|
|
691
770
|
result = _a.sent();
|
|
@@ -714,11 +793,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
714
793
|
"".concat(this.$constants('AVG'), "(").concat(column, ")"),
|
|
715
794
|
"".concat(this.$constants('AS'), " avg")
|
|
716
795
|
].join(' '));
|
|
717
|
-
sql = this.
|
|
796
|
+
sql = this._buildQueryModel();
|
|
718
797
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
719
798
|
case 1:
|
|
720
799
|
result = _b.sent();
|
|
721
|
-
return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.avg) || 0];
|
|
800
|
+
return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.avg) || 0];
|
|
722
801
|
}
|
|
723
802
|
});
|
|
724
803
|
});
|
|
@@ -726,7 +805,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
726
805
|
/**
|
|
727
806
|
*
|
|
728
807
|
* @override Method
|
|
729
|
-
* @param {string
|
|
808
|
+
* @param {string} column [column=id]
|
|
730
809
|
* @return {promise<number>}
|
|
731
810
|
*/
|
|
732
811
|
Model.prototype.sum = function (column) {
|
|
@@ -742,11 +821,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
742
821
|
"".concat(this.$constants('SUM'), "(").concat(column, ")"),
|
|
743
822
|
"".concat(this.$constants('AS'), " sum")
|
|
744
823
|
].join(' '));
|
|
745
|
-
sql = this.
|
|
824
|
+
sql = this._buildQueryModel();
|
|
746
825
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
747
826
|
case 1:
|
|
748
827
|
result = _b.sent();
|
|
749
|
-
return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.sum) || 0];
|
|
828
|
+
return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.sum) || 0];
|
|
750
829
|
}
|
|
751
830
|
});
|
|
752
831
|
});
|
|
@@ -770,11 +849,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
770
849
|
"".concat(this.$constants('MAX'), "(").concat(column, ")"),
|
|
771
850
|
"".concat(this.$constants('AS'), " max")
|
|
772
851
|
].join(' '));
|
|
773
|
-
sql = this.
|
|
852
|
+
sql = this._buildQueryModel();
|
|
774
853
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
775
854
|
case 1:
|
|
776
855
|
result = _b.sent();
|
|
777
|
-
return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.max) || 0];
|
|
856
|
+
return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.max) || 0];
|
|
778
857
|
}
|
|
779
858
|
});
|
|
780
859
|
});
|
|
@@ -798,11 +877,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
798
877
|
"".concat(this.$constants('MIN'), "(").concat(column, ")"),
|
|
799
878
|
"".concat(this.$constants('AS'), " min")
|
|
800
879
|
].join(' '));
|
|
801
|
-
sql = this.
|
|
880
|
+
sql = this._buildQueryModel();
|
|
802
881
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
803
882
|
case 1:
|
|
804
883
|
result = _b.sent();
|
|
805
|
-
return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.min) || 0];
|
|
884
|
+
return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.min) || 0];
|
|
806
885
|
}
|
|
807
886
|
});
|
|
808
887
|
});
|
|
@@ -821,12 +900,16 @@ var Model = /** @class */ (function (_super) {
|
|
|
821
900
|
return __generator(this, function (_b) {
|
|
822
901
|
switch (_b.label) {
|
|
823
902
|
case 0:
|
|
824
|
-
this.$db.set('SELECT',
|
|
825
|
-
|
|
903
|
+
this.$db.set('SELECT', [
|
|
904
|
+
"".concat(this.$constants('SELECT')),
|
|
905
|
+
"".concat(this.$constants('COUNT'), "(").concat(column, ")"),
|
|
906
|
+
"".concat(this.$constants('AS'), " total")
|
|
907
|
+
].join(' '));
|
|
908
|
+
sql = this._buildQueryModel();
|
|
826
909
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
827
910
|
case 1:
|
|
828
911
|
result = _b.sent();
|
|
829
|
-
return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.total) || 0];
|
|
912
|
+
return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.total) || 0];
|
|
830
913
|
}
|
|
831
914
|
});
|
|
832
915
|
});
|
|
@@ -844,9 +927,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
844
927
|
switch (_c.label) {
|
|
845
928
|
case 0:
|
|
846
929
|
if (!this.$db.get('WHERE'))
|
|
847
|
-
throw new Error("
|
|
930
|
+
throw new Error("can't delete without where condition");
|
|
848
931
|
if (!this.$db.get('SOFT_DELETE')) return [3 /*break*/, 2];
|
|
849
|
-
deletedAt = this._valuePattern('
|
|
932
|
+
deletedAt = this._valuePattern(this.$db.get('SOFT_DELETE_FORMAT'));
|
|
850
933
|
query = "".concat(deletedAt, " = '").concat(this.$utils.timestamp(), "'");
|
|
851
934
|
sql = [
|
|
852
935
|
"".concat(this.$constants('UPDATE')),
|
|
@@ -855,7 +938,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
855
938
|
"".concat(query)
|
|
856
939
|
].join(' ');
|
|
857
940
|
if (this.$db.get('TIMESTAMP')) {
|
|
858
|
-
updatedAt = this._valuePattern('
|
|
941
|
+
updatedAt = this._valuePattern(this.$db.get('TIMESTAMP_FORMAT').UPDATED_AT);
|
|
859
942
|
sql = "".concat(sql, " , ").concat(updatedAt, " = '").concat(this.$utils.timestamp(), "'");
|
|
860
943
|
}
|
|
861
944
|
this.$db.set('UPDATE', "".concat(sql, " ").concat(this.$db.get('WHERE')));
|
|
@@ -881,7 +964,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
881
964
|
/**
|
|
882
965
|
*
|
|
883
966
|
* @override Method
|
|
884
|
-
* @return {promise<
|
|
967
|
+
* @return {promise<any>}
|
|
885
968
|
*/
|
|
886
969
|
Model.prototype.first = function () {
|
|
887
970
|
var _a;
|
|
@@ -896,14 +979,20 @@ var Model = /** @class */ (function (_super) {
|
|
|
896
979
|
_b.sent();
|
|
897
980
|
_b.label = 2;
|
|
898
981
|
case 2:
|
|
899
|
-
sql = this.
|
|
982
|
+
sql = this._buildQueryModel();
|
|
900
983
|
if (!!sql.includes(this.$constants('LIMIT'))) return [3 /*break*/, 4];
|
|
901
984
|
sql = "".concat(sql, " ").concat(this.$constants('LIMIT'), " 1");
|
|
902
|
-
|
|
985
|
+
if (this.$db.get('WITH_EXISTS')) {
|
|
986
|
+
sql = this._queryRelationsExists();
|
|
987
|
+
}
|
|
988
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'FIRST' })];
|
|
903
989
|
case 3: return [2 /*return*/, _b.sent()];
|
|
904
990
|
case 4:
|
|
905
991
|
sql = sql.replace(this.$db.get('LIMIT'), "".concat(this.$constants('LIMIT'), " 1"));
|
|
906
|
-
|
|
992
|
+
if (this.$db.get('WITH_EXISTS')) {
|
|
993
|
+
sql = this._queryRelationsExists();
|
|
994
|
+
}
|
|
995
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'FIRST' })];
|
|
907
996
|
case 5: return [2 /*return*/, _b.sent()];
|
|
908
997
|
}
|
|
909
998
|
});
|
|
@@ -912,7 +1001,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
912
1001
|
/**
|
|
913
1002
|
*
|
|
914
1003
|
* @override Method
|
|
915
|
-
* @return {promise<
|
|
1004
|
+
* @return {promise<any>}
|
|
916
1005
|
*/
|
|
917
1006
|
Model.prototype.findOne = function () {
|
|
918
1007
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -924,6 +1013,52 @@ var Model = /** @class */ (function (_super) {
|
|
|
924
1013
|
});
|
|
925
1014
|
});
|
|
926
1015
|
};
|
|
1016
|
+
/**
|
|
1017
|
+
*
|
|
1018
|
+
* @override Method
|
|
1019
|
+
* @return {promise<object | Error>}
|
|
1020
|
+
*/
|
|
1021
|
+
Model.prototype.firstOrError = function (message, options) {
|
|
1022
|
+
var _a;
|
|
1023
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1024
|
+
var sql;
|
|
1025
|
+
return __generator(this, function (_b) {
|
|
1026
|
+
switch (_b.label) {
|
|
1027
|
+
case 0:
|
|
1028
|
+
if (!((_a = this.$db.get('EXCEPT')) === null || _a === void 0 ? void 0 : _a.length)) return [3 /*break*/, 2];
|
|
1029
|
+
return [4 /*yield*/, this._exceptColumns()];
|
|
1030
|
+
case 1:
|
|
1031
|
+
_b.sent();
|
|
1032
|
+
_b.label = 2;
|
|
1033
|
+
case 2:
|
|
1034
|
+
sql = this._buildQueryModel();
|
|
1035
|
+
if (!!sql.includes(this.$constants('LIMIT'))) return [3 /*break*/, 4];
|
|
1036
|
+
sql = "".concat(sql, " ").concat(this.$constants('LIMIT'), " 1");
|
|
1037
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'FIRST_OR_ERROR', message: message, options: options })];
|
|
1038
|
+
case 3: return [2 /*return*/, _b.sent()];
|
|
1039
|
+
case 4:
|
|
1040
|
+
sql = sql.replace(this.$db.get('LIMIT'), "".concat(this.$constants('LIMIT'), " 1"));
|
|
1041
|
+
if (this.$db.get('WITH_EXISTS')) {
|
|
1042
|
+
sql = this._queryRelationsExists();
|
|
1043
|
+
}
|
|
1044
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'FIRST_OR_ERROR', message: message, options: options })];
|
|
1045
|
+
case 5: return [2 /*return*/, _b.sent()];
|
|
1046
|
+
}
|
|
1047
|
+
});
|
|
1048
|
+
});
|
|
1049
|
+
};
|
|
1050
|
+
/**
|
|
1051
|
+
*
|
|
1052
|
+
* @override Method
|
|
1053
|
+
* @return {promise<any>}
|
|
1054
|
+
*/
|
|
1055
|
+
Model.prototype.findOneOrError = function (message, options) {
|
|
1056
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1057
|
+
return __generator(this, function (_a) {
|
|
1058
|
+
return [2 /*return*/, this.firstOrError(message, options)];
|
|
1059
|
+
});
|
|
1060
|
+
});
|
|
1061
|
+
};
|
|
927
1062
|
/**
|
|
928
1063
|
*
|
|
929
1064
|
* @override Method
|
|
@@ -966,12 +1101,12 @@ var Model = /** @class */ (function (_super) {
|
|
|
966
1101
|
"".concat(this.$constants('FROM')),
|
|
967
1102
|
"".concat(this.$db.get('TABLE_NAME')),
|
|
968
1103
|
"".concat(this.$constants('WHERE')),
|
|
969
|
-
"".concat(this.$
|
|
1104
|
+
"".concat(this.$db.get('PRIMARY_KEY'), " = ").concat(id)
|
|
970
1105
|
].join(' ');
|
|
971
1106
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
972
1107
|
case 1:
|
|
973
1108
|
result = _a.sent();
|
|
974
|
-
return [2 /*return*/, result.shift() || null];
|
|
1109
|
+
return [2 /*return*/, (result === null || result === void 0 ? void 0 : result.shift()) || null];
|
|
975
1110
|
}
|
|
976
1111
|
});
|
|
977
1112
|
});
|
|
@@ -994,8 +1129,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
994
1129
|
_b.sent();
|
|
995
1130
|
_b.label = 2;
|
|
996
1131
|
case 2:
|
|
997
|
-
sql = this.
|
|
998
|
-
|
|
1132
|
+
sql = this._buildQueryModel();
|
|
1133
|
+
if (this.$db.get('WITH_EXISTS')) {
|
|
1134
|
+
sql = this._queryRelationsExists();
|
|
1135
|
+
}
|
|
1136
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'GET' })];
|
|
999
1137
|
case 3: return [2 /*return*/, _b.sent()];
|
|
1000
1138
|
}
|
|
1001
1139
|
});
|
|
@@ -1019,8 +1157,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
1019
1157
|
_b.sent();
|
|
1020
1158
|
_b.label = 2;
|
|
1021
1159
|
case 2:
|
|
1022
|
-
sql = this.
|
|
1023
|
-
return [4 /*yield*/, this._execute(sql, 'GET')];
|
|
1160
|
+
sql = this._buildQueryModel();
|
|
1161
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'GET' })];
|
|
1024
1162
|
case 3: return [2 /*return*/, _b.sent()];
|
|
1025
1163
|
}
|
|
1026
1164
|
});
|
|
@@ -1029,9 +1167,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
1029
1167
|
/**
|
|
1030
1168
|
*
|
|
1031
1169
|
* @override Method
|
|
1032
|
-
* @param {?object} paginationOptions
|
|
1033
|
-
* @
|
|
1034
|
-
* @
|
|
1170
|
+
* @param {?object} paginationOptions by default page = 1 , limit = 15
|
|
1171
|
+
* @property {number} paginationOptions.limit
|
|
1172
|
+
* @property {number} paginationOptions.page
|
|
1035
1173
|
* @return {promise<Pagination>}
|
|
1036
1174
|
*/
|
|
1037
1175
|
Model.prototype.pagination = function (paginationOptions) {
|
|
@@ -1057,7 +1195,10 @@ var Model = /** @class */ (function (_super) {
|
|
|
1057
1195
|
offset = (page - 1) * limit;
|
|
1058
1196
|
this.$db.set('PER_PAGE', limit);
|
|
1059
1197
|
this.$db.set('PAGE', page);
|
|
1060
|
-
sql = this.
|
|
1198
|
+
sql = this._buildQueryModel();
|
|
1199
|
+
if (this.$db.get('WITH_EXISTS')) {
|
|
1200
|
+
sql = this._queryRelationsExists();
|
|
1201
|
+
}
|
|
1061
1202
|
if (!!sql.includes(this.$constants('LIMIT'))) return [3 /*break*/, 4];
|
|
1062
1203
|
sql = [
|
|
1063
1204
|
"".concat(sql),
|
|
@@ -1066,7 +1207,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1066
1207
|
"".concat(this.$constants('OFFSET')),
|
|
1067
1208
|
"".concat(offset)
|
|
1068
1209
|
].join(' ');
|
|
1069
|
-
return [4 /*yield*/, this._execute(sql, 'PAGINATION')];
|
|
1210
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'PAGINATION' })];
|
|
1070
1211
|
case 3: return [2 /*return*/, _c.sent()];
|
|
1071
1212
|
case 4:
|
|
1072
1213
|
sql = sql.replace(this.$db.get('LIMIT'), [
|
|
@@ -1075,20 +1216,20 @@ var Model = /** @class */ (function (_super) {
|
|
|
1075
1216
|
"".concat(this.$constants('OFFSET')),
|
|
1076
1217
|
"".concat(offset)
|
|
1077
1218
|
].join(' '));
|
|
1078
|
-
return [4 /*yield*/, this._execute(sql, 'PAGINATION')];
|
|
1219
|
+
return [4 /*yield*/, this._execute({ sql: sql, type: 'PAGINATION' })];
|
|
1079
1220
|
case 5: return [2 /*return*/, _c.sent()];
|
|
1080
1221
|
}
|
|
1081
1222
|
});
|
|
1082
1223
|
});
|
|
1083
1224
|
};
|
|
1084
1225
|
/**
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1226
|
+
*
|
|
1227
|
+
* @override Method
|
|
1228
|
+
* @param {?object} paginationOptions by default page = 1 , limit = 15
|
|
1229
|
+
* @property {number} paginationOptions.limit
|
|
1230
|
+
* @property {number} paginationOptions.page
|
|
1231
|
+
* @return {promise<Pagination>}
|
|
1232
|
+
*/
|
|
1092
1233
|
Model.prototype.paginate = function (paginationOptions) {
|
|
1093
1234
|
return __awaiter(this, void 0, void 0, function () {
|
|
1094
1235
|
var limit, page;
|
|
@@ -1132,7 +1273,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1132
1273
|
"".concat(this.$constants('GROUP_CONCAT'), "(id)"),
|
|
1133
1274
|
"".concat(this.$constants('AS'), " data")
|
|
1134
1275
|
].join(' '));
|
|
1135
|
-
sql = this.
|
|
1276
|
+
sql = this._buildQueryModel();
|
|
1136
1277
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
1137
1278
|
case 3:
|
|
1138
1279
|
results = _b.sent();
|
|
@@ -1274,7 +1415,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1274
1415
|
};
|
|
1275
1416
|
/**
|
|
1276
1417
|
*
|
|
1277
|
-
* insert
|
|
1418
|
+
* insert multiple data into the database
|
|
1278
1419
|
* @override Method
|
|
1279
1420
|
* @param {array<object>} data create multiple data
|
|
1280
1421
|
* @return {this} this this
|
|
@@ -1309,31 +1450,15 @@ var Model = /** @class */ (function (_super) {
|
|
|
1309
1450
|
/**
|
|
1310
1451
|
*
|
|
1311
1452
|
* @override Method
|
|
1312
|
-
* @
|
|
1313
|
-
* Ex. +---------------------------------------------------+
|
|
1314
|
-
* const transaction = await new DB().beginTransaction()
|
|
1315
|
-
*
|
|
1316
|
-
* try {
|
|
1317
|
-
* const useSave = await create ...something then .save(transaction)
|
|
1318
|
-
* const useSave2 = await create ...something then .save(transaction)
|
|
1319
|
-
* throw new Error('try to errors')
|
|
1320
|
-
* } catch (e) {
|
|
1321
|
-
* const rollback = await transaction.rollback()
|
|
1322
|
-
* // rollback => ture
|
|
1323
|
-
* // !done transaction has been rolled back [useSave , useSave2]
|
|
1324
|
-
* }
|
|
1325
|
-
*
|
|
1326
|
-
* @return {Promise<array | object | null>}
|
|
1453
|
+
* @return {Promise<any>}
|
|
1327
1454
|
*/
|
|
1328
|
-
Model.prototype.save = function (
|
|
1455
|
+
Model.prototype.save = function () {
|
|
1329
1456
|
var _a;
|
|
1330
1457
|
return __awaiter(this, void 0, void 0, function () {
|
|
1331
1458
|
var attributes, query_1, query, _b;
|
|
1332
1459
|
return __generator(this, function (_c) {
|
|
1333
1460
|
switch (_c.label) {
|
|
1334
1461
|
case 0:
|
|
1335
|
-
if (transaction != null)
|
|
1336
|
-
this.$db.set('TRANSACTION', transaction);
|
|
1337
1462
|
attributes = this.$attributes;
|
|
1338
1463
|
if ((_a = Object.keys(attributes)) === null || _a === void 0 ? void 0 : _a.length) {
|
|
1339
1464
|
while (true) {
|
|
@@ -1385,7 +1510,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1385
1510
|
*
|
|
1386
1511
|
* fake data
|
|
1387
1512
|
* @param {number} rows number of rows
|
|
1388
|
-
* @return {promise<any}
|
|
1513
|
+
* @return {promise<any>}
|
|
1389
1514
|
*/
|
|
1390
1515
|
Model.prototype.faker = function (rows) {
|
|
1391
1516
|
if (rows === void 0) { rows = 1; }
|
|
@@ -1449,29 +1574,6 @@ var Model = /** @class */ (function (_super) {
|
|
|
1449
1574
|
});
|
|
1450
1575
|
});
|
|
1451
1576
|
};
|
|
1452
|
-
/**
|
|
1453
|
-
*
|
|
1454
|
-
* @override Method
|
|
1455
|
-
* @param {number} id
|
|
1456
|
-
* @return {this}
|
|
1457
|
-
*/
|
|
1458
|
-
Model.prototype.whereUser = function (id) {
|
|
1459
|
-
var column = this._valuePattern('userId');
|
|
1460
|
-
id = this.$utils.escape(id);
|
|
1461
|
-
if (!this.$db.get('WHERE').includes(this.$constants('WHERE'))) {
|
|
1462
|
-
this.$db.set('WHERE', [
|
|
1463
|
-
"".concat(this.$constants('WHERE')),
|
|
1464
|
-
"".concat(column, " = '").concat(id, "'")
|
|
1465
|
-
].join(' '));
|
|
1466
|
-
return this;
|
|
1467
|
-
}
|
|
1468
|
-
this.$db.set('WHERE', [
|
|
1469
|
-
"".concat(this.$db.get('WHERE')),
|
|
1470
|
-
"".concat(this.$constants('AND')),
|
|
1471
|
-
"".concat(column, " = '").concat(id, "'")
|
|
1472
|
-
].join(' '));
|
|
1473
|
-
return this;
|
|
1474
|
-
};
|
|
1475
1577
|
Model.prototype._queryStatementModel = function (sql) {
|
|
1476
1578
|
return __awaiter(this, void 0, void 0, function () {
|
|
1477
1579
|
var result;
|
|
@@ -1490,22 +1592,22 @@ var Model = /** @class */ (function (_super) {
|
|
|
1490
1592
|
});
|
|
1491
1593
|
};
|
|
1492
1594
|
Model.prototype._actionStatementModel = function (_a) {
|
|
1493
|
-
var
|
|
1595
|
+
var sql = _a.sql, _b = _a.returnId, returnId = _b === void 0 ? false : _b;
|
|
1494
1596
|
return __awaiter(this, void 0, void 0, function () {
|
|
1495
1597
|
var result_2, result;
|
|
1496
|
-
return __generator(this, function (
|
|
1497
|
-
switch (
|
|
1598
|
+
return __generator(this, function (_c) {
|
|
1599
|
+
switch (_c.label) {
|
|
1498
1600
|
case 0:
|
|
1499
1601
|
if (this.$db.get('DEBUG'))
|
|
1500
1602
|
this.$utils.consoleDebug(sql);
|
|
1501
1603
|
if (!returnId) return [3 /*break*/, 2];
|
|
1502
1604
|
return [4 /*yield*/, this.$pool.get(sql)];
|
|
1503
1605
|
case 1:
|
|
1504
|
-
result_2 =
|
|
1606
|
+
result_2 = _c.sent();
|
|
1505
1607
|
return [2 /*return*/, [result_2.affectedRows, result_2.insertId]];
|
|
1506
1608
|
case 2: return [4 /*yield*/, this.$pool.get(sql)];
|
|
1507
1609
|
case 3:
|
|
1508
|
-
result = (
|
|
1610
|
+
result = (_c.sent()).affectedRows;
|
|
1509
1611
|
return [2 /*return*/, result];
|
|
1510
1612
|
}
|
|
1511
1613
|
});
|
|
@@ -1550,8 +1652,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1550
1652
|
: (_b = relationModel.query) === null || _b === void 0 ? void 0 : _b.tableName;
|
|
1551
1653
|
var name = relationModel.name;
|
|
1552
1654
|
var as = relationModel.as;
|
|
1553
|
-
|
|
1554
|
-
throw new Error('Not found model');
|
|
1655
|
+
this._assertError(!model || model == null, 'not found model');
|
|
1555
1656
|
var localKey = relationModel.localKey
|
|
1556
1657
|
? relationModel.localKey
|
|
1557
1658
|
: this.$db.get('PRIMARY_KEY');
|
|
@@ -1575,11 +1676,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
1575
1676
|
}
|
|
1576
1677
|
return { name: name, as: as, relation: relation, table: table, localKey: localKey, foreignKey: foreignKey, model: model };
|
|
1577
1678
|
};
|
|
1578
|
-
Model.prototype.
|
|
1679
|
+
Model.prototype._buildQueryModel = function () {
|
|
1579
1680
|
var sql = [];
|
|
1580
1681
|
while (true) {
|
|
1581
1682
|
if (this.$db.get('SOFT_DELETE')) {
|
|
1582
|
-
var deletedAt = this._valuePattern('
|
|
1683
|
+
var deletedAt = this._valuePattern(this.$db.get('SOFT_DELETE_FORMAT'));
|
|
1583
1684
|
this.whereNull(deletedAt);
|
|
1584
1685
|
}
|
|
1585
1686
|
if (this.$db.get('INSERT')) {
|
|
@@ -1591,7 +1692,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1591
1692
|
if (this.$db.get('UPDATE')) {
|
|
1592
1693
|
sql = [
|
|
1593
1694
|
this.$db.get('UPDATE'),
|
|
1594
|
-
this.$db.get('WHERE')
|
|
1695
|
+
this.$db.get('WHERE')
|
|
1595
1696
|
];
|
|
1596
1697
|
break;
|
|
1597
1698
|
}
|
|
@@ -1662,26 +1763,27 @@ var Model = /** @class */ (function (_super) {
|
|
|
1662
1763
|
});
|
|
1663
1764
|
return result;
|
|
1664
1765
|
};
|
|
1665
|
-
Model.prototype._execute = function (
|
|
1766
|
+
Model.prototype._execute = function (_a) {
|
|
1767
|
+
var sql = _a.sql, type = _a.type, message = _a.message, options = _a.options;
|
|
1666
1768
|
return __awaiter(this, void 0, void 0, function () {
|
|
1667
1769
|
var result, emptyData, relations, relations_1, relations_1_1, relation, relationIsBelongsToMany, dataFromRelation, e_2_1;
|
|
1668
|
-
var e_2,
|
|
1669
|
-
return __generator(this, function (
|
|
1670
|
-
switch (
|
|
1770
|
+
var e_2, _b;
|
|
1771
|
+
return __generator(this, function (_c) {
|
|
1772
|
+
switch (_c.label) {
|
|
1671
1773
|
case 0: return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
1672
1774
|
case 1:
|
|
1673
|
-
result =
|
|
1674
|
-
emptyData = this._returnEmpty(type);
|
|
1775
|
+
result = _c.sent();
|
|
1776
|
+
emptyData = this._returnEmpty(type, result, message, options);
|
|
1675
1777
|
if (!result.length)
|
|
1676
1778
|
return [2 /*return*/, emptyData];
|
|
1677
1779
|
relations = this.$db.get('WITH');
|
|
1678
1780
|
if (!relations.length)
|
|
1679
1781
|
return [2 /*return*/, this._returnResult(type, result) || emptyData];
|
|
1680
|
-
|
|
1782
|
+
_c.label = 2;
|
|
1681
1783
|
case 2:
|
|
1682
|
-
|
|
1784
|
+
_c.trys.push([2, 9, 10, 11]);
|
|
1683
1785
|
relations_1 = __values(relations), relations_1_1 = relations_1.next();
|
|
1684
|
-
|
|
1786
|
+
_c.label = 3;
|
|
1685
1787
|
case 3:
|
|
1686
1788
|
if (!!relations_1_1.done) return [3 /*break*/, 8];
|
|
1687
1789
|
relation = relations_1_1.value;
|
|
@@ -1689,24 +1791,24 @@ var Model = /** @class */ (function (_super) {
|
|
|
1689
1791
|
if (!relationIsBelongsToMany) return [3 /*break*/, 5];
|
|
1690
1792
|
return [4 /*yield*/, this._belongsToMany(result, relation)];
|
|
1691
1793
|
case 4:
|
|
1692
|
-
result =
|
|
1794
|
+
result = _c.sent();
|
|
1693
1795
|
return [3 /*break*/, 7];
|
|
1694
1796
|
case 5: return [4 /*yield*/, this._relation(result, relation)];
|
|
1695
1797
|
case 6:
|
|
1696
|
-
dataFromRelation =
|
|
1697
|
-
result = this.
|
|
1698
|
-
|
|
1798
|
+
dataFromRelation = _c.sent();
|
|
1799
|
+
result = this._relationMapData(result, dataFromRelation, relation);
|
|
1800
|
+
_c.label = 7;
|
|
1699
1801
|
case 7:
|
|
1700
1802
|
relations_1_1 = relations_1.next();
|
|
1701
1803
|
return [3 /*break*/, 3];
|
|
1702
1804
|
case 8: return [3 /*break*/, 11];
|
|
1703
1805
|
case 9:
|
|
1704
|
-
e_2_1 =
|
|
1806
|
+
e_2_1 = _c.sent();
|
|
1705
1807
|
e_2 = { error: e_2_1 };
|
|
1706
1808
|
return [3 /*break*/, 11];
|
|
1707
1809
|
case 10:
|
|
1708
1810
|
try {
|
|
1709
|
-
if (relations_1_1 && !relations_1_1.done && (
|
|
1811
|
+
if (relations_1_1 && !relations_1_1.done && (_b = relations_1.return)) _b.call(relations_1);
|
|
1710
1812
|
}
|
|
1711
1813
|
finally { if (e_2) throw e_2.error; }
|
|
1712
1814
|
return [7 /*endfinally*/];
|
|
@@ -1727,7 +1829,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1727
1829
|
return __generator(this, function (_c) {
|
|
1728
1830
|
switch (_c.label) {
|
|
1729
1831
|
case 0:
|
|
1730
|
-
emptyData = this._returnEmpty(type);
|
|
1832
|
+
emptyData = this._returnEmpty(type, dataParents);
|
|
1731
1833
|
if (!dataParents.length)
|
|
1732
1834
|
return [2 /*return*/, emptyData];
|
|
1733
1835
|
relations = this.$db.get('WITH');
|
|
@@ -1746,7 +1848,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1746
1848
|
return [4 /*yield*/, this._relation(dataParents, relation)];
|
|
1747
1849
|
case 3:
|
|
1748
1850
|
dataChilds = _c.sent();
|
|
1749
|
-
dataParents = this.
|
|
1851
|
+
dataParents = this._relationMapData(dataParents, dataChilds, relation);
|
|
1750
1852
|
_c.label = 4;
|
|
1751
1853
|
case 4:
|
|
1752
1854
|
relations_2_1 = relations_2.next();
|
|
@@ -1771,9 +1873,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
1771
1873
|
});
|
|
1772
1874
|
});
|
|
1773
1875
|
};
|
|
1774
|
-
Model.prototype.
|
|
1876
|
+
Model.prototype._relationMapData = function (dataParents, dataChilds, relations) {
|
|
1775
1877
|
var e_4, _a, e_5, _b;
|
|
1776
|
-
var _this = this;
|
|
1777
1878
|
var _c = this._valueInRelation(relations), name = _c.name, as = _c.as, relation = _c.relation, localKey = _c.localKey, foreignKey = _c.foreignKey;
|
|
1778
1879
|
var keyRelation = as !== null && as !== void 0 ? as : name;
|
|
1779
1880
|
try {
|
|
@@ -1783,10 +1884,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
1783
1884
|
this.$constants('RELATIONSHIP').hasOne,
|
|
1784
1885
|
this.$constants('RELATIONSHIP').belongsTo
|
|
1785
1886
|
].some(function (r) { return r === relation; });
|
|
1887
|
+
dataParent[keyRelation] = [];
|
|
1786
1888
|
if (relationIsHasOneOrBelongsTo)
|
|
1787
1889
|
dataParent[keyRelation] = null;
|
|
1788
|
-
else
|
|
1789
|
-
dataParent[keyRelation] = [];
|
|
1790
1890
|
if (!dataChilds.length)
|
|
1791
1891
|
continue;
|
|
1792
1892
|
try {
|
|
@@ -1823,33 +1923,84 @@ var Model = /** @class */ (function (_super) {
|
|
|
1823
1923
|
}
|
|
1824
1924
|
finally { if (e_4) throw e_4.error; }
|
|
1825
1925
|
}
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1926
|
+
return dataParents;
|
|
1927
|
+
};
|
|
1928
|
+
Model.prototype._handleRelationsExists = function (relation) {
|
|
1929
|
+
var e_6, _a;
|
|
1930
|
+
var _b;
|
|
1931
|
+
this._assertError(!((_b = Object.keys(relation)) === null || _b === void 0 ? void 0 : _b.length), "unknown [relation]");
|
|
1932
|
+
var _c = this._valueInRelation(relation), localKey = _c.localKey, foreignKey = _c.foreignKey;
|
|
1933
|
+
var query = relation.query;
|
|
1934
|
+
this._assertError(query == null, "unknown callback query in [relation : '".concat(relation.name, "']"));
|
|
1935
|
+
var clone = new Model().clone(query);
|
|
1936
|
+
if (clone.$db.get('WITH').length) {
|
|
1937
|
+
try {
|
|
1938
|
+
for (var _d = __values(clone.$db.get('WITH')), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
1939
|
+
var r = _e.value;
|
|
1940
|
+
if (r.query == null)
|
|
1941
|
+
continue;
|
|
1942
|
+
var sql_1 = clone._handleRelationsExists(r);
|
|
1943
|
+
clone.whereExists(sql_1);
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
1947
|
+
finally {
|
|
1948
|
+
try {
|
|
1949
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
1950
|
+
}
|
|
1951
|
+
finally { if (e_6) throw e_6.error; }
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
var sql = clone
|
|
1955
|
+
.bind(this.$pool.load())
|
|
1956
|
+
.whereReference("`".concat(this.tableName, "`.`").concat(localKey, "`"), "`".concat(query.tableName, "`.`").concat(foreignKey, "`"))
|
|
1957
|
+
.toString();
|
|
1958
|
+
return sql;
|
|
1959
|
+
};
|
|
1960
|
+
Model.prototype._queryRelationsExists = function () {
|
|
1961
|
+
var e_7, _a;
|
|
1962
|
+
var _b;
|
|
1963
|
+
var relations = this.$db.get('WITH');
|
|
1964
|
+
for (var index in relations) {
|
|
1965
|
+
var relation = relations[index];
|
|
1966
|
+
if (!((_b = Object.keys(relation)) === null || _b === void 0 ? void 0 : _b.length))
|
|
1967
|
+
continue;
|
|
1968
|
+
var _c = this._valueInRelation(relation), localKey = _c.localKey, foreignKey = _c.foreignKey;
|
|
1969
|
+
var query = relation.query;
|
|
1970
|
+
this._assertError(query == null, "unknown callback query in [relation : '".concat(relation.name, "']"));
|
|
1971
|
+
var clone = new Model().clone(query);
|
|
1972
|
+
if (clone.$db.get('WITH').length) {
|
|
1973
|
+
try {
|
|
1974
|
+
for (var _d = (e_7 = void 0, __values(clone.$db.get('WITH'))), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
1975
|
+
var r = _e.value;
|
|
1976
|
+
if (r.query == null)
|
|
1977
|
+
continue;
|
|
1978
|
+
var sql_2 = clone._handleRelationsExists(r);
|
|
1979
|
+
clone.whereExists(sql_2);
|
|
1834
1980
|
}
|
|
1835
|
-
return isNotEmpty_1;
|
|
1836
1981
|
}
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1982
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
1983
|
+
finally {
|
|
1984
|
+
try {
|
|
1985
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
1986
|
+
}
|
|
1987
|
+
finally { if (e_7) throw e_7.error; }
|
|
1842
1988
|
}
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1989
|
+
}
|
|
1990
|
+
var sql_3 = clone
|
|
1991
|
+
.bind(this.$pool.load())
|
|
1992
|
+
.whereReference("`".concat(this.tableName, "`.`").concat(localKey, "`"), "`".concat(query.tableName, "`.`").concat(foreignKey, "`"))
|
|
1993
|
+
.toString();
|
|
1994
|
+
this.whereExists(sql_3);
|
|
1846
1995
|
}
|
|
1847
|
-
|
|
1996
|
+
var sql = this._buildQueryModel();
|
|
1997
|
+
return sql;
|
|
1848
1998
|
};
|
|
1849
1999
|
Model.prototype._relation = function (parents, relation) {
|
|
1850
2000
|
var _a;
|
|
1851
2001
|
return __awaiter(this, void 0, void 0, function () {
|
|
1852
2002
|
var _b, localKey, foreignKey, localKeyId, dataPerentId, query, dataFromRelation;
|
|
2003
|
+
var _this = this;
|
|
1853
2004
|
return __generator(this, function (_c) {
|
|
1854
2005
|
switch (_c.label) {
|
|
1855
2006
|
case 0:
|
|
@@ -1857,20 +2008,23 @@ var Model = /** @class */ (function (_super) {
|
|
|
1857
2008
|
return [2 /*return*/, []];
|
|
1858
2009
|
_b = this._valueInRelation(relation), localKey = _b.localKey, foreignKey = _b.foreignKey;
|
|
1859
2010
|
localKeyId = parents.map(function (parent) {
|
|
1860
|
-
|
|
2011
|
+
var data = parent[localKey];
|
|
2012
|
+
if (!parent.hasOwnProperty(localKey)) {
|
|
2013
|
+
_this._assertError(data == null, "unknown relationship without primary or foreign key");
|
|
2014
|
+
}
|
|
2015
|
+
return data;
|
|
1861
2016
|
}).filter(function (data) { return data != null; });
|
|
1862
2017
|
dataPerentId = Array.from(new Set(localKeyId)) || [];
|
|
1863
2018
|
if (!dataPerentId.length && this.$db.get('WITH_EXISTS'))
|
|
1864
2019
|
return [2 /*return*/, []];
|
|
1865
|
-
this._assertError(!dataPerentId.length, "unknown relationship without primary or foreign key");
|
|
1866
2020
|
return [4 /*yield*/, relation.query];
|
|
1867
2021
|
case 1:
|
|
1868
2022
|
query = _c.sent();
|
|
1869
2023
|
this._assertError(query == null, "unknown callback query in [relation : '".concat(relation.name, "']"));
|
|
1870
2024
|
return [4 /*yield*/, query
|
|
2025
|
+
.bind(this.$pool.load())
|
|
1871
2026
|
.whereIn(foreignKey, dataPerentId)
|
|
1872
2027
|
.debug(this.$db.get('DEBUG'))
|
|
1873
|
-
.ignoreSoftDelete(this.$db.get('SOFT_DELETE_RELATIONS'))
|
|
1874
2028
|
.get()];
|
|
1875
2029
|
case 2:
|
|
1876
2030
|
dataFromRelation = _c.sent();
|
|
@@ -1882,15 +2036,21 @@ var Model = /** @class */ (function (_super) {
|
|
|
1882
2036
|
Model.prototype._handleBelongsToMany = function (dataFromParent, relation, pivotTable) {
|
|
1883
2037
|
return __awaiter(this, void 0, void 0, function () {
|
|
1884
2038
|
var _a, name, localKey, foreignKey, localKeyId, dataPerentId, modelOther, other, otherlocalKey, otherforeignKey, sqldataChilds, dataChilds, otherId, otherArrId, otherdataChilds;
|
|
2039
|
+
var _this = this;
|
|
1885
2040
|
return __generator(this, function (_b) {
|
|
1886
2041
|
switch (_b.label) {
|
|
1887
2042
|
case 0:
|
|
1888
2043
|
_a = this._valueInRelation(relation), name = _a.name, localKey = _a.localKey, foreignKey = _a.foreignKey;
|
|
1889
|
-
localKeyId = dataFromParent.map(function (
|
|
1890
|
-
|
|
2044
|
+
localKeyId = dataFromParent.map(function (parent) {
|
|
2045
|
+
var data = parent[localKey];
|
|
2046
|
+
if (!parent.hasOwnProperty(localKey)) {
|
|
2047
|
+
_this._assertError(data == null, "unknown relationship without primary or foreign key");
|
|
2048
|
+
}
|
|
2049
|
+
return data;
|
|
1891
2050
|
}).filter(function (data) { return data != null; });
|
|
1892
2051
|
dataPerentId = Array.from(new Set(localKeyId)).join(',') || [];
|
|
1893
|
-
|
|
2052
|
+
if (!dataPerentId.length && this.$db.get('WITH_EXISTS'))
|
|
2053
|
+
return [2 /*return*/, []];
|
|
1894
2054
|
modelOther = new relation.model();
|
|
1895
2055
|
other = this._classToTableName(modelOther.constructor.name, { singular: true });
|
|
1896
2056
|
otherlocalKey = 'id';
|
|
@@ -1909,7 +2069,9 @@ var Model = /** @class */ (function (_super) {
|
|
|
1909
2069
|
otherId = dataChilds.map(function (sub) { return sub[otherforeignKey]; }).filter(function (data) { return data != null; });
|
|
1910
2070
|
otherArrId = Array.from(new Set(otherId)) || [];
|
|
1911
2071
|
return [4 /*yield*/, this._queryStatementModel(modelOther
|
|
2072
|
+
.bind(this.$pool.load())
|
|
1912
2073
|
.whereIn(otherlocalKey, otherArrId)
|
|
2074
|
+
.debug(this.$db.get('DEBUG'))
|
|
1913
2075
|
.toString())];
|
|
1914
2076
|
case 2:
|
|
1915
2077
|
otherdataChilds = _b.sent();
|
|
@@ -1940,7 +2102,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1940
2102
|
Model.prototype._belongsToMany = function (dataFromParent, relation) {
|
|
1941
2103
|
var _a, _b;
|
|
1942
2104
|
return __awaiter(this, void 0, void 0, function () {
|
|
1943
|
-
var local, modelOther, other, pivotTable, err_1, pivotTable,
|
|
2105
|
+
var local, modelOther, other, pivotTable, err_1, pivotTable, e_8;
|
|
1944
2106
|
return __generator(this, function (_c) {
|
|
1945
2107
|
switch (_c.label) {
|
|
1946
2108
|
case 0:
|
|
@@ -1962,7 +2124,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
1962
2124
|
return [4 /*yield*/, this._handleBelongsToMany(dataFromParent, relation, pivotTable)];
|
|
1963
2125
|
case 5: return [2 /*return*/, _c.sent()];
|
|
1964
2126
|
case 6:
|
|
1965
|
-
|
|
2127
|
+
e_8 = _c.sent();
|
|
1966
2128
|
throw new Error(err_1.message);
|
|
1967
2129
|
case 7: return [3 /*break*/, 8];
|
|
1968
2130
|
case 8: return [2 /*return*/];
|
|
@@ -1971,11 +2133,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
1971
2133
|
});
|
|
1972
2134
|
};
|
|
1973
2135
|
Model.prototype._pagination = function (data) {
|
|
1974
|
-
var _a, _b
|
|
2136
|
+
var _a, _b;
|
|
1975
2137
|
return __awaiter(this, void 0, void 0, function () {
|
|
1976
2138
|
var currentPage, limit, sql, res, total, lastPage, nextPage, prevPage, totalPage, meta;
|
|
1977
|
-
return __generator(this, function (
|
|
1978
|
-
switch (
|
|
2139
|
+
return __generator(this, function (_c) {
|
|
2140
|
+
switch (_c.label) {
|
|
1979
2141
|
case 0:
|
|
1980
2142
|
currentPage = +(this.$db.get('PAGE'));
|
|
1981
2143
|
this.select([
|
|
@@ -1985,19 +2147,16 @@ var Model = /** @class */ (function (_super) {
|
|
|
1985
2147
|
].join(' '));
|
|
1986
2148
|
limit = Number(this.$db.get('PER_PAGE'));
|
|
1987
2149
|
this._assertError(limit < 1, "minimun less 1 of limit");
|
|
1988
|
-
|
|
1989
|
-
this.whereNotIn('id', __spreadArray([], __read(new Set(this.$db.get('WITH_EXISTS_NOT_ID'))), false));
|
|
1990
|
-
}
|
|
1991
|
-
sql = this._queryGenrateModel();
|
|
2150
|
+
sql = this._buildQueryModel();
|
|
1992
2151
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
1993
2152
|
case 1:
|
|
1994
|
-
res =
|
|
1995
|
-
total = (
|
|
2153
|
+
res = _c.sent();
|
|
2154
|
+
total = (_a = res.shift().total) !== null && _a !== void 0 ? _a : 0;
|
|
1996
2155
|
lastPage = Math.ceil(total / limit) || 0;
|
|
1997
2156
|
lastPage = lastPage > 1 ? lastPage : 1;
|
|
1998
2157
|
nextPage = currentPage + 1;
|
|
1999
2158
|
prevPage = currentPage - 1 === 0 ? 1 : currentPage - 1;
|
|
2000
|
-
totalPage = (
|
|
2159
|
+
totalPage = (_b = data === null || data === void 0 ? void 0 : data.length) !== null && _b !== void 0 ? _b : 0;
|
|
2001
2160
|
meta = {
|
|
2002
2161
|
total: total,
|
|
2003
2162
|
limit: limit,
|
|
@@ -2025,13 +2184,26 @@ var Model = /** @class */ (function (_super) {
|
|
|
2025
2184
|
this.$db.get('RESULT', data);
|
|
2026
2185
|
return data;
|
|
2027
2186
|
};
|
|
2028
|
-
Model.prototype._returnEmpty = function (type) {
|
|
2187
|
+
Model.prototype._returnEmpty = function (type, result, message, options) {
|
|
2029
2188
|
var emptyData = null;
|
|
2030
2189
|
switch (type) {
|
|
2031
2190
|
case 'FIRST': {
|
|
2032
2191
|
emptyData = null;
|
|
2033
2192
|
break;
|
|
2034
2193
|
}
|
|
2194
|
+
case 'FIRST_OR_ERROR': {
|
|
2195
|
+
if (!(result === null || result === void 0 ? void 0 : result.length)) {
|
|
2196
|
+
if (options == null) {
|
|
2197
|
+
throw {
|
|
2198
|
+
message: message,
|
|
2199
|
+
code: 400
|
|
2200
|
+
};
|
|
2201
|
+
}
|
|
2202
|
+
throw __assign({ message: message }, options);
|
|
2203
|
+
}
|
|
2204
|
+
emptyData = null;
|
|
2205
|
+
break;
|
|
2206
|
+
}
|
|
2035
2207
|
case 'GET': {
|
|
2036
2208
|
emptyData = [];
|
|
2037
2209
|
break;
|
|
@@ -2055,13 +2227,14 @@ var Model = /** @class */ (function (_super) {
|
|
|
2055
2227
|
throw new Error('Missing method first get or pagination');
|
|
2056
2228
|
}
|
|
2057
2229
|
}
|
|
2058
|
-
if (this._isPatternSnakeCase())
|
|
2230
|
+
if (this._isPatternSnakeCase()) {
|
|
2059
2231
|
return this.$utils.snakeCase(this._result(emptyData));
|
|
2232
|
+
}
|
|
2060
2233
|
return this._result(emptyData);
|
|
2061
2234
|
};
|
|
2062
2235
|
Model.prototype._returnResult = function (type, data) {
|
|
2063
2236
|
var _this = this;
|
|
2064
|
-
var _a, _b, _c;
|
|
2237
|
+
var _a, _b, _c, _d, _e;
|
|
2065
2238
|
if ((_a = Object.keys(this.$db.get('REGISTRY'))) === null || _a === void 0 ? void 0 : _a.length) {
|
|
2066
2239
|
data === null || data === void 0 ? void 0 : data.forEach(function (d) {
|
|
2067
2240
|
for (var name in _this.$db.get('REGISTRY')) {
|
|
@@ -2084,6 +2257,20 @@ var Model = /** @class */ (function (_super) {
|
|
|
2084
2257
|
}
|
|
2085
2258
|
return this._result((_c = data.shift()) !== null && _c !== void 0 ? _c : null);
|
|
2086
2259
|
}
|
|
2260
|
+
case 'FIRST_OR_ERROR': {
|
|
2261
|
+
if (this.$db.get('PLUCK')) {
|
|
2262
|
+
var pluck = this.$db.get('PLUCK');
|
|
2263
|
+
var newData = data.shift();
|
|
2264
|
+
var checkProperty = newData.hasOwnProperty(pluck);
|
|
2265
|
+
this._assertError(!checkProperty, "can't find property '".concat(pluck, "' of result"));
|
|
2266
|
+
var result_3 = (_d = this._result(newData[pluck])) !== null && _d !== void 0 ? _d : null;
|
|
2267
|
+
return result_3;
|
|
2268
|
+
}
|
|
2269
|
+
var result = this._result((_e = data.shift()) !== null && _e !== void 0 ? _e : null);
|
|
2270
|
+
if (result == null)
|
|
2271
|
+
throw new Error();
|
|
2272
|
+
return result;
|
|
2273
|
+
}
|
|
2087
2274
|
case 'GET': {
|
|
2088
2275
|
if (this.$db.get('CHUNK')) {
|
|
2089
2276
|
var result = data.reduce(function (resultArray, item, index) {
|
|
@@ -2125,7 +2312,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
2125
2312
|
Model.prototype._attach = function (name, dataId, fields) {
|
|
2126
2313
|
var _a;
|
|
2127
2314
|
return __awaiter(this, void 0, void 0, function () {
|
|
2128
|
-
var relation, thisTable, relationTable, result, pivotTable, success,
|
|
2315
|
+
var relation, thisTable, relationTable, result, pivotTable, success, e_9, errorTable, search, pivotTable, success, e_10;
|
|
2129
2316
|
var _this = this;
|
|
2130
2317
|
return __generator(this, function (_b) {
|
|
2131
2318
|
switch (_b.label) {
|
|
@@ -2148,11 +2335,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
2148
2335
|
success = _b.sent();
|
|
2149
2336
|
return [2 /*return*/, success];
|
|
2150
2337
|
case 3:
|
|
2151
|
-
|
|
2152
|
-
errorTable =
|
|
2338
|
+
e_9 = _b.sent();
|
|
2339
|
+
errorTable = e_9.message;
|
|
2153
2340
|
search = errorTable.search("ER_NO_SUCH_TABLE");
|
|
2154
2341
|
if (!!search)
|
|
2155
|
-
throw new Error(
|
|
2342
|
+
throw new Error(e_9.message);
|
|
2156
2343
|
_b.label = 4;
|
|
2157
2344
|
case 4:
|
|
2158
2345
|
_b.trys.push([4, 6, , 7]);
|
|
@@ -2165,8 +2352,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
2165
2352
|
success = _b.sent();
|
|
2166
2353
|
return [2 /*return*/, success];
|
|
2167
2354
|
case 6:
|
|
2168
|
-
|
|
2169
|
-
throw new Error(
|
|
2355
|
+
e_10 = _b.sent();
|
|
2356
|
+
throw new Error(e_10.message);
|
|
2170
2357
|
case 7: return [3 /*break*/, 8];
|
|
2171
2358
|
case 8: return [2 /*return*/];
|
|
2172
2359
|
}
|
|
@@ -2175,8 +2362,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
2175
2362
|
};
|
|
2176
2363
|
Model.prototype._detach = function (name, dataId) {
|
|
2177
2364
|
return __awaiter(this, void 0, void 0, function () {
|
|
2178
|
-
var relation, thisTable, relationTable, result, pivotTable, dataId_1, dataId_1_1, id,
|
|
2179
|
-
var
|
|
2365
|
+
var relation, thisTable, relationTable, result, pivotTable, dataId_1, dataId_1_1, id, e_11_1, e_12, errorTable, search, pivotTable, dataId_2, dataId_2_1, id, e_13_1, e_14;
|
|
2366
|
+
var e_11, _a, e_13, _b;
|
|
2180
2367
|
return __generator(this, function (_c) {
|
|
2181
2368
|
switch (_c.label) {
|
|
2182
2369
|
case 0:
|
|
@@ -2210,22 +2397,22 @@ var Model = /** @class */ (function (_super) {
|
|
|
2210
2397
|
return [3 /*break*/, 3];
|
|
2211
2398
|
case 6: return [3 /*break*/, 9];
|
|
2212
2399
|
case 7:
|
|
2213
|
-
|
|
2214
|
-
|
|
2400
|
+
e_11_1 = _c.sent();
|
|
2401
|
+
e_11 = { error: e_11_1 };
|
|
2215
2402
|
return [3 /*break*/, 9];
|
|
2216
2403
|
case 8:
|
|
2217
2404
|
try {
|
|
2218
2405
|
if (dataId_1_1 && !dataId_1_1.done && (_a = dataId_1.return)) _a.call(dataId_1);
|
|
2219
2406
|
}
|
|
2220
|
-
finally { if (
|
|
2407
|
+
finally { if (e_11) throw e_11.error; }
|
|
2221
2408
|
return [7 /*endfinally*/];
|
|
2222
2409
|
case 9: return [2 /*return*/, true];
|
|
2223
2410
|
case 10:
|
|
2224
|
-
|
|
2225
|
-
errorTable =
|
|
2411
|
+
e_12 = _c.sent();
|
|
2412
|
+
errorTable = e_12.message;
|
|
2226
2413
|
search = errorTable.search("ER_NO_SUCH_TABLE");
|
|
2227
2414
|
if (!!search)
|
|
2228
|
-
throw new Error(
|
|
2415
|
+
throw new Error(e_12.message);
|
|
2229
2416
|
_c.label = 11;
|
|
2230
2417
|
case 11:
|
|
2231
2418
|
_c.trys.push([11, 20, , 21]);
|
|
@@ -2250,19 +2437,19 @@ var Model = /** @class */ (function (_super) {
|
|
|
2250
2437
|
return [3 /*break*/, 13];
|
|
2251
2438
|
case 16: return [3 /*break*/, 19];
|
|
2252
2439
|
case 17:
|
|
2253
|
-
|
|
2254
|
-
|
|
2440
|
+
e_13_1 = _c.sent();
|
|
2441
|
+
e_13 = { error: e_13_1 };
|
|
2255
2442
|
return [3 /*break*/, 19];
|
|
2256
2443
|
case 18:
|
|
2257
2444
|
try {
|
|
2258
2445
|
if (dataId_2_1 && !dataId_2_1.done && (_b = dataId_2.return)) _b.call(dataId_2);
|
|
2259
2446
|
}
|
|
2260
|
-
finally { if (
|
|
2447
|
+
finally { if (e_13) throw e_13.error; }
|
|
2261
2448
|
return [7 /*endfinally*/];
|
|
2262
2449
|
case 19: return [2 /*return*/, true];
|
|
2263
2450
|
case 20:
|
|
2264
|
-
|
|
2265
|
-
throw new Error(
|
|
2451
|
+
e_14 = _c.sent();
|
|
2452
|
+
throw new Error(e_14.message);
|
|
2266
2453
|
case 21: return [3 /*break*/, 22];
|
|
2267
2454
|
case 22: return [2 /*return*/];
|
|
2268
2455
|
}
|
|
@@ -2273,90 +2460,115 @@ var Model = /** @class */ (function (_super) {
|
|
|
2273
2460
|
var _a;
|
|
2274
2461
|
var _this = this;
|
|
2275
2462
|
if (this.$db.get('TIMESTAMP')) {
|
|
2276
|
-
var updatedAt = this._valuePattern('
|
|
2463
|
+
var updatedAt = this._valuePattern(this.$db.get('TIMESTAMP_FORMAT').UPDATED_AT);
|
|
2277
2464
|
objects = __assign(__assign({}, objects), (_a = {}, _a[updatedAt] = this.$utils.timestamp(), _a));
|
|
2278
2465
|
}
|
|
2279
2466
|
var keyValue = Object.entries(objects).map(function (_a) {
|
|
2280
2467
|
var _b = __read(_a, 2), column = _b[0], value = _b[1];
|
|
2281
2468
|
return "".concat(column, " = ").concat(value == null || value === 'NULL'
|
|
2282
2469
|
? 'NULL'
|
|
2283
|
-
:
|
|
2470
|
+
: value.startsWith(_this.$constants('RAW'))
|
|
2471
|
+
? "".concat(_this.$utils.covertBooleanToNumber(value)).replace(_this.$constants('RAW'), '')
|
|
2472
|
+
: "'".concat(_this.$utils.covertBooleanToNumber(value), "'"));
|
|
2284
2473
|
});
|
|
2285
2474
|
return "".concat(this.$constants('SET'), " ").concat(keyValue);
|
|
2286
2475
|
};
|
|
2287
2476
|
Model.prototype._queryInsertModel = function (objects) {
|
|
2288
2477
|
var _a, _b;
|
|
2289
2478
|
var _this = this;
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
var
|
|
2479
|
+
var hasTimestamp = this.$db.get('TIMESTAMP');
|
|
2480
|
+
if (hasTimestamp) {
|
|
2481
|
+
var format = this.$db.get('TIMESTAMP_FORMAT');
|
|
2482
|
+
var createdAt = this._valuePattern(format.CREATED_AT);
|
|
2483
|
+
var updatedAt = this._valuePattern(format.UPDATED_AT);
|
|
2293
2484
|
objects = __assign(__assign({}, objects), (_a = {}, _a[createdAt] = this.$utils.timestamp(), _a[updatedAt] = this.$utils.timestamp(), _a));
|
|
2294
2485
|
}
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2486
|
+
var hasUUID = objects.hasOwnProperty(this.$db.get('UUID_FORMAT'));
|
|
2487
|
+
if (this.$db.get('UUID') && !hasUUID) {
|
|
2488
|
+
var uuidFormat = this.$db.get('UUID_FORMAT');
|
|
2489
|
+
objects = __assign(__assign({}, objects), (_b = {}, _b[uuidFormat] = this.$utils.generateUUID(), _b));
|
|
2298
2490
|
}
|
|
2299
|
-
var columns = Object.keys(objects).map(function (
|
|
2491
|
+
var columns = Object.keys(objects).map(function (column) { return "`".concat(column, "`"); });
|
|
2300
2492
|
var values = Object.values(objects).map(function (data) {
|
|
2301
|
-
return "".concat(data == null || data === 'NULL'
|
|
2302
|
-
'NULL'
|
|
2303
|
-
"'".concat(_this.$utils.covertBooleanToNumber(data), "'"));
|
|
2493
|
+
return "".concat(data == null || data === 'NULL'
|
|
2494
|
+
? 'NULL'
|
|
2495
|
+
: "'".concat(_this.$utils.covertBooleanToNumber(data), "'"));
|
|
2304
2496
|
});
|
|
2305
|
-
return
|
|
2497
|
+
return [
|
|
2498
|
+
"(".concat(columns, ")"),
|
|
2499
|
+
"".concat(this.$constants('VALUES')),
|
|
2500
|
+
"(".concat(values, ")")
|
|
2501
|
+
].join(' ');
|
|
2306
2502
|
};
|
|
2307
2503
|
Model.prototype._queryInsertMultipleModel = function (data) {
|
|
2308
|
-
var
|
|
2504
|
+
var e_15, _a, _b, _c;
|
|
2309
2505
|
var _this = this;
|
|
2310
2506
|
var _d;
|
|
2311
2507
|
var values = [];
|
|
2508
|
+
var columns = Object.keys((_d = __spreadArray([], __read(data), false)) === null || _d === void 0 ? void 0 : _d.shift()).map(function (column) { return "`".concat(column, "`"); });
|
|
2312
2509
|
try {
|
|
2313
2510
|
for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
|
|
2314
2511
|
var objects = data_1_1.value;
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
var
|
|
2512
|
+
var hasTimestamp = this.$db.get('TIMESTAMP');
|
|
2513
|
+
if (hasTimestamp) {
|
|
2514
|
+
var format = this.$db.get('TIMESTAMP_FORMAT');
|
|
2515
|
+
var createdAt = this._valuePattern(format.CREATED_AT);
|
|
2516
|
+
var updatedAt = this._valuePattern(format.UPDATED_AT);
|
|
2318
2517
|
objects = __assign(__assign({}, objects), (_b = {}, _b[createdAt] = this.$utils.timestamp(), _b[updatedAt] = this.$utils.timestamp(), _b));
|
|
2518
|
+
columns = __spreadArray(__spreadArray([], __read(columns), false), [
|
|
2519
|
+
"`".concat(createdAt, "`"),
|
|
2520
|
+
"`".concat(updatedAt, "`")
|
|
2521
|
+
], false);
|
|
2319
2522
|
}
|
|
2320
|
-
|
|
2321
|
-
|
|
2523
|
+
var hasUUID = objects.hasOwnProperty(this.$db.get('UUID_FORMAT'));
|
|
2524
|
+
if (this.$db.get('UUID') && !hasUUID) {
|
|
2525
|
+
var uuidFormat = this.$db.get('UUID_FORMAT');
|
|
2526
|
+
objects = __assign(__assign({}, objects), (_c = {}, _c[uuidFormat] = this.$utils.generateUUID(), _c));
|
|
2527
|
+
columns = __spreadArray(__spreadArray([], __read(columns), false), [
|
|
2528
|
+
"`".concat(uuidFormat, "`")
|
|
2529
|
+
], false);
|
|
2322
2530
|
}
|
|
2323
|
-
var
|
|
2324
|
-
return "".concat(data == null || data === 'NULL'
|
|
2325
|
-
'NULL'
|
|
2326
|
-
"'".concat(_this.$utils.covertBooleanToNumber(data), "'"));
|
|
2531
|
+
var v = Object.values(objects).map(function (data) {
|
|
2532
|
+
return "".concat(data == null || data === 'NULL'
|
|
2533
|
+
? 'NULL'
|
|
2534
|
+
: "'".concat(_this.$utils.covertBooleanToNumber(data), "'"));
|
|
2327
2535
|
});
|
|
2328
|
-
values
|
|
2536
|
+
values = __spreadArray(__spreadArray([], __read(values), false), [
|
|
2537
|
+
"(".concat(v.join(','), ")")
|
|
2538
|
+
], false);
|
|
2329
2539
|
}
|
|
2330
2540
|
}
|
|
2331
|
-
catch (
|
|
2541
|
+
catch (e_15_1) { e_15 = { error: e_15_1 }; }
|
|
2332
2542
|
finally {
|
|
2333
2543
|
try {
|
|
2334
2544
|
if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);
|
|
2335
2545
|
}
|
|
2336
|
-
finally { if (
|
|
2546
|
+
finally { if (e_15) throw e_15.error; }
|
|
2337
2547
|
}
|
|
2338
|
-
|
|
2339
|
-
|
|
2548
|
+
return [
|
|
2549
|
+
"(".concat(__spreadArray([], __read(new Set(columns)), false).join(','), ")"),
|
|
2550
|
+
"".concat(this.$constants('VALUES')),
|
|
2551
|
+
"".concat(values.join(','))
|
|
2552
|
+
].join(' ');
|
|
2340
2553
|
};
|
|
2341
|
-
Model.prototype._registry = function (
|
|
2554
|
+
Model.prototype._registry = function (func) {
|
|
2342
2555
|
var _this = this;
|
|
2343
2556
|
var _a;
|
|
2344
2557
|
if ((_a = Object.keys(this.$db.get('REGISTRY'))) === null || _a === void 0 ? void 0 : _a.length) {
|
|
2345
|
-
|
|
2558
|
+
func === null || func === void 0 ? void 0 : func.forEach(function (fn) {
|
|
2346
2559
|
for (var name in _this.$db.get('REGISTRY')) {
|
|
2347
2560
|
var registry = _this.$db.get('REGISTRY');
|
|
2348
|
-
|
|
2561
|
+
fn[name] = registry[name];
|
|
2349
2562
|
}
|
|
2350
2563
|
});
|
|
2351
2564
|
}
|
|
2352
2565
|
return this;
|
|
2353
2566
|
};
|
|
2354
2567
|
Model.prototype._insertNotExistsModel = function () {
|
|
2355
|
-
var _a;
|
|
2356
2568
|
return __awaiter(this, void 0, void 0, function () {
|
|
2357
|
-
var sql, check,
|
|
2358
|
-
return __generator(this, function (
|
|
2359
|
-
switch (
|
|
2569
|
+
var sql, check, _a, result, _b, _c, result_4, id, sql_4, data;
|
|
2570
|
+
return __generator(this, function (_d) {
|
|
2571
|
+
switch (_d.label) {
|
|
2360
2572
|
case 0:
|
|
2361
2573
|
this._assertError(!this.$db.get('WHERE'), "can't insert [insertNotExists] without where condition");
|
|
2362
2574
|
sql = [
|
|
@@ -2372,10 +2584,10 @@ var Model = /** @class */ (function (_super) {
|
|
|
2372
2584
|
check = false;
|
|
2373
2585
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
2374
2586
|
case 1:
|
|
2375
|
-
|
|
2587
|
+
_a = __read.apply(void 0, [_d.sent(), 1]), result = _a[0].exists;
|
|
2376
2588
|
check = !!parseInt(result);
|
|
2377
|
-
|
|
2378
|
-
switch (
|
|
2589
|
+
_b = check;
|
|
2590
|
+
switch (_b) {
|
|
2379
2591
|
case false: return [3 /*break*/, 2];
|
|
2380
2592
|
case true: return [3 /*break*/, 6];
|
|
2381
2593
|
}
|
|
@@ -2385,58 +2597,45 @@ var Model = /** @class */ (function (_super) {
|
|
|
2385
2597
|
returnId: true
|
|
2386
2598
|
})];
|
|
2387
2599
|
case 3:
|
|
2388
|
-
|
|
2389
|
-
if (
|
|
2390
|
-
|
|
2391
|
-
table: this.$db.get('TABLE_NAME'),
|
|
2392
|
-
id: id
|
|
2393
|
-
});
|
|
2394
|
-
}
|
|
2395
|
-
if (!result_3) return [3 /*break*/, 5];
|
|
2396
|
-
sql_1 = [
|
|
2600
|
+
_c = __read.apply(void 0, [_d.sent(), 2]), result_4 = _c[0], id = _c[1];
|
|
2601
|
+
if (!result_4) return [3 /*break*/, 5];
|
|
2602
|
+
sql_4 = [
|
|
2397
2603
|
"".concat(this.$db.get('SELECT')),
|
|
2398
2604
|
"".concat(this.$db.get('FROM')),
|
|
2399
2605
|
"".concat(this.$db.get('TABLE_NAME')),
|
|
2400
2606
|
"".concat(this.$constants('WHERE'), " id = ").concat(id)
|
|
2401
2607
|
].join(' ');
|
|
2402
|
-
return [4 /*yield*/, this._queryStatementModel(
|
|
2608
|
+
return [4 /*yield*/, this._queryStatementModel(sql_4)];
|
|
2403
2609
|
case 4:
|
|
2404
|
-
data =
|
|
2610
|
+
data = _d.sent();
|
|
2405
2611
|
return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.shift()) || null];
|
|
2406
2612
|
case 5: return [2 /*return*/, null];
|
|
2407
2613
|
case 6:
|
|
2408
2614
|
{
|
|
2409
2615
|
return [2 /*return*/, null];
|
|
2410
2616
|
}
|
|
2411
|
-
|
|
2617
|
+
_d.label = 7;
|
|
2412
2618
|
case 7:
|
|
2413
2619
|
{
|
|
2414
2620
|
return [2 /*return*/, null];
|
|
2415
2621
|
}
|
|
2416
|
-
|
|
2622
|
+
_d.label = 8;
|
|
2417
2623
|
case 8: return [2 /*return*/];
|
|
2418
2624
|
}
|
|
2419
2625
|
});
|
|
2420
2626
|
});
|
|
2421
2627
|
};
|
|
2422
2628
|
Model.prototype._createModel = function () {
|
|
2423
|
-
var _a;
|
|
2424
2629
|
return __awaiter(this, void 0, void 0, function () {
|
|
2425
|
-
var
|
|
2426
|
-
return __generator(this, function (
|
|
2427
|
-
switch (
|
|
2630
|
+
var _a, result, id, sql, data, result_5;
|
|
2631
|
+
return __generator(this, function (_b) {
|
|
2632
|
+
switch (_b.label) {
|
|
2428
2633
|
case 0: return [4 /*yield*/, this._actionStatementModel({
|
|
2429
2634
|
sql: this.$db.get('INSERT'),
|
|
2430
2635
|
returnId: true
|
|
2431
2636
|
})];
|
|
2432
2637
|
case 1:
|
|
2433
|
-
|
|
2434
|
-
if (this.$db.get('TRANSACTION')) {
|
|
2435
|
-
(_a = this.$db.get('TRANSACTION')) === null || _a === void 0 ? void 0 : _a.query.push({
|
|
2436
|
-
table: this.$db.get('TABLE_NAME'),
|
|
2437
|
-
id: id
|
|
2438
|
-
});
|
|
2439
|
-
}
|
|
2638
|
+
_a = __read.apply(void 0, [_b.sent(), 2]), result = _a[0], id = _a[1];
|
|
2440
2639
|
if (!result) return [3 /*break*/, 3];
|
|
2441
2640
|
sql = [
|
|
2442
2641
|
"".concat(this.$db.get('SELECT')),
|
|
@@ -2446,48 +2645,28 @@ var Model = /** @class */ (function (_super) {
|
|
|
2446
2645
|
].join(' ');
|
|
2447
2646
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
2448
2647
|
case 2:
|
|
2449
|
-
data =
|
|
2450
|
-
|
|
2451
|
-
this.$db.set('RESULT',
|
|
2452
|
-
return [2 /*return*/,
|
|
2648
|
+
data = _b.sent();
|
|
2649
|
+
result_5 = (data === null || data === void 0 ? void 0 : data.shift()) || null;
|
|
2650
|
+
this.$db.set('RESULT', result_5);
|
|
2651
|
+
return [2 /*return*/, result_5];
|
|
2453
2652
|
case 3: return [2 /*return*/, null];
|
|
2454
2653
|
}
|
|
2455
2654
|
});
|
|
2456
2655
|
});
|
|
2457
2656
|
};
|
|
2458
2657
|
Model.prototype._createMultipleModel = function () {
|
|
2459
|
-
var _a;
|
|
2460
2658
|
return __awaiter(this, void 0, void 0, function () {
|
|
2461
|
-
var
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
switch (_d.label) {
|
|
2659
|
+
var _a, result, id, arrayId, sql, data, resultData;
|
|
2660
|
+
return __generator(this, function (_b) {
|
|
2661
|
+
switch (_b.label) {
|
|
2465
2662
|
case 0: return [4 /*yield*/, this._actionStatementModel({
|
|
2466
2663
|
sql: this.$db.get('INSERT'),
|
|
2467
2664
|
returnId: true
|
|
2468
2665
|
})];
|
|
2469
2666
|
case 1:
|
|
2470
|
-
|
|
2667
|
+
_a = __read.apply(void 0, [_b.sent(), 2]), result = _a[0], id = _a[1];
|
|
2471
2668
|
if (!result) return [3 /*break*/, 3];
|
|
2472
2669
|
arrayId = __spreadArray([], __read(Array(result)), false).map(function (_, i) { return i + id; });
|
|
2473
|
-
try {
|
|
2474
|
-
for (arrayId_1 = __values(arrayId), arrayId_1_1 = arrayId_1.next(); !arrayId_1_1.done; arrayId_1_1 = arrayId_1.next()) {
|
|
2475
|
-
id_1 = arrayId_1_1.value;
|
|
2476
|
-
if (this.$db.get('TRANSACTION')) {
|
|
2477
|
-
(_a = this.$db.get('TRANSACTION')) === null || _a === void 0 ? void 0 : _a.query.push({
|
|
2478
|
-
table: this.$db.get('TABLE_NAME'),
|
|
2479
|
-
id: id_1
|
|
2480
|
-
});
|
|
2481
|
-
}
|
|
2482
|
-
}
|
|
2483
|
-
}
|
|
2484
|
-
catch (e_14_1) { e_14 = { error: e_14_1 }; }
|
|
2485
|
-
finally {
|
|
2486
|
-
try {
|
|
2487
|
-
if (arrayId_1_1 && !arrayId_1_1.done && (_c = arrayId_1.return)) _c.call(arrayId_1);
|
|
2488
|
-
}
|
|
2489
|
-
finally { if (e_14) throw e_14.error; }
|
|
2490
|
-
}
|
|
2491
2670
|
sql = [
|
|
2492
2671
|
"".concat(this.$db.get('SELECT')),
|
|
2493
2672
|
"".concat(this.$db.get('FROM')),
|
|
@@ -2497,7 +2676,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
2497
2676
|
].join(' ');
|
|
2498
2677
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
2499
2678
|
case 2:
|
|
2500
|
-
data =
|
|
2679
|
+
data = _b.sent();
|
|
2501
2680
|
resultData = data || null;
|
|
2502
2681
|
this.$db.set('RESULT', resultData);
|
|
2503
2682
|
return [2 /*return*/, resultData];
|
|
@@ -2507,12 +2686,11 @@ var Model = /** @class */ (function (_super) {
|
|
|
2507
2686
|
});
|
|
2508
2687
|
};
|
|
2509
2688
|
Model.prototype._updateOrInsertModel = function () {
|
|
2510
|
-
var _a;
|
|
2511
2689
|
return __awaiter(this, void 0, void 0, function () {
|
|
2512
|
-
var sql, check,
|
|
2513
|
-
var
|
|
2514
|
-
return __generator(this, function (
|
|
2515
|
-
switch (
|
|
2690
|
+
var sql, check, _a, result, _b, _c, result_6, id, sql_5, data, resultData, result_7, data, data_2, data_2_1, val;
|
|
2691
|
+
var e_16, _d;
|
|
2692
|
+
return __generator(this, function (_e) {
|
|
2693
|
+
switch (_e.label) {
|
|
2516
2694
|
case 0:
|
|
2517
2695
|
this._assertError(!this.$db.get('WHERE'), "can't update or insert [updateOrInsert] without where condition");
|
|
2518
2696
|
sql = '';
|
|
@@ -2529,10 +2707,10 @@ var Model = /** @class */ (function (_super) {
|
|
|
2529
2707
|
].join(' ');
|
|
2530
2708
|
return [4 /*yield*/, this._queryStatementModel(sql)];
|
|
2531
2709
|
case 1:
|
|
2532
|
-
|
|
2710
|
+
_a = __read.apply(void 0, [_e.sent(), 1]), result = _a[0].exists;
|
|
2533
2711
|
check = !!Number.parseInt(result);
|
|
2534
|
-
|
|
2535
|
-
switch (
|
|
2712
|
+
_b = check;
|
|
2713
|
+
switch (_b) {
|
|
2536
2714
|
case false: return [3 /*break*/, 2];
|
|
2537
2715
|
case true: return [3 /*break*/, 6];
|
|
2538
2716
|
}
|
|
@@ -2542,23 +2720,17 @@ var Model = /** @class */ (function (_super) {
|
|
|
2542
2720
|
returnId: true
|
|
2543
2721
|
})];
|
|
2544
2722
|
case 3:
|
|
2545
|
-
|
|
2546
|
-
if (
|
|
2547
|
-
|
|
2548
|
-
table: this.$db.get('TABLE_NAME'),
|
|
2549
|
-
id: id
|
|
2550
|
-
});
|
|
2551
|
-
}
|
|
2552
|
-
if (!result_5) return [3 /*break*/, 5];
|
|
2553
|
-
sql_2 = [
|
|
2723
|
+
_c = __read.apply(void 0, [_e.sent(), 2]), result_6 = _c[0], id = _c[1];
|
|
2724
|
+
if (!result_6) return [3 /*break*/, 5];
|
|
2725
|
+
sql_5 = [
|
|
2554
2726
|
"".concat(this.$db.get('SELECT')),
|
|
2555
2727
|
"".concat(this.$db.get('FROM')),
|
|
2556
2728
|
"".concat(this.$db.get('TABLE_NAME')),
|
|
2557
2729
|
"".concat(this.$constants('WHERE'), " id = ").concat(id)
|
|
2558
2730
|
].join(' ');
|
|
2559
|
-
return [4 /*yield*/, this._queryStatementModel(
|
|
2731
|
+
return [4 /*yield*/, this._queryStatementModel(sql_5)];
|
|
2560
2732
|
case 4:
|
|
2561
|
-
data =
|
|
2733
|
+
data = _e.sent();
|
|
2562
2734
|
resultData = __assign(__assign({}, data === null || data === void 0 ? void 0 : data.shift()), { action_status: 'insert' }) || null;
|
|
2563
2735
|
this.$db.set('RESULT', resultData);
|
|
2564
2736
|
return [2 /*return*/, resultData];
|
|
@@ -2570,8 +2742,8 @@ var Model = /** @class */ (function (_super) {
|
|
|
2570
2742
|
].join(' ')
|
|
2571
2743
|
})];
|
|
2572
2744
|
case 7:
|
|
2573
|
-
|
|
2574
|
-
if (!
|
|
2745
|
+
result_7 = _e.sent();
|
|
2746
|
+
if (!result_7) return [3 /*break*/, 9];
|
|
2575
2747
|
return [4 /*yield*/, this._queryStatementModel([
|
|
2576
2748
|
"".concat(this.$db.get('SELECT')),
|
|
2577
2749
|
"".concat(this.$db.get('FROM')),
|
|
@@ -2579,7 +2751,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
2579
2751
|
"".concat(this.$db.get('WHERE'))
|
|
2580
2752
|
].join(' '))];
|
|
2581
2753
|
case 8:
|
|
2582
|
-
data =
|
|
2754
|
+
data = _e.sent();
|
|
2583
2755
|
if ((data === null || data === void 0 ? void 0 : data.length) > 1) {
|
|
2584
2756
|
try {
|
|
2585
2757
|
for (data_2 = __values(data), data_2_1 = data_2.next(); !data_2_1.done; data_2_1 = data_2.next()) {
|
|
@@ -2587,12 +2759,12 @@ var Model = /** @class */ (function (_super) {
|
|
|
2587
2759
|
val.action_status = 'update';
|
|
2588
2760
|
}
|
|
2589
2761
|
}
|
|
2590
|
-
catch (
|
|
2762
|
+
catch (e_16_1) { e_16 = { error: e_16_1 }; }
|
|
2591
2763
|
finally {
|
|
2592
2764
|
try {
|
|
2593
|
-
if (data_2_1 && !data_2_1.done && (
|
|
2765
|
+
if (data_2_1 && !data_2_1.done && (_d = data_2.return)) _d.call(data_2);
|
|
2594
2766
|
}
|
|
2595
|
-
finally { if (
|
|
2767
|
+
finally { if (e_16) throw e_16.error; }
|
|
2596
2768
|
}
|
|
2597
2769
|
return [2 /*return*/, data || []];
|
|
2598
2770
|
}
|
|
@@ -2602,7 +2774,7 @@ var Model = /** @class */ (function (_super) {
|
|
|
2602
2774
|
{
|
|
2603
2775
|
return [2 /*return*/, null];
|
|
2604
2776
|
}
|
|
2605
|
-
|
|
2777
|
+
_e.label = 11;
|
|
2606
2778
|
case 11: return [2 /*return*/];
|
|
2607
2779
|
}
|
|
2608
2780
|
});
|
|
@@ -2655,6 +2827,14 @@ var Model = /** @class */ (function (_super) {
|
|
|
2655
2827
|
var functionName = __spreadArray([], __read(this.$logger.get()), false)[this.$logger.get().length - 2];
|
|
2656
2828
|
return functionName.replace(/([A-Z])/g, function (str) { return "_".concat(str.toLowerCase()); });
|
|
2657
2829
|
};
|
|
2830
|
+
Model.prototype._handleRelationsQuery = function (nameRelation, relation) {
|
|
2831
|
+
this.$db.set('RELATION', __spreadArray(__spreadArray([], __read(this.$db.get('RELATION')), false), [relation], false));
|
|
2832
|
+
this.with(nameRelation);
|
|
2833
|
+
var r = this.$db.get('WITH').find(function (data) { return data.name === nameRelation; });
|
|
2834
|
+
this._assertError(r == null, "relation ".concat(nameRelation, " not be register !"));
|
|
2835
|
+
this._assertError(!Object.values(this.$constants('RELATIONSHIP')).includes(r.relation), "unknown relationship in [".concat(this.$constants('RELATIONSHIP'), "] !"));
|
|
2836
|
+
return r;
|
|
2837
|
+
};
|
|
2658
2838
|
Model.prototype._initialModel = function () {
|
|
2659
2839
|
this.$db = this._setupModel();
|
|
2660
2840
|
this._tableName();
|
|
@@ -2674,6 +2854,10 @@ var Model = /** @class */ (function (_super) {
|
|
|
2674
2854
|
_this._assertError(!db.has(key), "can't set this [".concat(key, "]"));
|
|
2675
2855
|
db.set(key, value);
|
|
2676
2856
|
return;
|
|
2857
|
+
},
|
|
2858
|
+
clone: function (data) {
|
|
2859
|
+
db = new Map(Object.entries(__assign({}, data)));
|
|
2860
|
+
return;
|
|
2677
2861
|
}
|
|
2678
2862
|
};
|
|
2679
2863
|
};
|