@carbonorm/carbonnode 6.0.17 → 6.0.18
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/index.cjs.js +42 -6
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +42 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/types/ormInterfaces.d.ts +1 -0
- package/dist/utils/cacheManager.d.ts +1 -0
- package/package.json +2 -2
- package/src/__tests__/httpExecutor.cacheEviction.test.ts +70 -0
- 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.post.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.lookup.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.latest.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.lookup.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.join.json +10 -10
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.lookup.json +3 -3
- package/src/__tests__/sqlExecutor.cacheEviction.test.ts +79 -0
- package/src/executors/HttpExecutor.ts +19 -3
- package/src/executors/SqlExecutor.ts +23 -5
- package/src/types/ormInterfaces.ts +4 -1
- package/src/utils/cacheManager.ts +9 -0
package/dist/index.cjs.js
CHANGED
|
@@ -954,7 +954,7 @@ function colorSql(sql) {
|
|
|
954
954
|
return s;
|
|
955
955
|
}
|
|
956
956
|
|
|
957
|
-
var version = "6.0.
|
|
957
|
+
var version = "6.0.18";
|
|
958
958
|
|
|
959
959
|
var DEFAULT_STEP = 8;
|
|
960
960
|
function parseSemver(version) {
|
|
@@ -1140,6 +1140,10 @@ function setCache(method, tableName, requestData, cacheEntry) {
|
|
|
1140
1140
|
var key = makeCacheKey(method, tableName, requestData);
|
|
1141
1141
|
apiRequestCache.set(key, cacheEntry);
|
|
1142
1142
|
}
|
|
1143
|
+
function evictCacheEntry(method, tableName, requestData) {
|
|
1144
|
+
var key = makeCacheKey(method, tableName, requestData);
|
|
1145
|
+
return apiRequestCache.delete(key);
|
|
1146
|
+
}
|
|
1143
1147
|
|
|
1144
1148
|
function sortAndSerializeQueryObject(tables, query) {
|
|
1145
1149
|
var orderedQuery = Object.keys(query).sort().reduce(function (obj, key) {
|
|
@@ -1265,7 +1269,7 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1265
1269
|
}
|
|
1266
1270
|
query = this.request;
|
|
1267
1271
|
apiRequest = function () { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
1268
|
-
var _a, debug, _b, cacheResults, dataInsertMultipleRows, success, _c, fetchDependencies, _d, error, cachingConfirmed, cacheRequestData, querySerialized, cachedRequest, apiResponse, restRequestUri, needsConditionOrPrimaryCheck, TABLES, primaryKeyList, primaryKeyFullyQualified, primaryKey, whereVal, whereIsEmpty, providedPrimary, primaryVal, axiosActiveRequest_1;
|
|
1272
|
+
var _a, debug, _b, cacheResults, dataInsertMultipleRows, success, _c, fetchDependencies, _d, error, cachingConfirmed, cacheRequestData, evictFromCache, querySerialized, cachedRequest, cachedData, apiResponse, restRequestUri, needsConditionOrPrimaryCheck, TABLES, primaryKeyList, primaryKeyFullyQualified, primaryKey, whereVal, whereIsEmpty, providedPrimary, primaryVal, axiosActiveRequest_1;
|
|
1269
1273
|
var _e;
|
|
1270
1274
|
var _this = this;
|
|
1271
1275
|
var _f, _g, _h, _j, _k, _l;
|
|
@@ -1295,6 +1299,9 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1295
1299
|
query[C6.PAGINATION][C6.LIMIT] = query[C6.PAGINATION][C6.LIMIT] || 100;
|
|
1296
1300
|
}
|
|
1297
1301
|
cacheRequestData = JSON.parse(JSON.stringify(query !== null && query !== void 0 ? query : {}));
|
|
1302
|
+
evictFromCache = requestMethod === GET && cacheResults
|
|
1303
|
+
? function () { return evictCacheEntry(requestMethod, tableName, cacheRequestData); }
|
|
1304
|
+
: undefined;
|
|
1298
1305
|
querySerialized = sortAndSerializeQueryObject(tables, cacheRequestData !== null && cacheRequestData !== void 0 ? cacheRequestData : {});
|
|
1299
1306
|
cachedRequest = false;
|
|
1300
1307
|
if (cacheResults) {
|
|
@@ -1302,7 +1309,15 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1302
1309
|
}
|
|
1303
1310
|
if (!cachedRequest) return [3 /*break*/, 2];
|
|
1304
1311
|
return [4 /*yield*/, cachedRequest];
|
|
1305
|
-
case 1:
|
|
1312
|
+
case 1:
|
|
1313
|
+
cachedData = (_m.sent()).data;
|
|
1314
|
+
if (evictFromCache
|
|
1315
|
+
&& cachedData
|
|
1316
|
+
&& typeof cachedData === "object"
|
|
1317
|
+
&& Array.isArray(cachedData.rest)) {
|
|
1318
|
+
cachedData.evictFromCache = evictFromCache;
|
|
1319
|
+
}
|
|
1320
|
+
return [2 /*return*/, cachedData];
|
|
1306
1321
|
case 2:
|
|
1307
1322
|
if (cacheResults) {
|
|
1308
1323
|
cachingConfirmed = true;
|
|
@@ -1493,7 +1508,7 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1493
1508
|
else {
|
|
1494
1509
|
callback();
|
|
1495
1510
|
}
|
|
1496
|
-
if (!(
|
|
1511
|
+
if (!(requestMethod === GET && this.isRestResponse(response))) return [3 /*break*/, 2];
|
|
1497
1512
|
responseData_1 = response.data;
|
|
1498
1513
|
pageLimit = (_a = query === null || query === void 0 ? void 0 : query[C6.PAGINATION]) === null || _a === void 0 ? void 0 : _a[C6.LIMIT];
|
|
1499
1514
|
got = responseData_1.rest.length;
|
|
@@ -1504,6 +1519,9 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1504
1519
|
else {
|
|
1505
1520
|
responseData_1.next = undefined; // short page => done
|
|
1506
1521
|
}
|
|
1522
|
+
if (cachingConfirmed && evictFromCache) {
|
|
1523
|
+
responseData_1.evictFromCache = evictFromCache;
|
|
1524
|
+
}
|
|
1507
1525
|
if (cachingConfirmed) {
|
|
1508
1526
|
setCache(requestMethod, tableName, cacheRequestData, {
|
|
1509
1527
|
requestArgumentsSerialized: querySerialized,
|
|
@@ -4070,7 +4088,7 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
4070
4088
|
};
|
|
4071
4089
|
SqlExecutor.prototype.runQuery = function () {
|
|
4072
4090
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
4073
|
-
var method, tableName, logContext, cacheResults, cacheRequestData, requestArgumentsSerialized, cachedRequest, sqlExecution, sqlMethod, queryPromise, cacheRequest, cacheResponse;
|
|
4091
|
+
var method, tableName, logContext, cacheResults, cacheRequestData, requestArgumentsSerialized, evictFromCache, cachedRequest, cachedData, sqlExecution, sqlMethod, queryPromise, cacheRequest, cacheResponse;
|
|
4074
4092
|
var _this = this;
|
|
4075
4093
|
var _a, _b;
|
|
4076
4094
|
return tslib.__generator(this, function (_c) {
|
|
@@ -4087,11 +4105,22 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
4087
4105
|
requestArgumentsSerialized = cacheResults
|
|
4088
4106
|
? sortAndSerializeQueryObject(tableName, cacheRequestData !== null && cacheRequestData !== void 0 ? cacheRequestData : {})
|
|
4089
4107
|
: undefined;
|
|
4108
|
+
evictFromCache = method === C6Constants.GET && cacheResults && cacheRequestData
|
|
4109
|
+
? function () { return evictCacheEntry(method, tableName, cacheRequestData); }
|
|
4110
|
+
: undefined;
|
|
4090
4111
|
if (!cacheResults) return [3 /*break*/, 2];
|
|
4091
4112
|
cachedRequest = checkCache(method, tableName, cacheRequestData, logContext);
|
|
4092
4113
|
if (!cachedRequest) return [3 /*break*/, 2];
|
|
4093
4114
|
return [4 /*yield*/, cachedRequest];
|
|
4094
|
-
case 1:
|
|
4115
|
+
case 1:
|
|
4116
|
+
cachedData = (_c.sent()).data;
|
|
4117
|
+
if (evictFromCache
|
|
4118
|
+
&& cachedData
|
|
4119
|
+
&& typeof cachedData === "object"
|
|
4120
|
+
&& Array.isArray(cachedData.rest)) {
|
|
4121
|
+
cachedData.evictFromCache = evictFromCache;
|
|
4122
|
+
}
|
|
4123
|
+
return [2 /*return*/, cachedData];
|
|
4095
4124
|
case 2:
|
|
4096
4125
|
sqlExecution = this.buildSqlExecutionContext(method, tableName, logContext);
|
|
4097
4126
|
sqlMethod = this.resolveSqlLogMethod(method, sqlExecution.sql);
|
|
@@ -4105,6 +4134,12 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
4105
4134
|
case 3: return [2 /*return*/, _c.sent()];
|
|
4106
4135
|
case 4:
|
|
4107
4136
|
cacheRequest = queryPromise.then(function (data) {
|
|
4137
|
+
if (evictFromCache
|
|
4138
|
+
&& data
|
|
4139
|
+
&& typeof data === "object"
|
|
4140
|
+
&& Array.isArray(data.rest)) {
|
|
4141
|
+
data.evictFromCache = evictFromCache;
|
|
4142
|
+
}
|
|
4108
4143
|
return _this.createCacheResponseEnvelope(method, tableName, data);
|
|
4109
4144
|
});
|
|
4110
4145
|
setCache(method, tableName, cacheRequestData, {
|
|
@@ -4576,6 +4611,7 @@ exports.derivedTable = derivedTable;
|
|
|
4576
4611
|
exports.determineRuntimeJsType = determineRuntimeJsType;
|
|
4577
4612
|
exports.distSphere = distSphere;
|
|
4578
4613
|
exports.error = error;
|
|
4614
|
+
exports.evictCacheEntry = evictCacheEntry;
|
|
4579
4615
|
exports.extractSqlEntries = extractSqlEntries;
|
|
4580
4616
|
exports.fieldEq = fieldEq;
|
|
4581
4617
|
exports.getEnv = getEnv;
|