@carbonorm/carbonnode 6.0.2 → 6.0.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/executors/SqlExecutor.d.ts +2 -15
- package/dist/index.cjs.js +78 -17
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +78 -17
- package/dist/index.esm.js.map +1 -1
- package/dist/types/ormInterfaces.d.ts +16 -4
- package/package.json +2 -2
- package/src/__tests__/sakila-db/C6.js +1 -1
- package/src/__tests__/sakila-db/C6.mysqldump.json +1 -1
- package/src/__tests__/sakila-db/C6.mysqldump.sql +1 -1
- package/src/__tests__/sakila-db/C6.ts +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.json +4 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.lookup.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.address.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.json +6 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.category.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.json +3 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.json +3 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.json +3 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.json +6 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.film.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.json +3 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.latest.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.lookup.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.json +3 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.json +3 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.delete.json +1 -0
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.json +4 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.json +2 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.lookup.json +3 -3
- package/src/executors/SqlExecutor.ts +98 -21
- package/src/types/ormInterfaces.ts +16 -6
package/dist/index.esm.js
CHANGED
|
@@ -581,7 +581,6 @@ var eFetchDependencies;
|
|
|
581
581
|
eFetchDependencies[eFetchDependencies["RECURSIVE"] = 8] = "RECURSIVE";
|
|
582
582
|
})(eFetchDependencies || (eFetchDependencies = {}));
|
|
583
583
|
|
|
584
|
-
// Refined TypeScript types for CarbonORM
|
|
585
584
|
var POST = 'POST';
|
|
586
585
|
var PUT = 'PUT';
|
|
587
586
|
var GET = 'GET';
|
|
@@ -3129,21 +3128,21 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
3129
3128
|
case 3: return [4 /*yield*/, this.runQuery()];
|
|
3130
3129
|
case 4:
|
|
3131
3130
|
result = _b.sent();
|
|
3132
|
-
return [4 /*yield*/, this.broadcastWebsocketIfConfigured()];
|
|
3131
|
+
return [4 /*yield*/, this.broadcastWebsocketIfConfigured(result)];
|
|
3133
3132
|
case 5:
|
|
3134
3133
|
_b.sent();
|
|
3135
3134
|
return [2 /*return*/, result];
|
|
3136
3135
|
case 6: return [4 /*yield*/, this.runQuery()];
|
|
3137
3136
|
case 7:
|
|
3138
3137
|
result = _b.sent();
|
|
3139
|
-
return [4 /*yield*/, this.broadcastWebsocketIfConfigured()];
|
|
3138
|
+
return [4 /*yield*/, this.broadcastWebsocketIfConfigured(result)];
|
|
3140
3139
|
case 8:
|
|
3141
3140
|
_b.sent();
|
|
3142
3141
|
return [2 /*return*/, result];
|
|
3143
3142
|
case 9: return [4 /*yield*/, this.runQuery()];
|
|
3144
3143
|
case 10:
|
|
3145
3144
|
result = _b.sent();
|
|
3146
|
-
return [4 /*yield*/, this.broadcastWebsocketIfConfigured()];
|
|
3145
|
+
return [4 /*yield*/, this.broadcastWebsocketIfConfigured(result)];
|
|
3147
3146
|
case 11:
|
|
3148
3147
|
_b.sent();
|
|
3149
3148
|
return [2 /*return*/, result];
|
|
@@ -3252,8 +3251,9 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
3252
3251
|
var _a, _b;
|
|
3253
3252
|
var request = this.request;
|
|
3254
3253
|
if (this.config.requestMethod === C6Constants.POST) {
|
|
3255
|
-
|
|
3256
|
-
|
|
3254
|
+
var insertRows = request.dataInsertMultipleRows;
|
|
3255
|
+
if (Array.isArray(insertRows) && insertRows.length > 0) {
|
|
3256
|
+
return insertRows[0];
|
|
3257
3257
|
}
|
|
3258
3258
|
if (C6Constants.INSERT in request) {
|
|
3259
3259
|
return (_a = request[C6Constants.INSERT]) !== null && _a !== void 0 ? _a : {};
|
|
@@ -3314,34 +3314,94 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
3314
3314
|
}
|
|
3315
3315
|
return Object.keys(pkValues).length > 0 ? pkValues : null;
|
|
3316
3316
|
};
|
|
3317
|
-
SqlExecutor.prototype.
|
|
3317
|
+
SqlExecutor.prototype.extractPrimaryKeyValuesFromData = function (data) {
|
|
3318
|
+
if (!data)
|
|
3319
|
+
return null;
|
|
3320
|
+
var row = Array.isArray(data) ? data[0] : data;
|
|
3321
|
+
if (!row || typeof row !== "object")
|
|
3322
|
+
return null;
|
|
3323
|
+
var pkShorts = this.config.restModel.PRIMARY_SHORT;
|
|
3324
|
+
var columns = this.config.restModel.COLUMNS;
|
|
3325
|
+
var pkValues = {};
|
|
3326
|
+
var _loop_2 = function (pk) {
|
|
3327
|
+
if (pk in row) {
|
|
3328
|
+
pkValues[pk] = row[pk];
|
|
3329
|
+
return "continue";
|
|
3330
|
+
}
|
|
3331
|
+
var fullKey = Object.keys(columns).find(function (key) { return columns[key] === pk; });
|
|
3332
|
+
if (fullKey && fullKey in row) {
|
|
3333
|
+
pkValues[pk] = row[fullKey];
|
|
3334
|
+
}
|
|
3335
|
+
};
|
|
3336
|
+
for (var _i = 0, pkShorts_1 = pkShorts; _i < pkShorts_1.length; _i++) {
|
|
3337
|
+
var pk = pkShorts_1[_i];
|
|
3338
|
+
_loop_2(pk);
|
|
3339
|
+
}
|
|
3340
|
+
if (pkShorts.length > 0 && Object.keys(pkValues).length < pkShorts.length) {
|
|
3341
|
+
return null;
|
|
3342
|
+
}
|
|
3343
|
+
return Object.keys(pkValues).length > 0 ? pkValues : null;
|
|
3344
|
+
};
|
|
3345
|
+
SqlExecutor.prototype.broadcastWebsocketIfConfigured = function (response) {
|
|
3318
3346
|
return __awaiter(this, void 0, void 0, function () {
|
|
3319
|
-
var broadcast, payload, error_1;
|
|
3347
|
+
var broadcast, normalizedRequest, pkShorts, columns, validColumns, responseRest, responsePrimaryKey, insertId, synthesizedRequest, now, synthesized, payload, error_1;
|
|
3320
3348
|
var _a, _b;
|
|
3321
|
-
|
|
3322
|
-
|
|
3349
|
+
var _c, _d, _e;
|
|
3350
|
+
return __generator(this, function (_f) {
|
|
3351
|
+
switch (_f.label) {
|
|
3323
3352
|
case 0:
|
|
3324
3353
|
broadcast = this.config.websocketBroadcast;
|
|
3325
3354
|
if (!broadcast || this.config.requestMethod === C6Constants.GET)
|
|
3326
3355
|
return [2 /*return*/];
|
|
3356
|
+
normalizedRequest = this.normalizeRequestPayload(this.extractRequestBody());
|
|
3357
|
+
pkShorts = (_c = this.config.restModel.PRIMARY_SHORT) !== null && _c !== void 0 ? _c : [];
|
|
3358
|
+
columns = this.config.restModel.COLUMNS;
|
|
3359
|
+
validColumns = new Set(Object.values(columns));
|
|
3360
|
+
responseRest = response === null || response === void 0 ? void 0 : response.rest;
|
|
3361
|
+
responsePrimaryKey = this.extractPrimaryKeyValuesFromData(responseRest);
|
|
3362
|
+
if ((responseRest === null || (Array.isArray(responseRest) && responseRest.length === 0))
|
|
3363
|
+
&& this.config.requestMethod === C6Constants.POST) {
|
|
3364
|
+
insertId = response === null || response === void 0 ? void 0 : response.insertId;
|
|
3365
|
+
if (insertId !== undefined && pkShorts.length === 1) {
|
|
3366
|
+
synthesizedRequest = __assign({}, normalizedRequest);
|
|
3367
|
+
now = new Date().toISOString();
|
|
3368
|
+
if (validColumns.has("changed_at") && synthesizedRequest.changed_at === undefined) {
|
|
3369
|
+
synthesizedRequest.changed_at = now;
|
|
3370
|
+
}
|
|
3371
|
+
if (validColumns.has("created_at") && synthesizedRequest.created_at === undefined) {
|
|
3372
|
+
synthesizedRequest.created_at = now;
|
|
3373
|
+
}
|
|
3374
|
+
if (validColumns.has("updated_at") && synthesizedRequest.updated_at === undefined) {
|
|
3375
|
+
synthesizedRequest.updated_at = now;
|
|
3376
|
+
}
|
|
3377
|
+
synthesized = __assign(__assign({}, synthesizedRequest), (_a = {}, _a[pkShorts[0]] = insertId, _a));
|
|
3378
|
+
// @ts-ignore - todo
|
|
3379
|
+
responseRest = [synthesized];
|
|
3380
|
+
responsePrimaryKey = (_b = {},
|
|
3381
|
+
_b[pkShorts[0]] = insertId,
|
|
3382
|
+
_b);
|
|
3383
|
+
}
|
|
3384
|
+
}
|
|
3327
3385
|
payload = {
|
|
3328
3386
|
REST: {
|
|
3329
3387
|
TABLE_NAME: this.config.restModel.TABLE_NAME,
|
|
3330
|
-
TABLE_PREFIX: (
|
|
3388
|
+
TABLE_PREFIX: (_e = (_d = this.config.C6) === null || _d === void 0 ? void 0 : _d.PREFIX) !== null && _e !== void 0 ? _e : "",
|
|
3331
3389
|
METHOD: this.config.requestMethod,
|
|
3332
|
-
REQUEST:
|
|
3390
|
+
REQUEST: normalizedRequest,
|
|
3333
3391
|
REQUEST_PRIMARY_KEY: this.extractPrimaryKeyValues(),
|
|
3392
|
+
RESPONSE: responseRest,
|
|
3393
|
+
RESPONSE_PRIMARY_KEY: responsePrimaryKey,
|
|
3334
3394
|
},
|
|
3335
3395
|
};
|
|
3336
|
-
|
|
3396
|
+
_f.label = 1;
|
|
3337
3397
|
case 1:
|
|
3338
|
-
|
|
3398
|
+
_f.trys.push([1, 3, , 4]);
|
|
3339
3399
|
return [4 /*yield*/, broadcast(payload)];
|
|
3340
3400
|
case 2:
|
|
3341
|
-
|
|
3401
|
+
_f.sent();
|
|
3342
3402
|
return [3 /*break*/, 4];
|
|
3343
3403
|
case 3:
|
|
3344
|
-
error_1 =
|
|
3404
|
+
error_1 = _f.sent();
|
|
3345
3405
|
if (this.config.verbose) {
|
|
3346
3406
|
console.error("[SQL EXECUTOR] websocketBroadcast failed", error_1);
|
|
3347
3407
|
}
|
|
@@ -3402,7 +3462,8 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
3402
3462
|
this.config.verbose && console.log("[SQL EXECUTOR] \u270F\uFE0F Rows affected:", result.affectedRows);
|
|
3403
3463
|
return [2 /*return*/, {
|
|
3404
3464
|
affected: result.affectedRows,
|
|
3405
|
-
|
|
3465
|
+
insertId: result.insertId,
|
|
3466
|
+
rest: [], // TODO - remove rest empty array from non-GET responses?
|
|
3406
3467
|
sql: { sql: sql, values: values }
|
|
3407
3468
|
}];
|
|
3408
3469
|
}
|