@aws-amplify/datastore 3.12.6-next.13 → 3.12.6-next.32
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 +58 -0
- package/lib/authModeStrategies/multiAuthStrategy.js +17 -64
- package/lib/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/lib/datastore/datastore.js +682 -469
- package/lib/datastore/datastore.js.map +1 -1
- package/lib/index.js +2 -4
- package/lib/index.js.map +1 -1
- package/lib/predicates/index.js +12 -2
- package/lib/predicates/index.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageAdapter.js +393 -298
- package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageDatabase.js +97 -122
- package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib/storage/adapter/InMemoryStore.js +16 -67
- package/lib/storage/adapter/InMemoryStore.js.map +1 -1
- package/lib/storage/adapter/InMemoryStore.native.js +2 -4
- package/lib/storage/adapter/InMemoryStore.native.js.map +1 -1
- package/lib/storage/adapter/IndexedDBAdapter.js +497 -404
- package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib/storage/adapter/getDefaultAdapter/index.js +3 -5
- package/lib/storage/adapter/getDefaultAdapter/index.js.map +1 -1
- package/lib/storage/adapter/getDefaultAdapter/index.native.js +2 -4
- package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
- package/lib/storage/storage.js +129 -151
- package/lib/storage/storage.js.map +1 -1
- package/lib/sync/datastoreConnectivity.js +13 -17
- package/lib/sync/datastoreConnectivity.js.map +1 -1
- package/lib/sync/datastoreReachability/index.native.js +2 -4
- package/lib/sync/datastoreReachability/index.native.js.map +1 -1
- package/lib/sync/index.js +544 -488
- package/lib/sync/index.js.map +1 -1
- package/lib/sync/merger.js +21 -80
- package/lib/sync/merger.js.map +1 -1
- package/lib/sync/outbox.js +95 -162
- package/lib/sync/outbox.js.map +1 -1
- package/lib/sync/processors/errorMaps.js +4 -34
- package/lib/sync/processors/errorMaps.js.map +1 -1
- package/lib/sync/processors/mutation.js +285 -312
- package/lib/sync/processors/mutation.js.map +1 -1
- package/lib/sync/processors/subscription.js +218 -259
- package/lib/sync/processors/subscription.js.map +1 -1
- package/lib/sync/processors/sync.js +141 -212
- package/lib/sync/processors/sync.js.map +1 -1
- package/lib/sync/utils.js +50 -61
- package/lib/sync/utils.js.map +1 -1
- package/lib/types.js +13 -39
- package/lib/types.js.map +1 -1
- package/lib/util.js +429 -242
- package/lib/util.js.map +1 -1
- package/lib-esm/authModeStrategies/multiAuthStrategy.d.ts +11 -0
- package/lib-esm/authModeStrategies/multiAuthStrategy.js +13 -57
- package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/lib-esm/datastore/datastore.d.ts +107 -17
- package/lib-esm/datastore/datastore.js +649 -433
- package/lib-esm/datastore/datastore.js.map +1 -1
- package/lib-esm/index.d.ts +3 -19
- package/lib-esm/predicates/index.d.ts +3 -2
- package/lib-esm/predicates/index.js +13 -3
- package/lib-esm/predicates/index.js.map +1 -1
- package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +4 -3
- package/lib-esm/storage/adapter/AsyncStorageAdapter.js +356 -258
- package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib-esm/storage/adapter/AsyncStorageDatabase.d.ts +14 -4
- package/lib-esm/storage/adapter/AsyncStorageDatabase.js +67 -92
- package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib-esm/storage/adapter/InMemoryStore.js +1 -52
- package/lib-esm/storage/adapter/InMemoryStore.js.map +1 -1
- package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +26 -4
- package/lib-esm/storage/adapter/IndexedDBAdapter.js +446 -346
- package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib-esm/storage/adapter/index.d.ts +1 -1
- package/lib-esm/storage/storage.d.ts +1 -1
- package/lib-esm/storage/storage.js +94 -113
- package/lib-esm/storage/storage.js.map +1 -1
- package/lib-esm/sync/datastoreConnectivity.d.ts +1 -0
- package/lib-esm/sync/datastoreConnectivity.js +10 -11
- package/lib-esm/sync/datastoreConnectivity.js.map +1 -1
- package/lib-esm/sync/index.d.ts +31 -5
- package/lib-esm/sync/index.js +525 -466
- package/lib-esm/sync/index.js.map +1 -1
- package/lib-esm/sync/merger.d.ts +9 -3
- package/lib-esm/sync/merger.js +14 -73
- package/lib-esm/sync/merger.js.map +1 -1
- package/lib-esm/sync/outbox.d.ts +2 -2
- package/lib-esm/sync/outbox.js +79 -146
- package/lib-esm/sync/outbox.js.map +1 -1
- package/lib-esm/sync/processors/errorMaps.js +1 -31
- package/lib-esm/sync/processors/errorMaps.js.map +1 -1
- package/lib-esm/sync/processors/mutation.d.ts +2 -0
- package/lib-esm/sync/processors/mutation.js +271 -295
- package/lib-esm/sync/processors/mutation.js.map +1 -1
- package/lib-esm/sync/processors/subscription.d.ts +2 -0
- package/lib-esm/sync/processors/subscription.js +214 -245
- package/lib-esm/sync/processors/subscription.js.map +1 -1
- package/lib-esm/sync/processors/sync.d.ts +2 -1
- package/lib-esm/sync/processors/sync.js +127 -195
- package/lib-esm/sync/processors/sync.js.map +1 -1
- package/lib-esm/sync/utils.d.ts +3 -2
- package/lib-esm/sync/utils.js +45 -57
- package/lib-esm/sync/utils.js.map +1 -1
- package/lib-esm/types.d.ts +65 -26
- package/lib-esm/types.js +10 -38
- package/lib-esm/types.js.map +1 -1
- package/lib-esm/util.d.ts +67 -24
- package/lib-esm/util.js +420 -233
- package/lib-esm/util.js.map +1 -1
- package/package.json +14 -7
- package/src/authModeStrategies/multiAuthStrategy.ts +12 -1
- package/src/datastore/datastore.ts +798 -397
- package/src/predicates/index.ts +32 -10
- package/src/storage/adapter/AsyncStorageAdapter.ts +309 -93
- package/src/storage/adapter/AsyncStorageDatabase.ts +74 -26
- package/src/storage/adapter/IndexedDBAdapter.ts +358 -134
- package/src/storage/adapter/index.ts +1 -1
- package/src/storage/storage.ts +69 -22
- package/src/sync/datastoreConnectivity.ts +6 -0
- package/src/sync/index.ts +521 -412
- package/src/sync/merger.ts +20 -4
- package/src/sync/outbox.ts +22 -9
- package/src/sync/processors/mutation.ts +188 -150
- package/src/sync/processors/subscription.ts +289 -253
- package/src/sync/processors/sync.ts +151 -138
- package/src/sync/utils.ts +67 -12
- package/src/types.ts +182 -30
- package/src/util.ts +505 -176
- package/build.js +0 -5
- package/dist/aws-amplify-datastore.js +0 -98255
- package/dist/aws-amplify-datastore.js.map +0 -1
- package/dist/aws-amplify-datastore.min.js +0 -66
- package/dist/aws-amplify-datastore.min.js.map +0 -1
- package/index.js +0 -7
- package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
- package/lib/authModeStrategies/index.d.ts +0 -2
- package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -2
- package/lib/datastore/datastore.d.ts +0 -66
- package/lib/index.d.ts +0 -31
- package/lib/predicates/index.d.ts +0 -15
- package/lib/predicates/sort.d.ts +0 -8
- package/lib/ssr/index.d.ts +0 -3
- package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -40
- package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -29
- package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
- package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
- package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -37
- package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
- package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
- package/lib/storage/adapter/index.d.ts +0 -9
- package/lib/storage/storage.d.ts +0 -49
- package/lib/sync/datastoreConnectivity.d.ts +0 -15
- package/lib/sync/datastoreReachability/index.d.ts +0 -3
- package/lib/sync/datastoreReachability/index.native.d.ts +0 -3
- package/lib/sync/index.d.ts +0 -63
- package/lib/sync/merger.d.ts +0 -11
- package/lib/sync/outbox.d.ts +0 -27
- package/lib/sync/processors/errorMaps.d.ts +0 -17
- package/lib/sync/processors/mutation.d.ts +0 -56
- package/lib/sync/processors/subscription.d.ts +0 -31
- package/lib/sync/processors/sync.d.ts +0 -27
- package/lib/sync/utils.d.ts +0 -41
- package/lib/types.d.ts +0 -462
- package/lib/util.d.ts +0 -113
- package/webpack.config.dev.js +0 -6
|
@@ -1,64 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
39
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
40
|
-
var m = o[Symbol.asyncIterator], i;
|
|
41
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
42
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
43
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
44
|
-
};
|
|
45
|
-
var __values = (this && this.__values) || function(o) {
|
|
46
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
47
|
-
if (m) return m.call(o);
|
|
48
|
-
if (o && typeof o.length === "number") return {
|
|
49
|
-
next: function () {
|
|
50
|
-
if (o && i >= o.length) o = void 0;
|
|
51
|
-
return { value: o && o[i++], done: !o };
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
55
|
-
};
|
|
56
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
57
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
58
|
-
};
|
|
59
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
60
4
|
var core_1 = require("@aws-amplify/core");
|
|
61
|
-
var AsyncStorageDatabase_1 = __importDefault(require("./AsyncStorageDatabase"));
|
|
5
|
+
var AsyncStorageDatabase_1 = tslib_1.__importDefault(require("./AsyncStorageDatabase"));
|
|
62
6
|
var predicates_1 = require("../../predicates");
|
|
63
7
|
var types_1 = require("../../types");
|
|
64
8
|
var util_1 = require("../../util");
|
|
@@ -69,17 +13,25 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
69
13
|
AsyncStorageAdapter.prototype.getStorenameForModel = function (modelConstructor) {
|
|
70
14
|
var namespace = this.namespaceResolver(modelConstructor);
|
|
71
15
|
var modelName = modelConstructor.name;
|
|
72
|
-
return
|
|
16
|
+
return util_1.getStorename(namespace, modelName);
|
|
73
17
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
18
|
+
// Retrieves primary key values from a model
|
|
19
|
+
AsyncStorageAdapter.prototype.getIndexKeyValuesFromModel = function (model) {
|
|
20
|
+
var modelConstructor = Object.getPrototypeOf(model)
|
|
21
|
+
.constructor;
|
|
22
|
+
var namespaceName = this.namespaceResolver(modelConstructor);
|
|
23
|
+
var keys = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelConstructor.name);
|
|
24
|
+
return util_1.extractPrimaryKeyValues(model, keys);
|
|
25
|
+
};
|
|
26
|
+
// Retrieves concatenated primary key values from a model
|
|
27
|
+
AsyncStorageAdapter.prototype.getIndexKeyValuesPath = function (model) {
|
|
28
|
+
return this.getIndexKeyValuesFromModel(model).join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
|
|
77
29
|
};
|
|
78
30
|
AsyncStorageAdapter.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
|
|
79
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
31
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
80
32
|
var error_1;
|
|
81
33
|
var _this = this;
|
|
82
|
-
return __generator(this, function (_a) {
|
|
34
|
+
return tslib_1.__generator(this, function (_a) {
|
|
83
35
|
switch (_a.label) {
|
|
84
36
|
case 0:
|
|
85
37
|
if (!!this.initPromise) return [3 /*break*/, 1];
|
|
@@ -119,25 +71,27 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
119
71
|
};
|
|
120
72
|
AsyncStorageAdapter.prototype.save = function (model, condition) {
|
|
121
73
|
var e_1, _a;
|
|
122
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
123
|
-
var modelConstructor, storeName,
|
|
74
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
75
|
+
var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, keyValuesPath, fromDB, predicates, predicateObjs, type, isValid, msg, result, connectionStoreNames_1, connectionStoreNames_1_1, resItem, storeName_1, item, instance, keys, itemKeyValues, itemKeyValuesPath, fromDB_1, opType, modelKeyValues, e_1_1;
|
|
124
76
|
var _this = this;
|
|
125
|
-
return __generator(this, function (_b) {
|
|
77
|
+
return tslib_1.__generator(this, function (_b) {
|
|
126
78
|
switch (_b.label) {
|
|
127
79
|
case 0:
|
|
128
80
|
modelConstructor = Object.getPrototypeOf(model)
|
|
129
81
|
.constructor;
|
|
130
82
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
131
|
-
connectedModels = util_1.traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
132
83
|
namespaceName = this.namespaceResolver(modelConstructor);
|
|
84
|
+
connectedModels = util_1.traverseModel(modelConstructor.name, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
133
85
|
set = new Set();
|
|
134
86
|
connectionStoreNames = Object.values(connectedModels).map(function (_a) {
|
|
135
87
|
var modelName = _a.modelName, item = _a.item, instance = _a.instance;
|
|
136
|
-
var storeName =
|
|
88
|
+
var storeName = util_1.getStorename(namespaceName, modelName);
|
|
137
89
|
set.add(storeName);
|
|
138
|
-
|
|
90
|
+
var keys = util_1.getIndexKeys(_this.schema.namespaces[namespaceName], modelName);
|
|
91
|
+
return { storeName: storeName, item: item, instance: instance, keys: keys };
|
|
139
92
|
});
|
|
140
|
-
|
|
93
|
+
keyValuesPath = this.getIndexKeyValuesPath(model);
|
|
94
|
+
return [4 /*yield*/, this.db.get(keyValuesPath, storeName)];
|
|
141
95
|
case 1:
|
|
142
96
|
fromDB = _b.sent();
|
|
143
97
|
if (condition && fromDB) {
|
|
@@ -154,20 +108,23 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
154
108
|
_b.label = 2;
|
|
155
109
|
case 2:
|
|
156
110
|
_b.trys.push([2, 9, 10, 15]);
|
|
157
|
-
connectionStoreNames_1 = __asyncValues(connectionStoreNames);
|
|
111
|
+
connectionStoreNames_1 = tslib_1.__asyncValues(connectionStoreNames);
|
|
158
112
|
_b.label = 3;
|
|
159
113
|
case 3: return [4 /*yield*/, connectionStoreNames_1.next()];
|
|
160
114
|
case 4:
|
|
161
115
|
if (!(connectionStoreNames_1_1 = _b.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 8];
|
|
162
116
|
resItem = connectionStoreNames_1_1.value;
|
|
163
|
-
storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance;
|
|
164
|
-
|
|
165
|
-
|
|
117
|
+
storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance, keys = resItem.keys;
|
|
118
|
+
itemKeyValues = keys.map(function (key) { return item[key]; });
|
|
119
|
+
itemKeyValuesPath = itemKeyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
|
|
120
|
+
return [4 /*yield*/, this.db.get(itemKeyValuesPath, storeName_1)];
|
|
166
121
|
case 5:
|
|
167
122
|
fromDB_1 = _b.sent();
|
|
168
123
|
opType = fromDB_1 ? types_1.OpType.UPDATE : types_1.OpType.INSERT;
|
|
169
|
-
|
|
170
|
-
|
|
124
|
+
modelKeyValues = this.getIndexKeyValuesFromModel(model);
|
|
125
|
+
if (!(util_1.keysEqual(itemKeyValues, modelKeyValues) ||
|
|
126
|
+
opType === types_1.OpType.INSERT)) return [3 /*break*/, 7];
|
|
127
|
+
return [4 /*yield*/, this.db.save(item, storeName_1, keys, itemKeyValuesPath)];
|
|
171
128
|
case 6:
|
|
172
129
|
_b.sent();
|
|
173
130
|
result.push([instance, opType]);
|
|
@@ -198,17 +155,17 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
198
155
|
AsyncStorageAdapter.prototype.load = function (namespaceName, srcModelName, records) {
|
|
199
156
|
var records_1, records_1_1, records_2, records_2_1;
|
|
200
157
|
var e_2, _a, e_3, _b, e_4, _c;
|
|
201
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
202
|
-
var namespace, relations, connectionStoreNames, modelConstructor, relations_1, relations_1_1, relation, fieldName, modelName, targetName, relationType, storeName, modelConstructor_1, _d, recordItem, getByfield, connectionRecord, e_3_1, recordItem, connectionRecord, e_4_1, e_2_1;
|
|
158
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
159
|
+
var namespace, relations, connectionStoreNames, modelConstructor, relations_1, relations_1_1, relation, fieldName, modelName, targetName, targetNames, relationType, storeName, modelConstructor_1, _d, recordItem, getByFields, allPresent, keys, connectionRecord, getByfield, key, connectionRecord, e_3_1, recordItem, allPresent, keys, connectionRecord, key, connectionRecord, e_4_1, e_2_1;
|
|
203
160
|
var _this = this;
|
|
204
|
-
return __generator(this, function (_e) {
|
|
161
|
+
return tslib_1.__generator(this, function (_e) {
|
|
205
162
|
switch (_e.label) {
|
|
206
163
|
case 0:
|
|
207
164
|
namespace = this.schema.namespaces[namespaceName];
|
|
208
165
|
relations = namespace.relationships[srcModelName].relationTypes;
|
|
209
166
|
connectionStoreNames = relations.map(function (_a) {
|
|
210
167
|
var modelName = _a.modelName;
|
|
211
|
-
return
|
|
168
|
+
return util_1.getStorename(namespaceName, modelName);
|
|
212
169
|
});
|
|
213
170
|
modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
|
|
214
171
|
if (connectionStoreNames.length === 0) {
|
|
@@ -218,121 +175,171 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
218
175
|
}
|
|
219
176
|
_e.label = 1;
|
|
220
177
|
case 1:
|
|
221
|
-
_e.trys.push([1,
|
|
222
|
-
relations_1 = __asyncValues(relations);
|
|
178
|
+
_e.trys.push([1, 38, 39, 44]);
|
|
179
|
+
relations_1 = tslib_1.__asyncValues(relations);
|
|
223
180
|
_e.label = 2;
|
|
224
181
|
case 2: return [4 /*yield*/, relations_1.next()];
|
|
225
182
|
case 3:
|
|
226
|
-
if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/,
|
|
183
|
+
if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
|
|
227
184
|
relation = relations_1_1.value;
|
|
228
|
-
fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName, relationType = relation.relationType;
|
|
229
|
-
storeName =
|
|
185
|
+
fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName, targetNames = relation.targetNames, relationType = relation.relationType;
|
|
186
|
+
storeName = util_1.getStorename(namespaceName, modelName);
|
|
230
187
|
modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, modelName);
|
|
231
188
|
_d = relationType;
|
|
232
189
|
switch (_d) {
|
|
233
190
|
case 'HAS_ONE': return [3 /*break*/, 4];
|
|
234
|
-
case 'BELONGS_TO': return [3 /*break*/,
|
|
235
|
-
case 'HAS_MANY': return [3 /*break*/,
|
|
191
|
+
case 'BELONGS_TO': return [3 /*break*/, 19];
|
|
192
|
+
case 'HAS_MANY': return [3 /*break*/, 34];
|
|
236
193
|
}
|
|
237
|
-
return [3 /*break*/,
|
|
194
|
+
return [3 /*break*/, 35];
|
|
238
195
|
case 4:
|
|
239
|
-
_e.trys.push([4,
|
|
240
|
-
records_1 = __asyncValues(records);
|
|
196
|
+
_e.trys.push([4, 12, 13, 18]);
|
|
197
|
+
records_1 = tslib_1.__asyncValues(records);
|
|
241
198
|
_e.label = 5;
|
|
242
199
|
case 5: return [4 /*yield*/, records_1.next()];
|
|
243
200
|
case 6:
|
|
244
|
-
if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/,
|
|
201
|
+
if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/, 11];
|
|
245
202
|
recordItem = records_1_1.value;
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
203
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
|
|
204
|
+
getByFields = [];
|
|
205
|
+
allPresent = void 0;
|
|
206
|
+
// iterate through all targetnames to make sure they are all present in the recordItem
|
|
207
|
+
allPresent = targetNames.every(function (targetName) {
|
|
208
|
+
return recordItem[targetName] != null;
|
|
209
|
+
});
|
|
210
|
+
if (!allPresent) {
|
|
211
|
+
return [3 /*break*/, 11];
|
|
212
|
+
}
|
|
213
|
+
getByFields = targetNames;
|
|
214
|
+
keys = getByFields
|
|
215
|
+
.map(function (getByField) { return recordItem[getByField]; })
|
|
216
|
+
.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
|
|
217
|
+
return [4 /*yield*/, this.db.get(keys, storeName)];
|
|
250
218
|
case 7:
|
|
251
219
|
connectionRecord = _e.sent();
|
|
252
220
|
recordItem[fieldName] =
|
|
253
221
|
connectionRecord &&
|
|
254
222
|
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
255
|
-
|
|
256
|
-
case 8:
|
|
257
|
-
|
|
258
|
-
|
|
223
|
+
return [3 /*break*/, 10];
|
|
224
|
+
case 8:
|
|
225
|
+
getByfield = recordItem[targetName]
|
|
226
|
+
? targetName
|
|
227
|
+
: fieldName;
|
|
228
|
+
if (!recordItem[getByfield])
|
|
229
|
+
return [3 /*break*/, 11];
|
|
230
|
+
key = recordItem[getByfield];
|
|
231
|
+
return [4 /*yield*/, this.db.get(key, storeName)];
|
|
232
|
+
case 9:
|
|
233
|
+
connectionRecord = _e.sent();
|
|
234
|
+
recordItem[fieldName] =
|
|
235
|
+
connectionRecord &&
|
|
236
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
237
|
+
_e.label = 10;
|
|
238
|
+
case 10: return [3 /*break*/, 5];
|
|
239
|
+
case 11: return [3 /*break*/, 18];
|
|
240
|
+
case 12:
|
|
259
241
|
e_3_1 = _e.sent();
|
|
260
242
|
e_3 = { error: e_3_1 };
|
|
261
|
-
return [3 /*break*/,
|
|
262
|
-
case
|
|
263
|
-
_e.trys.push([
|
|
264
|
-
if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/,
|
|
243
|
+
return [3 /*break*/, 18];
|
|
244
|
+
case 13:
|
|
245
|
+
_e.trys.push([13, , 16, 17]);
|
|
246
|
+
if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/, 15];
|
|
265
247
|
return [4 /*yield*/, _b.call(records_1)];
|
|
266
|
-
case 12:
|
|
267
|
-
_e.sent();
|
|
268
|
-
_e.label = 13;
|
|
269
|
-
case 13: return [3 /*break*/, 15];
|
|
270
248
|
case 14:
|
|
249
|
+
_e.sent();
|
|
250
|
+
_e.label = 15;
|
|
251
|
+
case 15: return [3 /*break*/, 17];
|
|
252
|
+
case 16:
|
|
271
253
|
if (e_3) throw e_3.error;
|
|
272
254
|
return [7 /*endfinally*/];
|
|
273
|
-
case
|
|
274
|
-
case
|
|
275
|
-
case 17:
|
|
276
|
-
_e.trys.push([17, 23, 24, 29]);
|
|
277
|
-
records_2 = __asyncValues(records);
|
|
278
|
-
_e.label = 18;
|
|
279
|
-
case 18: return [4 /*yield*/, records_2.next()];
|
|
255
|
+
case 17: return [7 /*endfinally*/];
|
|
256
|
+
case 18: return [3 /*break*/, 36];
|
|
280
257
|
case 19:
|
|
281
|
-
|
|
258
|
+
_e.trys.push([19, 27, 28, 33]);
|
|
259
|
+
records_2 = tslib_1.__asyncValues(records);
|
|
260
|
+
_e.label = 20;
|
|
261
|
+
case 20: return [4 /*yield*/, records_2.next()];
|
|
262
|
+
case 21:
|
|
263
|
+
if (!(records_2_1 = _e.sent(), !records_2_1.done)) return [3 /*break*/, 26];
|
|
282
264
|
recordItem = records_2_1.value;
|
|
283
|
-
if (!
|
|
284
|
-
|
|
285
|
-
|
|
265
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 23];
|
|
266
|
+
allPresent = void 0;
|
|
267
|
+
// iterate through all targetnames to make sure they are all present in the recordItem
|
|
268
|
+
allPresent = targetNames.every(function (targetName) {
|
|
269
|
+
return recordItem[targetName] != null;
|
|
270
|
+
});
|
|
271
|
+
// If not present, there is not yet a connected record
|
|
272
|
+
if (!allPresent) {
|
|
273
|
+
return [3 /*break*/, 26];
|
|
274
|
+
}
|
|
275
|
+
keys = targetNames
|
|
276
|
+
.map(function (targetName) { return recordItem[targetName]; })
|
|
277
|
+
.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
|
|
278
|
+
return [4 /*yield*/, this.db.get(keys, storeName)];
|
|
279
|
+
case 22:
|
|
286
280
|
connectionRecord = _e.sent();
|
|
287
281
|
recordItem[fieldName] =
|
|
288
282
|
connectionRecord &&
|
|
289
283
|
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
284
|
+
targetNames === null || targetNames === void 0 ? void 0 : targetNames.map(function (targetName) {
|
|
285
|
+
delete recordItem[targetName];
|
|
286
|
+
});
|
|
287
|
+
return [3 /*break*/, 25];
|
|
294
288
|
case 23:
|
|
289
|
+
if (!recordItem[targetName]) return [3 /*break*/, 25];
|
|
290
|
+
key = recordItem[targetName];
|
|
291
|
+
return [4 /*yield*/, this.db.get(key, storeName)];
|
|
292
|
+
case 24:
|
|
293
|
+
connectionRecord = _e.sent();
|
|
294
|
+
recordItem[fieldName] =
|
|
295
|
+
connectionRecord &&
|
|
296
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
297
|
+
delete recordItem[targetName];
|
|
298
|
+
_e.label = 25;
|
|
299
|
+
case 25: return [3 /*break*/, 20];
|
|
300
|
+
case 26: return [3 /*break*/, 33];
|
|
301
|
+
case 27:
|
|
295
302
|
e_4_1 = _e.sent();
|
|
296
303
|
e_4 = { error: e_4_1 };
|
|
297
|
-
return [3 /*break*/,
|
|
298
|
-
case
|
|
299
|
-
_e.trys.push([
|
|
300
|
-
if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/,
|
|
304
|
+
return [3 /*break*/, 33];
|
|
305
|
+
case 28:
|
|
306
|
+
_e.trys.push([28, , 31, 32]);
|
|
307
|
+
if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/, 30];
|
|
301
308
|
return [4 /*yield*/, _c.call(records_2)];
|
|
302
|
-
case
|
|
309
|
+
case 29:
|
|
303
310
|
_e.sent();
|
|
304
|
-
_e.label =
|
|
305
|
-
case
|
|
306
|
-
case
|
|
311
|
+
_e.label = 30;
|
|
312
|
+
case 30: return [3 /*break*/, 32];
|
|
313
|
+
case 31:
|
|
307
314
|
if (e_4) throw e_4.error;
|
|
308
315
|
return [7 /*endfinally*/];
|
|
309
|
-
case
|
|
310
|
-
case
|
|
311
|
-
case
|
|
316
|
+
case 32: return [7 /*endfinally*/];
|
|
317
|
+
case 33: return [3 /*break*/, 36];
|
|
318
|
+
case 34:
|
|
312
319
|
// TODO: Lazy loading
|
|
313
|
-
return [3 /*break*/,
|
|
314
|
-
case
|
|
320
|
+
return [3 /*break*/, 36];
|
|
321
|
+
case 35:
|
|
315
322
|
util_1.exhaustiveCheck(relationType);
|
|
316
|
-
return [3 /*break*/,
|
|
317
|
-
case
|
|
318
|
-
case
|
|
319
|
-
case
|
|
323
|
+
return [3 /*break*/, 36];
|
|
324
|
+
case 36: return [3 /*break*/, 2];
|
|
325
|
+
case 37: return [3 /*break*/, 44];
|
|
326
|
+
case 38:
|
|
320
327
|
e_2_1 = _e.sent();
|
|
321
328
|
e_2 = { error: e_2_1 };
|
|
322
|
-
return [3 /*break*/,
|
|
323
|
-
case
|
|
324
|
-
_e.trys.push([
|
|
325
|
-
if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/,
|
|
329
|
+
return [3 /*break*/, 44];
|
|
330
|
+
case 39:
|
|
331
|
+
_e.trys.push([39, , 42, 43]);
|
|
332
|
+
if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 41];
|
|
326
333
|
return [4 /*yield*/, _a.call(relations_1)];
|
|
327
|
-
case
|
|
334
|
+
case 40:
|
|
328
335
|
_e.sent();
|
|
329
|
-
_e.label =
|
|
330
|
-
case
|
|
331
|
-
case
|
|
336
|
+
_e.label = 41;
|
|
337
|
+
case 41: return [3 /*break*/, 43];
|
|
338
|
+
case 42:
|
|
332
339
|
if (e_2) throw e_2.error;
|
|
333
340
|
return [7 /*endfinally*/];
|
|
334
|
-
case
|
|
335
|
-
case
|
|
341
|
+
case 43: return [7 /*endfinally*/];
|
|
342
|
+
case 44: return [2 /*return*/, records.map(function (record) {
|
|
336
343
|
return _this.modelInstanceCreator(modelConstructor, record);
|
|
337
344
|
})];
|
|
338
345
|
}
|
|
@@ -340,25 +347,26 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
340
347
|
});
|
|
341
348
|
};
|
|
342
349
|
AsyncStorageAdapter.prototype.query = function (modelConstructor, predicate, pagination) {
|
|
343
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
344
|
-
var storeName, namespaceName, predicates,
|
|
350
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
351
|
+
var storeName, namespaceName, predicates, keys, queryByKey, hasSort, hasPagination, records;
|
|
345
352
|
var _this = this;
|
|
346
|
-
return __generator(this, function (_a) {
|
|
353
|
+
return tslib_1.__generator(this, function (_a) {
|
|
347
354
|
switch (_a.label) {
|
|
348
355
|
case 0:
|
|
349
356
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
350
357
|
namespaceName = this.namespaceResolver(modelConstructor);
|
|
351
358
|
predicates = predicate && predicates_1.ModelPredicateCreator.getPredicates(predicate);
|
|
352
|
-
|
|
359
|
+
keys = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelConstructor.name);
|
|
360
|
+
queryByKey = predicates && this.keyValueFromPredicate(predicates, keys);
|
|
353
361
|
hasSort = pagination && pagination.sort;
|
|
354
362
|
hasPagination = pagination && pagination.limit;
|
|
355
|
-
return [4 /*yield*/, (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
363
|
+
return [4 /*yield*/, (function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
356
364
|
var record, filtered, all;
|
|
357
|
-
return __generator(this, function (_a) {
|
|
365
|
+
return tslib_1.__generator(this, function (_a) {
|
|
358
366
|
switch (_a.label) {
|
|
359
367
|
case 0:
|
|
360
|
-
if (!
|
|
361
|
-
return [4 /*yield*/, this.
|
|
368
|
+
if (!queryByKey) return [3 /*break*/, 2];
|
|
369
|
+
return [4 /*yield*/, this.getByKey(storeName, queryByKey)];
|
|
362
370
|
case 1:
|
|
363
371
|
record = _a.sent();
|
|
364
372
|
return [2 /*return*/, record ? [record] : []];
|
|
@@ -386,12 +394,12 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
386
394
|
});
|
|
387
395
|
});
|
|
388
396
|
};
|
|
389
|
-
AsyncStorageAdapter.prototype.
|
|
390
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
397
|
+
AsyncStorageAdapter.prototype.getByKey = function (storeName, keyValuePath) {
|
|
398
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
391
399
|
var record;
|
|
392
|
-
return __generator(this, function (_a) {
|
|
400
|
+
return tslib_1.__generator(this, function (_a) {
|
|
393
401
|
switch (_a.label) {
|
|
394
|
-
case 0: return [4 /*yield*/, this.db.get(
|
|
402
|
+
case 0: return [4 /*yield*/, this.db.get(keyValuePath, storeName)];
|
|
395
403
|
case 1:
|
|
396
404
|
record = _a.sent();
|
|
397
405
|
return [2 /*return*/, record];
|
|
@@ -400,8 +408,8 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
400
408
|
});
|
|
401
409
|
};
|
|
402
410
|
AsyncStorageAdapter.prototype.getAll = function (storeName) {
|
|
403
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
404
|
-
return __generator(this, function (_a) {
|
|
411
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
412
|
+
return tslib_1.__generator(this, function (_a) {
|
|
405
413
|
switch (_a.label) {
|
|
406
414
|
case 0: return [4 /*yield*/, this.db.getAll(storeName)];
|
|
407
415
|
case 1: return [2 /*return*/, _a.sent()];
|
|
@@ -409,16 +417,38 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
409
417
|
});
|
|
410
418
|
});
|
|
411
419
|
};
|
|
412
|
-
AsyncStorageAdapter.prototype.
|
|
420
|
+
AsyncStorageAdapter.prototype.keyValueFromPredicate = function (predicates, keys) {
|
|
421
|
+
var e_5, _a;
|
|
413
422
|
var predicateObjs = predicates.predicates;
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
423
|
+
if (predicateObjs.length !== keys.length) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
var keyValues = [];
|
|
427
|
+
var _loop_1 = function (key) {
|
|
428
|
+
var predicateObj = predicateObjs.find(function (p) { return types_1.isPredicateObj(p) && p.field === key && p.operator === 'eq'; });
|
|
429
|
+
predicateObj && keyValues.push(predicateObj.operand);
|
|
430
|
+
};
|
|
431
|
+
try {
|
|
432
|
+
for (var keys_1 = tslib_1.__values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
|
|
433
|
+
var key = keys_1_1.value;
|
|
434
|
+
_loop_1(key);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
438
|
+
finally {
|
|
439
|
+
try {
|
|
440
|
+
if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
|
|
441
|
+
}
|
|
442
|
+
finally { if (e_5) throw e_5.error; }
|
|
443
|
+
}
|
|
444
|
+
return keyValues.length === keys.length
|
|
445
|
+
? keyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR)
|
|
446
|
+
: undefined;
|
|
417
447
|
};
|
|
418
448
|
AsyncStorageAdapter.prototype.filterOnPredicate = function (storeName, predicates) {
|
|
419
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
449
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
420
450
|
var predicateObjs, type, all, filtered;
|
|
421
|
-
return __generator(this, function (_a) {
|
|
451
|
+
return tslib_1.__generator(this, function (_a) {
|
|
422
452
|
switch (_a.label) {
|
|
423
453
|
case 0:
|
|
424
454
|
predicateObjs = predicates.predicates, type = predicates.type;
|
|
@@ -451,9 +481,9 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
451
481
|
};
|
|
452
482
|
AsyncStorageAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
|
|
453
483
|
if (firstOrLast === void 0) { firstOrLast = types_1.QueryOne.FIRST; }
|
|
454
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
484
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
455
485
|
var storeName, result;
|
|
456
|
-
return __generator(this, function (_a) {
|
|
486
|
+
return tslib_1.__generator(this, function (_a) {
|
|
457
487
|
switch (_a.label) {
|
|
458
488
|
case 0:
|
|
459
489
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
@@ -466,9 +496,9 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
466
496
|
});
|
|
467
497
|
};
|
|
468
498
|
AsyncStorageAdapter.prototype.delete = function (modelOrModelConstructor, condition) {
|
|
469
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
470
|
-
var deleteQueue, modelConstructor, nameSpace, models, relations, deletedModels, deletedModels, model, modelConstructor,
|
|
471
|
-
return __generator(this, function (_a) {
|
|
499
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
500
|
+
var deleteQueue, modelConstructor, nameSpace, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, keyValuePath, fromDB, msg, predicates, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
|
|
501
|
+
return tslib_1.__generator(this, function (_a) {
|
|
472
502
|
switch (_a.label) {
|
|
473
503
|
case 0:
|
|
474
504
|
deleteQueue = [];
|
|
@@ -508,10 +538,11 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
508
538
|
model = modelOrModelConstructor;
|
|
509
539
|
modelConstructor = Object.getPrototypeOf(model)
|
|
510
540
|
.constructor;
|
|
511
|
-
|
|
541
|
+
namespaceName = this.namespaceResolver(modelConstructor);
|
|
512
542
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
513
543
|
if (!condition) return [3 /*break*/, 11];
|
|
514
|
-
|
|
544
|
+
keyValuePath = this.getIndexKeyValuesPath(model);
|
|
545
|
+
return [4 /*yield*/, this.db.get(keyValuePath, storeName)];
|
|
515
546
|
case 9:
|
|
516
547
|
fromDB = _a.sent();
|
|
517
548
|
if (fromDB === undefined) {
|
|
@@ -527,16 +558,14 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
527
558
|
logger.error(msg, { model: fromDB, condition: predicateObjs });
|
|
528
559
|
throw new Error(msg);
|
|
529
560
|
}
|
|
530
|
-
relations = this.schema.namespaces[
|
|
531
|
-
|
|
532
|
-
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
|
|
561
|
+
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
562
|
+
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
533
563
|
case 10:
|
|
534
564
|
_a.sent();
|
|
535
565
|
return [3 /*break*/, 13];
|
|
536
566
|
case 11:
|
|
537
|
-
relations = this.schema.namespaces[
|
|
538
|
-
|
|
539
|
-
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
|
|
567
|
+
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
568
|
+
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
540
569
|
case 12:
|
|
541
570
|
_a.sent();
|
|
542
571
|
_a.label = 13;
|
|
@@ -555,14 +584,14 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
555
584
|
};
|
|
556
585
|
AsyncStorageAdapter.prototype.deleteItem = function (deleteQueue) {
|
|
557
586
|
var deleteQueue_1, deleteQueue_1_1;
|
|
558
|
-
var
|
|
559
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
560
|
-
var deleteItem, storeName, items, items_1, items_1_1, item,
|
|
561
|
-
return __generator(this, function (_c) {
|
|
587
|
+
var e_6, _a, e_7, _b;
|
|
588
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
589
|
+
var deleteItem, storeName, items, items_1, items_1_1, item, keyValuesPath, e_7_1, e_6_1;
|
|
590
|
+
return tslib_1.__generator(this, function (_c) {
|
|
562
591
|
switch (_c.label) {
|
|
563
592
|
case 0:
|
|
564
593
|
_c.trys.push([0, 17, 18, 23]);
|
|
565
|
-
deleteQueue_1 = __asyncValues(deleteQueue);
|
|
594
|
+
deleteQueue_1 = tslib_1.__asyncValues(deleteQueue);
|
|
566
595
|
_c.label = 1;
|
|
567
596
|
case 1: return [4 /*yield*/, deleteQueue_1.next()];
|
|
568
597
|
case 2:
|
|
@@ -572,7 +601,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
572
601
|
_c.label = 3;
|
|
573
602
|
case 3:
|
|
574
603
|
_c.trys.push([3, 9, 10, 15]);
|
|
575
|
-
items_1 = __asyncValues(items);
|
|
604
|
+
items_1 = tslib_1.__asyncValues(items);
|
|
576
605
|
_c.label = 4;
|
|
577
606
|
case 4: return [4 /*yield*/, items_1.next()];
|
|
578
607
|
case 5:
|
|
@@ -580,16 +609,16 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
580
609
|
item = items_1_1.value;
|
|
581
610
|
if (!item) return [3 /*break*/, 7];
|
|
582
611
|
if (!(typeof item === 'object')) return [3 /*break*/, 7];
|
|
583
|
-
|
|
584
|
-
return [4 /*yield*/, this.db.delete(
|
|
612
|
+
keyValuesPath = this.getIndexKeyValuesPath(item);
|
|
613
|
+
return [4 /*yield*/, this.db.delete(keyValuesPath, storeName)];
|
|
585
614
|
case 6:
|
|
586
615
|
_c.sent();
|
|
587
616
|
_c.label = 7;
|
|
588
617
|
case 7: return [3 /*break*/, 4];
|
|
589
618
|
case 8: return [3 /*break*/, 15];
|
|
590
619
|
case 9:
|
|
591
|
-
|
|
592
|
-
|
|
620
|
+
e_7_1 = _c.sent();
|
|
621
|
+
e_7 = { error: e_7_1 };
|
|
593
622
|
return [3 /*break*/, 15];
|
|
594
623
|
case 10:
|
|
595
624
|
_c.trys.push([10, , 13, 14]);
|
|
@@ -600,14 +629,14 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
600
629
|
_c.label = 12;
|
|
601
630
|
case 12: return [3 /*break*/, 14];
|
|
602
631
|
case 13:
|
|
603
|
-
if (
|
|
632
|
+
if (e_7) throw e_7.error;
|
|
604
633
|
return [7 /*endfinally*/];
|
|
605
634
|
case 14: return [7 /*endfinally*/];
|
|
606
635
|
case 15: return [3 /*break*/, 1];
|
|
607
636
|
case 16: return [3 /*break*/, 23];
|
|
608
637
|
case 17:
|
|
609
|
-
|
|
610
|
-
|
|
638
|
+
e_6_1 = _c.sent();
|
|
639
|
+
e_6 = { error: e_6_1 };
|
|
611
640
|
return [3 /*break*/, 23];
|
|
612
641
|
case 18:
|
|
613
642
|
_c.trys.push([18, , 21, 22]);
|
|
@@ -618,7 +647,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
618
647
|
_c.label = 20;
|
|
619
648
|
case 20: return [3 /*break*/, 22];
|
|
620
649
|
case 21:
|
|
621
|
-
if (
|
|
650
|
+
if (e_6) throw e_6.error;
|
|
622
651
|
return [7 /*endfinally*/];
|
|
623
652
|
case 22: return [7 /*endfinally*/];
|
|
624
653
|
case 23: return [2 /*return*/];
|
|
@@ -636,22 +665,22 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
636
665
|
*/
|
|
637
666
|
AsyncStorageAdapter.prototype.deleteTraverse = function (relations, models, srcModel, nameSpace, deleteQueue) {
|
|
638
667
|
var relations_2, relations_2_1, models_1, models_1_1, models_2, models_2_1;
|
|
639
|
-
var
|
|
640
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
641
|
-
var rel, relationType, modelName, targetName, storeName, index, _d, model,
|
|
668
|
+
var e_8, _a, e_9, _b, e_10, _c;
|
|
669
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
670
|
+
var rel, relationType, modelName, targetName, targetNames, associatedWith, storeName, index, _d, model, hasOneIndex_1, hasConnectedModelFields, keyValuesPath, values_1, isUnidirectionalConnection, allRecords, recordToDelete, hasOneIndex_2, hasOneCustomField, keyValuesPath, value_1, allRecords, recordToDelete, e_9_1, model, keyValues, allRecords, indices, childrenArray, e_10_1, e_8_1;
|
|
642
671
|
var _this = this;
|
|
643
|
-
return __generator(this, function (_e) {
|
|
672
|
+
return tslib_1.__generator(this, function (_e) {
|
|
644
673
|
switch (_e.label) {
|
|
645
674
|
case 0:
|
|
646
|
-
_e.trys.push([0,
|
|
647
|
-
relations_2 = __asyncValues(relations);
|
|
675
|
+
_e.trys.push([0, 38, 39, 44]);
|
|
676
|
+
relations_2 = tslib_1.__asyncValues(relations);
|
|
648
677
|
_e.label = 1;
|
|
649
678
|
case 1: return [4 /*yield*/, relations_2.next()];
|
|
650
679
|
case 2:
|
|
651
|
-
if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/,
|
|
680
|
+
if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/, 37];
|
|
652
681
|
rel = relations_2_1.value;
|
|
653
|
-
relationType = rel.relationType, modelName = rel.modelName, targetName = rel.targetName;
|
|
654
|
-
storeName =
|
|
682
|
+
relationType = rel.relationType, modelName = rel.modelName, targetName = rel.targetName, targetNames = rel.targetNames, associatedWith = rel.associatedWith;
|
|
683
|
+
storeName = util_1.getStorename(nameSpace, modelName);
|
|
655
684
|
index = util_1.getIndex(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
656
685
|
.relationTypes, srcModel) ||
|
|
657
686
|
// if we were unable to find an index via relationTypes
|
|
@@ -661,114 +690,176 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
661
690
|
_d = relationType;
|
|
662
691
|
switch (_d) {
|
|
663
692
|
case 'HAS_ONE': return [3 /*break*/, 3];
|
|
664
|
-
case 'HAS_MANY': return [3 /*break*/,
|
|
665
|
-
case 'BELONGS_TO': return [3 /*break*/,
|
|
693
|
+
case 'HAS_MANY': return [3 /*break*/, 20];
|
|
694
|
+
case 'BELONGS_TO': return [3 /*break*/, 34];
|
|
666
695
|
}
|
|
667
|
-
return [3 /*break*/,
|
|
696
|
+
return [3 /*break*/, 35];
|
|
668
697
|
case 3:
|
|
669
|
-
_e.trys.push([3,
|
|
670
|
-
models_1 = __asyncValues(models);
|
|
698
|
+
_e.trys.push([3, 13, 14, 19]);
|
|
699
|
+
models_1 = tslib_1.__asyncValues(models);
|
|
671
700
|
_e.label = 4;
|
|
672
701
|
case 4: return [4 /*yield*/, models_1.next()];
|
|
673
702
|
case 5:
|
|
674
|
-
if (!(models_1_1 = _e.sent(), !models_1_1.done)) return [3 /*break*/,
|
|
703
|
+
if (!(models_1_1 = _e.sent(), !models_1_1.done)) return [3 /*break*/, 12];
|
|
675
704
|
model = models_1_1.value;
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
705
|
+
if (!(targetNames && (targetNames === null || targetNames === void 0 ? void 0 : targetNames.length))) return [3 /*break*/, 8];
|
|
706
|
+
if (index) {
|
|
707
|
+
hasOneIndex_1 = index.split(util_1.IDENTIFIER_KEY_SEPARATOR);
|
|
708
|
+
}
|
|
709
|
+
else if (associatedWith) {
|
|
710
|
+
if (Array.isArray(associatedWith)) {
|
|
711
|
+
hasOneIndex_1 = associatedWith;
|
|
712
|
+
}
|
|
713
|
+
else {
|
|
714
|
+
hasOneIndex_1 = [associatedWith];
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
hasConnectedModelFields = targetNames.every(function (targetName) {
|
|
718
|
+
return model.hasOwnProperty(targetName);
|
|
719
|
+
});
|
|
720
|
+
keyValuesPath = this.getIndexKeyValuesPath(model);
|
|
721
|
+
isUnidirectionalConnection = hasOneIndex_1 === associatedWith;
|
|
722
|
+
if (hasConnectedModelFields && isUnidirectionalConnection) {
|
|
723
|
+
// Values will be that of the child model
|
|
724
|
+
values_1 = targetNames.map(function (targetName) { return model[targetName]; });
|
|
725
|
+
}
|
|
726
|
+
else {
|
|
727
|
+
// values will be that of the parent model
|
|
728
|
+
values_1 = keyValuesPath.split(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
|
|
729
|
+
}
|
|
730
|
+
if (values_1.length === 0)
|
|
731
|
+
return [3 /*break*/, 12];
|
|
681
732
|
return [4 /*yield*/, this.db.getAll(storeName)];
|
|
682
733
|
case 6:
|
|
683
734
|
allRecords = _e.sent();
|
|
684
|
-
recordToDelete =
|
|
735
|
+
recordToDelete = void 0;
|
|
736
|
+
// values === targetNames
|
|
737
|
+
if (hasConnectedModelFields) {
|
|
738
|
+
/**
|
|
739
|
+
* Retrieve record by finding the record where all
|
|
740
|
+
* targetNames are present on the connected model.
|
|
741
|
+
*
|
|
742
|
+
*/
|
|
743
|
+
// recordToDelete = allRecords.filter(childItem =>
|
|
744
|
+
// values.every(value => childItem[value] != null)
|
|
745
|
+
// ) as T[];
|
|
746
|
+
recordToDelete = allRecords.filter(function (childItem) {
|
|
747
|
+
return hasOneIndex_1.every(function (index) { return values_1.includes(childItem[index]); });
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
else {
|
|
751
|
+
// values === keyValuePath
|
|
752
|
+
recordToDelete = allRecords.filter(function (childItem) { return childItem[hasOneIndex_1] === values_1; });
|
|
753
|
+
}
|
|
685
754
|
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
686
755
|
.relationTypes, recordToDelete, modelName, nameSpace, deleteQueue)];
|
|
687
756
|
case 7:
|
|
688
757
|
_e.sent();
|
|
689
|
-
|
|
690
|
-
case 8:
|
|
691
|
-
|
|
758
|
+
return [3 /*break*/, 11];
|
|
759
|
+
case 8:
|
|
760
|
+
hasOneIndex_2 = index || associatedWith;
|
|
761
|
+
hasOneCustomField = targetName in model;
|
|
762
|
+
keyValuesPath = this.getIndexKeyValuesPath(model);
|
|
763
|
+
value_1 = hasOneCustomField
|
|
764
|
+
? model[targetName]
|
|
765
|
+
: keyValuesPath;
|
|
766
|
+
if (!value_1)
|
|
767
|
+
return [3 /*break*/, 12];
|
|
768
|
+
return [4 /*yield*/, this.db.getAll(storeName)];
|
|
769
|
+
case 9:
|
|
770
|
+
allRecords = _e.sent();
|
|
771
|
+
recordToDelete = allRecords.filter(function (childItem) { return childItem[hasOneIndex_2] === value_1; });
|
|
772
|
+
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
773
|
+
.relationTypes, recordToDelete, modelName, nameSpace, deleteQueue)];
|
|
692
774
|
case 10:
|
|
693
|
-
e_8_1 = _e.sent();
|
|
694
|
-
e_8 = { error: e_8_1 };
|
|
695
|
-
return [3 /*break*/, 16];
|
|
696
|
-
case 11:
|
|
697
|
-
_e.trys.push([11, , 14, 15]);
|
|
698
|
-
if (!(models_1_1 && !models_1_1.done && (_b = models_1.return))) return [3 /*break*/, 13];
|
|
699
|
-
return [4 /*yield*/, _b.call(models_1)];
|
|
700
|
-
case 12:
|
|
701
775
|
_e.sent();
|
|
702
|
-
_e.label =
|
|
703
|
-
case
|
|
776
|
+
_e.label = 11;
|
|
777
|
+
case 11: return [3 /*break*/, 4];
|
|
778
|
+
case 12: return [3 /*break*/, 19];
|
|
779
|
+
case 13:
|
|
780
|
+
e_9_1 = _e.sent();
|
|
781
|
+
e_9 = { error: e_9_1 };
|
|
782
|
+
return [3 /*break*/, 19];
|
|
704
783
|
case 14:
|
|
705
|
-
|
|
706
|
-
return [
|
|
707
|
-
|
|
708
|
-
case
|
|
784
|
+
_e.trys.push([14, , 17, 18]);
|
|
785
|
+
if (!(models_1_1 && !models_1_1.done && (_b = models_1.return))) return [3 /*break*/, 16];
|
|
786
|
+
return [4 /*yield*/, _b.call(models_1)];
|
|
787
|
+
case 15:
|
|
788
|
+
_e.sent();
|
|
789
|
+
_e.label = 16;
|
|
790
|
+
case 16: return [3 /*break*/, 18];
|
|
709
791
|
case 17:
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
case
|
|
714
|
-
case
|
|
715
|
-
|
|
792
|
+
if (e_9) throw e_9.error;
|
|
793
|
+
return [7 /*endfinally*/];
|
|
794
|
+
case 18: return [7 /*endfinally*/];
|
|
795
|
+
case 19: return [3 /*break*/, 36];
|
|
796
|
+
case 20:
|
|
797
|
+
_e.trys.push([20, 27, 28, 33]);
|
|
798
|
+
models_2 = tslib_1.__asyncValues(models);
|
|
799
|
+
_e.label = 21;
|
|
800
|
+
case 21: return [4 /*yield*/, models_2.next()];
|
|
801
|
+
case 22:
|
|
802
|
+
if (!(models_2_1 = _e.sent(), !models_2_1.done)) return [3 /*break*/, 26];
|
|
716
803
|
model = models_2_1.value;
|
|
804
|
+
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
717
805
|
return [4 /*yield*/, this.db.getAll(storeName)];
|
|
718
|
-
case
|
|
806
|
+
case 23:
|
|
719
807
|
allRecords = _e.sent();
|
|
720
|
-
|
|
808
|
+
indices = index.split(util_1.IDENTIFIER_KEY_SEPARATOR);
|
|
809
|
+
childrenArray = allRecords.filter(function (childItem) {
|
|
810
|
+
return indices.every(function (index) { return keyValues.includes(childItem[index]); });
|
|
811
|
+
});
|
|
721
812
|
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
722
813
|
.relationTypes, childrenArray, modelName, nameSpace, deleteQueue)];
|
|
723
|
-
case 21:
|
|
724
|
-
_e.sent();
|
|
725
|
-
_e.label = 22;
|
|
726
|
-
case 22: return [3 /*break*/, 18];
|
|
727
|
-
case 23: return [3 /*break*/, 30];
|
|
728
814
|
case 24:
|
|
729
|
-
e_9_1 = _e.sent();
|
|
730
|
-
e_9 = { error: e_9_1 };
|
|
731
|
-
return [3 /*break*/, 30];
|
|
732
|
-
case 25:
|
|
733
|
-
_e.trys.push([25, , 28, 29]);
|
|
734
|
-
if (!(models_2_1 && !models_2_1.done && (_c = models_2.return))) return [3 /*break*/, 27];
|
|
735
|
-
return [4 /*yield*/, _c.call(models_2)];
|
|
736
|
-
case 26:
|
|
737
815
|
_e.sent();
|
|
738
|
-
_e.label =
|
|
739
|
-
case
|
|
816
|
+
_e.label = 25;
|
|
817
|
+
case 25: return [3 /*break*/, 21];
|
|
818
|
+
case 26: return [3 /*break*/, 33];
|
|
819
|
+
case 27:
|
|
820
|
+
e_10_1 = _e.sent();
|
|
821
|
+
e_10 = { error: e_10_1 };
|
|
822
|
+
return [3 /*break*/, 33];
|
|
740
823
|
case 28:
|
|
741
|
-
|
|
824
|
+
_e.trys.push([28, , 31, 32]);
|
|
825
|
+
if (!(models_2_1 && !models_2_1.done && (_c = models_2.return))) return [3 /*break*/, 30];
|
|
826
|
+
return [4 /*yield*/, _c.call(models_2)];
|
|
827
|
+
case 29:
|
|
828
|
+
_e.sent();
|
|
829
|
+
_e.label = 30;
|
|
830
|
+
case 30: return [3 /*break*/, 32];
|
|
831
|
+
case 31:
|
|
832
|
+
if (e_10) throw e_10.error;
|
|
742
833
|
return [7 /*endfinally*/];
|
|
743
|
-
case
|
|
744
|
-
case
|
|
745
|
-
case
|
|
834
|
+
case 32: return [7 /*endfinally*/];
|
|
835
|
+
case 33: return [3 /*break*/, 36];
|
|
836
|
+
case 34:
|
|
746
837
|
// Intentionally blank
|
|
747
|
-
return [3 /*break*/,
|
|
748
|
-
case 32:
|
|
749
|
-
util_1.exhaustiveCheck(relationType);
|
|
750
|
-
return [3 /*break*/, 33];
|
|
751
|
-
case 33: return [3 /*break*/, 1];
|
|
752
|
-
case 34: return [3 /*break*/, 41];
|
|
838
|
+
return [3 /*break*/, 36];
|
|
753
839
|
case 35:
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
case
|
|
758
|
-
|
|
759
|
-
|
|
840
|
+
util_1.exhaustiveCheck(relationType);
|
|
841
|
+
return [3 /*break*/, 36];
|
|
842
|
+
case 36: return [3 /*break*/, 1];
|
|
843
|
+
case 37: return [3 /*break*/, 44];
|
|
844
|
+
case 38:
|
|
845
|
+
e_8_1 = _e.sent();
|
|
846
|
+
e_8 = { error: e_8_1 };
|
|
847
|
+
return [3 /*break*/, 44];
|
|
848
|
+
case 39:
|
|
849
|
+
_e.trys.push([39, , 42, 43]);
|
|
850
|
+
if (!(relations_2_1 && !relations_2_1.done && (_a = relations_2.return))) return [3 /*break*/, 41];
|
|
760
851
|
return [4 /*yield*/, _a.call(relations_2)];
|
|
761
|
-
case
|
|
852
|
+
case 40:
|
|
762
853
|
_e.sent();
|
|
763
|
-
_e.label =
|
|
764
|
-
case
|
|
765
|
-
case
|
|
766
|
-
if (
|
|
854
|
+
_e.label = 41;
|
|
855
|
+
case 41: return [3 /*break*/, 43];
|
|
856
|
+
case 42:
|
|
857
|
+
if (e_8) throw e_8.error;
|
|
767
858
|
return [7 /*endfinally*/];
|
|
768
|
-
case
|
|
769
|
-
case
|
|
859
|
+
case 43: return [7 /*endfinally*/];
|
|
860
|
+
case 44:
|
|
770
861
|
deleteQueue.push({
|
|
771
|
-
storeName:
|
|
862
|
+
storeName: util_1.getStorename(nameSpace, srcModel),
|
|
772
863
|
items: models.map(function (record) {
|
|
773
864
|
return _this.modelInstanceCreator(_this.getModelConstructorByModelName(nameSpace, srcModel), record);
|
|
774
865
|
}),
|
|
@@ -779,8 +870,8 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
779
870
|
});
|
|
780
871
|
};
|
|
781
872
|
AsyncStorageAdapter.prototype.clear = function () {
|
|
782
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
783
|
-
return __generator(this, function (_a) {
|
|
873
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
874
|
+
return tslib_1.__generator(this, function (_a) {
|
|
784
875
|
switch (_a.label) {
|
|
785
876
|
case 0: return [4 /*yield*/, this.db.clear()];
|
|
786
877
|
case 1:
|
|
@@ -793,40 +884,44 @@ var AsyncStorageAdapter = /** @class */ (function () {
|
|
|
793
884
|
});
|
|
794
885
|
};
|
|
795
886
|
AsyncStorageAdapter.prototype.batchSave = function (modelConstructor, items) {
|
|
796
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
797
|
-
var modelName, namespaceName, storeName, batch,
|
|
798
|
-
var
|
|
799
|
-
|
|
887
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
888
|
+
var modelName, namespaceName, storeName, keys, batch, _loop_2, this_1, items_2, items_2_1, item;
|
|
889
|
+
var e_11, _a;
|
|
890
|
+
var _this = this;
|
|
891
|
+
return tslib_1.__generator(this, function (_b) {
|
|
800
892
|
switch (_b.label) {
|
|
801
893
|
case 0:
|
|
802
894
|
modelName = modelConstructor.name;
|
|
803
895
|
namespaceName = this.namespaceResolver(modelConstructor);
|
|
804
|
-
storeName =
|
|
896
|
+
storeName = util_1.getStorename(namespaceName, modelName);
|
|
897
|
+
keys = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelName);
|
|
805
898
|
batch = [];
|
|
806
|
-
|
|
807
|
-
var
|
|
808
|
-
var connectedModels = util_1.traverseModel(
|
|
899
|
+
_loop_2 = function (item) {
|
|
900
|
+
var model = this_1.modelInstanceCreator(modelConstructor, item);
|
|
901
|
+
var connectedModels = util_1.traverseModel(modelName, model, this_1.schema.namespaces[namespaceName], this_1.modelInstanceCreator, this_1.getModelConstructorByModelName);
|
|
902
|
+
var keyValuesPath = this_1.getIndexKeyValuesPath(model);
|
|
809
903
|
var instance = connectedModels.find(function (_a) {
|
|
810
904
|
var instance = _a.instance;
|
|
811
|
-
|
|
905
|
+
var instanceKeyValuesPath = _this.getIndexKeyValuesPath(instance);
|
|
906
|
+
return util_1.keysEqual([instanceKeyValuesPath], [keyValuesPath]);
|
|
812
907
|
}).instance;
|
|
813
908
|
batch.push(instance);
|
|
814
909
|
};
|
|
815
910
|
this_1 = this;
|
|
816
911
|
try {
|
|
817
|
-
for (items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {
|
|
912
|
+
for (items_2 = tslib_1.__values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {
|
|
818
913
|
item = items_2_1.value;
|
|
819
|
-
|
|
914
|
+
_loop_2(item);
|
|
820
915
|
}
|
|
821
916
|
}
|
|
822
|
-
catch (
|
|
917
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
823
918
|
finally {
|
|
824
919
|
try {
|
|
825
920
|
if (items_2_1 && !items_2_1.done && (_a = items_2.return)) _a.call(items_2);
|
|
826
921
|
}
|
|
827
|
-
finally { if (
|
|
922
|
+
finally { if (e_11) throw e_11.error; }
|
|
828
923
|
}
|
|
829
|
-
return [4 /*yield*/, this.db.batchSave(storeName, batch)];
|
|
924
|
+
return [4 /*yield*/, this.db.batchSave(storeName, batch, keys)];
|
|
830
925
|
case 1: return [2 /*return*/, _b.sent()];
|
|
831
926
|
}
|
|
832
927
|
});
|