@proteinjs/db 1.12.0 → 1.13.0
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/CHANGELOG.md +16 -0
- package/dist/src/schema/TableManager.d.ts.map +1 -1
- package/dist/src/schema/TableManager.js +13 -16
- package/dist/src/schema/TableManager.js.map +1 -1
- package/dist/src/transaction/Transaction.d.ts +8 -1
- package/dist/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/src/transaction/Transaction.js +44 -2
- package/dist/src/transaction/Transaction.js.map +1 -1
- package/package.json +2 -2
- package/src/schema/TableManager.ts +14 -16
- package/src/transaction/Transaction.ts +49 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.13.0](https://github.com/proteinjs/db/compare/@proteinjs/db@1.12.0...@proteinjs/db@1.13.0) (2025-03-28)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* simplify validation for column table name in validateDynamicReferenceColumns ([899d149](https://github.com/proteinjs/db/commit/899d149d87de7356ee488e169003a473a6f8b950))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* `Transaction.delete` added support for updating the cached db when a `QueryBuilder` with a `id IN string[]` condition is passed in. ([211ba0f](https://github.com/proteinjs/db/commit/211ba0f6dfa1e10c281b4c9d2367af57d695b956))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
# [1.12.0](https://github.com/proteinjs/db/compare/@proteinjs/db@1.11.0...@proteinjs/db@1.12.0) (2025-02-07)
|
|
7
23
|
|
|
8
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableManager.d.ts","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CAC3C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA+C;IACtD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;gBAGpC,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,CAAC,EAAE,cAAc;IAO3B,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,OAAO,CAAC,+BAA+B;
|
|
1
|
+
{"version":3,"file":"TableManager.d.ts","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CAC3C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA+C;IACtD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;gBAGpC,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,CAAC,EAAE,cAAc;IAO3B,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,OAAO,CAAC,+BAA+B;IAwDvC,OAAO,CAAC,gBAAgB;YAgBV,eAAe;YA6Ff,kBAAkB;CA6CjC"}
|
|
@@ -127,10 +127,10 @@ var TableManager = /** @class */ (function () {
|
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
129
|
var dynamicRefColumns = [];
|
|
130
|
-
var dynamicRefTableNameColumns =
|
|
131
|
-
//
|
|
130
|
+
var dynamicRefTableNameColumns = new Set();
|
|
131
|
+
// collect both dynamic reference columns and table name columns
|
|
132
132
|
Object.entries(table.columns).forEach(function (_a) {
|
|
133
|
-
var
|
|
133
|
+
var _ = _a[0], column = _a[1];
|
|
134
134
|
if (isDynamicRefColumn(column)) {
|
|
135
135
|
dynamicRefColumns.push({
|
|
136
136
|
columnName: column.name,
|
|
@@ -138,26 +138,23 @@ var TableManager = /** @class */ (function () {
|
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
140
|
else if (isDynamicRefTableNameColumn(column)) {
|
|
141
|
-
dynamicRefTableNameColumns.
|
|
141
|
+
dynamicRefTableNameColumns.add(column.name);
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
|
-
//
|
|
144
|
+
// Validate references and mark used table names
|
|
145
145
|
dynamicRefColumns.forEach(function (_a) {
|
|
146
146
|
var columnName = _a.columnName, tableColumnName = _a.tableColumnName;
|
|
147
|
-
if (!dynamicRefTableNameColumns.
|
|
147
|
+
if (!dynamicRefTableNameColumns.has(tableColumnName)) {
|
|
148
148
|
throw new Error("Table ".concat(table.name, " has a DynamicReferenceColumn '").concat(columnName, "' but is missing its required DynamicReferenceTableNameColumn '").concat(tableColumnName, "'"));
|
|
149
149
|
}
|
|
150
|
+
// Mark this table name column as used by removing it from the set
|
|
151
|
+
dynamicRefTableNameColumns.delete(tableColumnName);
|
|
150
152
|
});
|
|
151
|
-
//
|
|
152
|
-
dynamicRefTableNameColumns.
|
|
153
|
-
var
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
});
|
|
157
|
-
if (!hasMatchingRefColumn) {
|
|
158
|
-
throw new Error("Table ".concat(table.name, " has a DynamicReferenceTableNameColumn '").concat(tableNameColumnName, "' but no DynamicReferenceColumn references it"));
|
|
159
|
-
}
|
|
160
|
-
});
|
|
153
|
+
// Any remaining table name columns are unused
|
|
154
|
+
if (dynamicRefTableNameColumns.size > 0) {
|
|
155
|
+
var unusedColumn = dynamicRefTableNameColumns.values().next().value;
|
|
156
|
+
throw new Error("Table ".concat(table.name, " has a DynamicReferenceTableNameColumn '").concat(unusedColumn, "' but no DynamicReferenceColumn references it"));
|
|
157
|
+
}
|
|
161
158
|
};
|
|
162
159
|
TableManager.prototype.shouldAlterTable = function (tableChanges) {
|
|
163
160
|
if (tableChanges.columnsToCreate.length == 0 &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableManager.js","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TableManager.js","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,9 +58,16 @@ export declare class Transaction implements OperationQueue {
|
|
|
58
58
|
* Queue a delete.
|
|
59
59
|
*
|
|
60
60
|
* If a `QueryBuilder` is passed in for `query`, changes will not be made to the cached `db`.
|
|
61
|
-
* Passing in an `ObjectQuery` will update the cached `db`.
|
|
61
|
+
* Passing in an `ObjectQuery` or a `QueryBuilder` with a `id IN string[]` condition will update the cached `db`.
|
|
62
62
|
*/
|
|
63
63
|
delete<R extends Record = Record>(...args: Parameters<DbService<R>['delete']>): void;
|
|
64
|
+
/**
|
|
65
|
+
* If a QueryBuilder contains a condition like this:
|
|
66
|
+
* `{ field: 'id', operator: 'IN', value: string[] }`
|
|
67
|
+
* return the ids from the value.
|
|
68
|
+
* @param qb QueryBuilder
|
|
69
|
+
*/
|
|
70
|
+
private getIdsFromInCondition;
|
|
64
71
|
/**
|
|
65
72
|
* Run the operations in order (not a batch), as a single transaction.
|
|
66
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAe,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAyB,KAAK,EAAE,MAAM,UAAU,CAAC;AAIxD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACjD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;CACpH,CAAC;AAIF;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,cAAc;IAY9C,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,QAAQ,CAAC;IAbnB,8EAA8E;IAC9E,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAM;IAE3B;;;;OAIG;IACH,EAAE,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG;YAAE,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,CAAM;gBAG1C,QAAQ,CAAC,WAAU,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,IAAI,aAAA,EACnD,QAAQ,CAAC,WAAU,MAAM,GAAG,CAAC,cAAc,GAAG,iBAAiB,GAAG,KAAK,IAAI,aAAA,EAC3E,QAAQ,CAAC,WAAU,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,IAAI,aAAA;IAG7D;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM;;;IAQvB;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBhG;;;;;;;;OAQG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;IAwDpF;;;;;OAKG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAe,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAyB,KAAK,EAAE,MAAM,UAAU,CAAC;AAIxD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACjD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;CACpH,CAAC;AAIF;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,cAAc;IAY9C,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,QAAQ,CAAC;IAbnB,8EAA8E;IAC9E,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAM;IAE3B;;;;OAIG;IACH,EAAE,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG;YAAE,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,CAAM;gBAG1C,QAAQ,CAAC,WAAU,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,IAAI,aAAA,EACnD,QAAQ,CAAC,WAAU,MAAM,GAAG,CAAC,cAAc,GAAG,iBAAiB,GAAG,KAAK,IAAI,aAAA,EAC3E,QAAQ,CAAC,WAAU,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,IAAI,aAAA;IAG7D;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM;;;IAQvB;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBhG;;;;;;;;OAQG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;IAwDpF;;;;;OAKG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;IAoCpF;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
|
|
@@ -196,15 +196,28 @@ var Transaction = /** @class */ (function () {
|
|
|
196
196
|
* Queue a delete.
|
|
197
197
|
*
|
|
198
198
|
* If a `QueryBuilder` is passed in for `query`, changes will not be made to the cached `db`.
|
|
199
|
-
* Passing in an `ObjectQuery` will update the cached `db`.
|
|
199
|
+
* Passing in an `ObjectQuery` or a `QueryBuilder` with a `id IN string[]` condition will update the cached `db`.
|
|
200
200
|
*/
|
|
201
201
|
Transaction.prototype.delete = function () {
|
|
202
|
+
var _this = this;
|
|
202
203
|
var args = [];
|
|
203
204
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
204
205
|
args[_i] = arguments[_i];
|
|
205
206
|
}
|
|
206
207
|
var table = args[0], query = args[1];
|
|
207
|
-
if (
|
|
208
|
+
if ((0, util_1.isInstanceOf)(query, db_query_1.QueryBuilder)) {
|
|
209
|
+
// Process `id IN string[]` condition, if exists
|
|
210
|
+
var qb = query;
|
|
211
|
+
var recordMap_1 = this.recordMap(table.name);
|
|
212
|
+
var ids = this.getIdsFromInCondition(qb);
|
|
213
|
+
ids.forEach(function (id) {
|
|
214
|
+
if (_this.onDelete && recordMap_1[id]) {
|
|
215
|
+
_this.onDelete(table, recordMap_1[id]);
|
|
216
|
+
}
|
|
217
|
+
delete recordMap_1[id];
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
208
221
|
var objectQuery = query;
|
|
209
222
|
var recordMap = this.recordMap(table.name);
|
|
210
223
|
if (objectQuery.id) {
|
|
@@ -227,6 +240,35 @@ var Transaction = /** @class */ (function () {
|
|
|
227
240
|
}
|
|
228
241
|
this.ops.push({ name: 'delete', args: args });
|
|
229
242
|
};
|
|
243
|
+
/**
|
|
244
|
+
* If a QueryBuilder contains a condition like this:
|
|
245
|
+
* `{ field: 'id', operator: 'IN', value: string[] }`
|
|
246
|
+
* return the ids from the value.
|
|
247
|
+
* @param qb QueryBuilder
|
|
248
|
+
*/
|
|
249
|
+
Transaction.prototype.getIdsFromInCondition = function (qb) {
|
|
250
|
+
var filterIdInConditions = function (nodeId) {
|
|
251
|
+
var node = qb.graph.node(nodeId);
|
|
252
|
+
if (node.type !== 'CONDITION') {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
var condition = node;
|
|
256
|
+
if (condition.field !== 'id') {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
if (condition.operator !== 'IN') {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
return Array.isArray(condition.value) && typeof condition.value[0] === 'string';
|
|
263
|
+
};
|
|
264
|
+
var rootChildren = qb.graph.successors(qb.rootId) || [];
|
|
265
|
+
var idInConditionId = rootChildren.filter(filterIdInConditions)[0];
|
|
266
|
+
if (!idInConditionId) {
|
|
267
|
+
return [];
|
|
268
|
+
}
|
|
269
|
+
var value = qb.graph.node(idInConditionId).value;
|
|
270
|
+
return value;
|
|
271
|
+
};
|
|
230
272
|
/**
|
|
231
273
|
* Run the operations in order (not a batch), as a single transaction.
|
|
232
274
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAA2D;AAC3D,kCAAwD;AACxD,wCAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proteinjs/db",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "Db",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
},
|
|
50
50
|
"main": "./dist/generated/index.js",
|
|
51
51
|
"types": "./dist/generated/index.d.ts",
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "1308b6fed79e851b736b2c5da8d468c8b18b9cc6"
|
|
53
53
|
}
|
|
@@ -76,40 +76,38 @@ export class TableManager {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
const dynamicRefColumns: DynamicRefColumnInfo[] = [];
|
|
79
|
-
const dynamicRefTableNameColumns
|
|
79
|
+
const dynamicRefTableNameColumns = new Set<string>();
|
|
80
80
|
|
|
81
|
-
//
|
|
82
|
-
Object.entries(table.columns).forEach(([
|
|
81
|
+
// collect both dynamic reference columns and table name columns
|
|
82
|
+
Object.entries(table.columns).forEach(([_, column]) => {
|
|
83
83
|
if (isDynamicRefColumn(column)) {
|
|
84
84
|
dynamicRefColumns.push({
|
|
85
85
|
columnName: column.name,
|
|
86
86
|
tableColumnName: column.dynamicRefTableColName,
|
|
87
87
|
});
|
|
88
88
|
} else if (isDynamicRefTableNameColumn(column)) {
|
|
89
|
-
dynamicRefTableNameColumns.
|
|
89
|
+
dynamicRefTableNameColumns.add(column.name);
|
|
90
90
|
}
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
-
//
|
|
93
|
+
// Validate references and mark used table names
|
|
94
94
|
dynamicRefColumns.forEach(({ columnName, tableColumnName }) => {
|
|
95
|
-
if (!dynamicRefTableNameColumns.
|
|
95
|
+
if (!dynamicRefTableNameColumns.has(tableColumnName)) {
|
|
96
96
|
throw new Error(
|
|
97
97
|
`Table ${table.name} has a DynamicReferenceColumn '${columnName}' but is missing its required DynamicReferenceTableNameColumn '${tableColumnName}'`
|
|
98
98
|
);
|
|
99
99
|
}
|
|
100
|
+
// Mark this table name column as used by removing it from the set
|
|
101
|
+
dynamicRefTableNameColumns.delete(tableColumnName);
|
|
100
102
|
});
|
|
101
103
|
|
|
102
|
-
//
|
|
103
|
-
dynamicRefTableNameColumns.
|
|
104
|
-
const
|
|
105
|
-
|
|
104
|
+
// Any remaining table name columns are unused
|
|
105
|
+
if (dynamicRefTableNameColumns.size > 0) {
|
|
106
|
+
const unusedColumn = dynamicRefTableNameColumns.values().next().value;
|
|
107
|
+
throw new Error(
|
|
108
|
+
`Table ${table.name} has a DynamicReferenceTableNameColumn '${unusedColumn}' but no DynamicReferenceColumn references it`
|
|
106
109
|
);
|
|
107
|
-
|
|
108
|
-
throw new Error(
|
|
109
|
-
`Table ${table.name} has a DynamicReferenceTableNameColumn '${tableNameColumnName}' but no DynamicReferenceColumn references it`
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
110
|
+
}
|
|
113
111
|
}
|
|
114
112
|
|
|
115
113
|
private shouldAlterTable(tableChanges: TableChanges) {
|
|
@@ -3,7 +3,7 @@ import { DbService, ObjectQuery } from '../services/DbService';
|
|
|
3
3
|
import { getTransactionRunner } from './TransactionRunner';
|
|
4
4
|
import { addDefaultFieldValues, Table } from '../Table';
|
|
5
5
|
import { isInstanceOf } from '@proteinjs/util';
|
|
6
|
-
import { QueryBuilder } from '@proteinjs/db-query';
|
|
6
|
+
import { Condition, QueryBuilder } from '@proteinjs/db-query';
|
|
7
7
|
|
|
8
8
|
export type OperationQueue<R extends Record = Record> = {
|
|
9
9
|
insert: (...args: Parameters<DbService<R>['insert']>) => Promise<R>;
|
|
@@ -144,11 +144,22 @@ export class Transaction implements OperationQueue {
|
|
|
144
144
|
* Queue a delete.
|
|
145
145
|
*
|
|
146
146
|
* If a `QueryBuilder` is passed in for `query`, changes will not be made to the cached `db`.
|
|
147
|
-
* Passing in an `ObjectQuery` will update the cached `db`.
|
|
147
|
+
* Passing in an `ObjectQuery` or a `QueryBuilder` with a `id IN string[]` condition will update the cached `db`.
|
|
148
148
|
*/
|
|
149
149
|
delete<R extends Record = Record>(...args: Parameters<DbService<R>['delete']>): void {
|
|
150
150
|
const [table, query] = args;
|
|
151
|
-
if (
|
|
151
|
+
if (isInstanceOf(query, QueryBuilder)) {
|
|
152
|
+
// Process `id IN string[]` condition, if exists
|
|
153
|
+
const qb = query as QueryBuilder;
|
|
154
|
+
const recordMap = this.recordMap(table.name);
|
|
155
|
+
const ids = this.getIdsFromInCondition(qb);
|
|
156
|
+
ids.forEach((id) => {
|
|
157
|
+
if (this.onDelete && recordMap[id]) {
|
|
158
|
+
this.onDelete(table, recordMap[id]);
|
|
159
|
+
}
|
|
160
|
+
delete recordMap[id];
|
|
161
|
+
});
|
|
162
|
+
} else {
|
|
152
163
|
const objectQuery = query as ObjectQuery<any>;
|
|
153
164
|
const recordMap = this.recordMap(table.name);
|
|
154
165
|
if (objectQuery.id) {
|
|
@@ -171,6 +182,41 @@ export class Transaction implements OperationQueue {
|
|
|
171
182
|
this.ops.push({ name: 'delete', args });
|
|
172
183
|
}
|
|
173
184
|
|
|
185
|
+
/**
|
|
186
|
+
* If a QueryBuilder contains a condition like this:
|
|
187
|
+
* `{ field: 'id', operator: 'IN', value: string[] }`
|
|
188
|
+
* return the ids from the value.
|
|
189
|
+
* @param qb QueryBuilder
|
|
190
|
+
*/
|
|
191
|
+
private getIdsFromInCondition(qb: QueryBuilder): string[] {
|
|
192
|
+
const filterIdInConditions = (nodeId: string): boolean => {
|
|
193
|
+
const node: any = qb.graph.node(nodeId);
|
|
194
|
+
if (node.type !== 'CONDITION') {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const condition = node as Condition<any>;
|
|
199
|
+
if (condition.field !== 'id') {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (condition.operator !== 'IN') {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return Array.isArray(condition.value) && typeof condition.value[0] === 'string';
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const rootChildren: string[] = qb.graph.successors(qb.rootId) || [];
|
|
211
|
+
const idInConditionId = rootChildren.filter(filterIdInConditions)[0];
|
|
212
|
+
if (!idInConditionId) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const { value } = qb.graph.node(idInConditionId) as Condition<any>;
|
|
217
|
+
return value;
|
|
218
|
+
}
|
|
219
|
+
|
|
174
220
|
/**
|
|
175
221
|
* Run the operations in order (not a batch), as a single transaction.
|
|
176
222
|
*/
|