@aws-amplify/datastore 3.12.12 → 3.12.13-unstable.1
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/aws-amplify-datastore.js +1854 -965
- package/dist/aws-amplify-datastore.js.map +1 -1
- package/dist/aws-amplify-datastore.min.js +7 -7
- package/dist/aws-amplify-datastore.min.js.map +1 -1
- package/lib/datastore/datastore.d.ts +13 -16
- package/lib/datastore/datastore.js +130 -63
- package/lib/datastore/datastore.js.map +1 -1
- package/lib/index.d.ts +3 -19
- package/lib/predicates/index.d.ts +3 -2
- package/lib/predicates/index.js +12 -2
- package/lib/predicates/index.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageAdapter.d.ts +4 -3
- package/lib/storage/adapter/AsyncStorageAdapter.js +354 -203
- package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageDatabase.d.ts +14 -4
- package/lib/storage/adapter/AsyncStorageDatabase.js +65 -28
- package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib/storage/adapter/IndexedDBAdapter.d.ts +5 -4
- package/lib/storage/adapter/IndexedDBAdapter.js +389 -267
- package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib/storage/adapter/index.d.ts +1 -1
- package/lib/storage/storage.d.ts +1 -1
- package/lib/storage/storage.js +92 -27
- package/lib/storage/storage.js.map +1 -1
- package/lib/sync/index.d.ts +21 -4
- package/lib/sync/index.js +13 -11
- package/lib/sync/index.js.map +1 -1
- package/lib/sync/merger.d.ts +3 -3
- package/lib/sync/merger.js +7 -6
- package/lib/sync/merger.js.map +1 -1
- package/lib/sync/outbox.d.ts +2 -2
- package/lib/sync/outbox.js +11 -9
- package/lib/sync/outbox.js.map +1 -1
- package/lib/sync/processors/mutation.js +60 -42
- package/lib/sync/processors/mutation.js.map +1 -1
- package/lib/sync/processors/subscription.js.map +1 -1
- package/lib/sync/processors/sync.js.map +1 -1
- package/lib/sync/utils.d.ts +3 -2
- package/lib/sync/utils.js +61 -8
- package/lib/sync/utils.js.map +1 -1
- package/lib/types.d.ts +64 -25
- package/lib/types.js +10 -1
- package/lib/types.js.map +1 -1
- package/lib/util.d.ts +56 -24
- package/lib/util.js +334 -170
- package/lib/util.js.map +1 -1
- package/lib-esm/datastore/datastore.d.ts +13 -16
- package/lib-esm/datastore/datastore.js +132 -65
- 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 +355 -204
- 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 +66 -29
- package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +5 -4
- package/lib-esm/storage/adapter/IndexedDBAdapter.js +390 -268
- 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 +92 -27
- package/lib-esm/storage/storage.js.map +1 -1
- package/lib-esm/sync/index.d.ts +21 -4
- package/lib-esm/sync/index.js +15 -13
- package/lib-esm/sync/index.js.map +1 -1
- package/lib-esm/sync/merger.d.ts +3 -3
- package/lib-esm/sync/merger.js +7 -6
- package/lib-esm/sync/merger.js.map +1 -1
- package/lib-esm/sync/outbox.d.ts +2 -2
- package/lib-esm/sync/outbox.js +12 -10
- package/lib-esm/sync/outbox.js.map +1 -1
- package/lib-esm/sync/processors/mutation.js +61 -43
- package/lib-esm/sync/processors/mutation.js.map +1 -1
- package/lib-esm/sync/processors/subscription.js.map +1 -1
- 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 +62 -10
- package/lib-esm/sync/utils.js.map +1 -1
- package/lib-esm/types.d.ts +64 -25
- package/lib-esm/types.js +9 -2
- package/lib-esm/types.js.map +1 -1
- package/lib-esm/util.d.ts +56 -24
- package/lib-esm/util.js +334 -170
- package/lib-esm/util.js.map +1 -1
- package/package.json +7 -7
- package/src/datastore/datastore.ts +253 -113
- 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 +319 -136
- package/src/storage/adapter/index.ts +1 -1
- package/src/storage/storage.ts +68 -21
- package/src/sync/index.ts +41 -26
- package/src/sync/merger.ts +14 -4
- package/src/sync/outbox.ts +21 -8
- package/src/sync/processors/mutation.ts +49 -45
- package/src/sync/processors/subscription.ts +0 -1
- package/src/sync/processors/sync.ts +1 -3
- package/src/sync/utils.ts +69 -12
- package/src/types.ts +181 -29
- package/src/util.ts +415 -176
|
@@ -42,17 +42,6 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
42
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
43
|
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
44
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
45
|
var __read = (this && this.__read) || function (o, n) {
|
|
57
46
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
58
47
|
if (!m) return o;
|
|
@@ -69,6 +58,17 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
69
58
|
}
|
|
70
59
|
return ar;
|
|
71
60
|
};
|
|
61
|
+
var __values = (this && this.__values) || function(o) {
|
|
62
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
63
|
+
if (m) return m.call(o);
|
|
64
|
+
if (o && typeof o.length === "number") return {
|
|
65
|
+
next: function () {
|
|
66
|
+
if (o && i >= o.length) o = void 0;
|
|
67
|
+
return { value: o && o[i++], done: !o };
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
71
|
+
};
|
|
72
72
|
var __spread = (this && this.__spread) || function () {
|
|
73
73
|
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
74
74
|
return ar;
|
|
@@ -92,6 +92,19 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
92
92
|
function IndexedDBAdapter() {
|
|
93
93
|
this.dbName = DB_NAME;
|
|
94
94
|
}
|
|
95
|
+
IndexedDBAdapter.prototype.getStorenameForModel = function (modelConstructor) {
|
|
96
|
+
var namespace = this.namespaceResolver(modelConstructor);
|
|
97
|
+
var modelName = modelConstructor.name;
|
|
98
|
+
return util_1.getStorename(namespace, modelName);
|
|
99
|
+
};
|
|
100
|
+
// Retrieves primary key values from a model
|
|
101
|
+
IndexedDBAdapter.prototype.getIndexKeyValuesFromModel = function (model) {
|
|
102
|
+
var modelConstructor = Object.getPrototypeOf(model)
|
|
103
|
+
.constructor;
|
|
104
|
+
var namespaceName = this.namespaceResolver(modelConstructor);
|
|
105
|
+
var keys = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelConstructor.name);
|
|
106
|
+
return util_1.extractPrimaryKeyValues(model, keys);
|
|
107
|
+
};
|
|
95
108
|
IndexedDBAdapter.prototype.checkPrivate = function () {
|
|
96
109
|
return __awaiter(this, void 0, void 0, function () {
|
|
97
110
|
var isPrivate;
|
|
@@ -114,14 +127,12 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
114
127
|
});
|
|
115
128
|
});
|
|
116
129
|
};
|
|
117
|
-
IndexedDBAdapter.prototype.
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
var storeName = namespace + "_" + modelName;
|
|
124
|
-
return storeName;
|
|
130
|
+
IndexedDBAdapter.prototype.getNamespaceAndModelFromStorename = function (storeName) {
|
|
131
|
+
var _a = __read(storeName.split('_')), namespaceName = _a[0], modelNameArr = _a.slice(1);
|
|
132
|
+
return {
|
|
133
|
+
namespaceName: namespaceName,
|
|
134
|
+
modelName: modelNameArr.join('_'),
|
|
135
|
+
};
|
|
125
136
|
};
|
|
126
137
|
IndexedDBAdapter.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName, sessionId) {
|
|
127
138
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -154,79 +165,76 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
154
165
|
case 5:
|
|
155
166
|
_b.trys.push([5, 8, , 9]);
|
|
156
167
|
if (!!this.db) return [3 /*break*/, 7];
|
|
157
|
-
VERSION =
|
|
168
|
+
VERSION = 3;
|
|
158
169
|
_a = this;
|
|
159
170
|
return [4 /*yield*/, idb.openDB(this.dbName, VERSION, {
|
|
160
171
|
upgrade: function (db, oldVersion, newVersion, txn) { return __awaiter(_this, void 0, void 0, function () {
|
|
161
|
-
var _a, _b, storeName, origStore, tmpName, newStore, cursor, count, e_1_1, error_2;
|
|
162
|
-
var e_1,
|
|
172
|
+
var _a, _b, storeName, origStore, tmpName, _c, namespaceName, modelName, newStore, cursor, count, e_1_1, error_2;
|
|
173
|
+
var e_1, _d;
|
|
163
174
|
var _this = this;
|
|
164
|
-
return __generator(this, function (
|
|
165
|
-
switch (
|
|
175
|
+
return __generator(this, function (_e) {
|
|
176
|
+
switch (_e.label) {
|
|
166
177
|
case 0:
|
|
167
178
|
if (oldVersion === 0) {
|
|
168
179
|
Object.keys(theSchema.namespaces).forEach(function (namespaceName) {
|
|
169
180
|
var namespace = theSchema.namespaces[namespaceName];
|
|
170
181
|
Object.keys(namespace.models).forEach(function (modelName) {
|
|
171
|
-
var storeName =
|
|
182
|
+
var storeName = util_1.getStorename(namespaceName, modelName);
|
|
172
183
|
_this.createObjectStoreForModel(db, namespaceName, storeName, modelName);
|
|
173
184
|
});
|
|
174
185
|
});
|
|
175
186
|
return [2 /*return*/];
|
|
176
187
|
}
|
|
177
|
-
if (!(oldVersion === 1 && newVersion ===
|
|
178
|
-
|
|
188
|
+
if (!((oldVersion === 1 || oldVersion === 2) && newVersion === 3)) return [3 /*break*/, 16];
|
|
189
|
+
_e.label = 1;
|
|
179
190
|
case 1:
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
_e.trys.push([1, 14, , 15]);
|
|
192
|
+
_e.label = 2;
|
|
182
193
|
case 2:
|
|
183
|
-
|
|
194
|
+
_e.trys.push([2, 11, 12, 13]);
|
|
184
195
|
_a = __values(txn.objectStoreNames), _b = _a.next();
|
|
185
|
-
|
|
196
|
+
_e.label = 3;
|
|
186
197
|
case 3:
|
|
187
198
|
if (!!_b.done) return [3 /*break*/, 10];
|
|
188
199
|
storeName = _b.value;
|
|
189
200
|
origStore = txn.objectStore(storeName);
|
|
190
201
|
tmpName = "tmp_" + storeName;
|
|
191
202
|
origStore.name = tmpName;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
autoIncrement: true,
|
|
195
|
-
});
|
|
196
|
-
newStore.createIndex('byId', 'id', { unique: true });
|
|
203
|
+
_c = this.getNamespaceAndModelFromStorename(storeName), namespaceName = _c.namespaceName, modelName = _c.modelName;
|
|
204
|
+
newStore = this.createObjectStoreForModel(db, namespaceName, storeName, modelName);
|
|
197
205
|
return [4 /*yield*/, origStore.openCursor()];
|
|
198
206
|
case 4:
|
|
199
|
-
cursor =
|
|
207
|
+
cursor = _e.sent();
|
|
200
208
|
count = 0;
|
|
201
|
-
|
|
209
|
+
_e.label = 5;
|
|
202
210
|
case 5:
|
|
203
211
|
if (!(cursor && cursor.value)) return [3 /*break*/, 8];
|
|
204
212
|
// we don't pass key, since they are all new entries in the new store
|
|
205
213
|
return [4 /*yield*/, newStore.put(cursor.value)];
|
|
206
214
|
case 6:
|
|
207
215
|
// we don't pass key, since they are all new entries in the new store
|
|
208
|
-
|
|
216
|
+
_e.sent();
|
|
209
217
|
return [4 /*yield*/, cursor.continue()];
|
|
210
218
|
case 7:
|
|
211
|
-
cursor =
|
|
219
|
+
cursor = _e.sent();
|
|
212
220
|
count++;
|
|
213
221
|
return [3 /*break*/, 5];
|
|
214
222
|
case 8:
|
|
215
223
|
// delete original
|
|
216
224
|
db.deleteObjectStore(tmpName);
|
|
217
225
|
logger.debug(count + " " + storeName + " records migrated");
|
|
218
|
-
|
|
226
|
+
_e.label = 9;
|
|
219
227
|
case 9:
|
|
220
228
|
_b = _a.next();
|
|
221
229
|
return [3 /*break*/, 3];
|
|
222
230
|
case 10: return [3 /*break*/, 13];
|
|
223
231
|
case 11:
|
|
224
|
-
e_1_1 =
|
|
232
|
+
e_1_1 = _e.sent();
|
|
225
233
|
e_1 = { error: e_1_1 };
|
|
226
234
|
return [3 /*break*/, 13];
|
|
227
235
|
case 12:
|
|
228
236
|
try {
|
|
229
|
-
if (_b && !_b.done && (
|
|
237
|
+
if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
|
|
230
238
|
}
|
|
231
239
|
finally { if (e_1) throw e_1.error; }
|
|
232
240
|
return [7 /*endfinally*/];
|
|
@@ -241,7 +249,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
241
249
|
.map(function (modelName) {
|
|
242
250
|
return [
|
|
243
251
|
modelName,
|
|
244
|
-
|
|
252
|
+
util_1.getStorename(namespaceName, modelName),
|
|
245
253
|
];
|
|
246
254
|
})
|
|
247
255
|
.filter(function (_a) {
|
|
@@ -255,7 +263,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
255
263
|
});
|
|
256
264
|
return [3 /*break*/, 15];
|
|
257
265
|
case 14:
|
|
258
|
-
error_2 =
|
|
266
|
+
error_2 = _e.sent();
|
|
259
267
|
logger.error('Error migrating IndexedDB data', error_2);
|
|
260
268
|
txn.abort();
|
|
261
269
|
throw error_2;
|
|
@@ -279,7 +287,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
279
287
|
});
|
|
280
288
|
});
|
|
281
289
|
};
|
|
282
|
-
IndexedDBAdapter.prototype._get = function (storeOrStoreName,
|
|
290
|
+
IndexedDBAdapter.prototype._get = function (storeOrStoreName, keyArr) {
|
|
283
291
|
return __awaiter(this, void 0, void 0, function () {
|
|
284
292
|
var index, storeName, store, result;
|
|
285
293
|
return __generator(this, function (_a) {
|
|
@@ -287,13 +295,13 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
287
295
|
case 0:
|
|
288
296
|
if (typeof storeOrStoreName === 'string') {
|
|
289
297
|
storeName = storeOrStoreName;
|
|
290
|
-
index = this.db.transaction(storeName, 'readonly').store.index('
|
|
298
|
+
index = this.db.transaction(storeName, 'readonly').store.index('byPk');
|
|
291
299
|
}
|
|
292
300
|
else {
|
|
293
301
|
store = storeOrStoreName;
|
|
294
|
-
index = store.index('
|
|
302
|
+
index = store.index('byPk');
|
|
295
303
|
}
|
|
296
|
-
return [4 /*yield*/, index.get(
|
|
304
|
+
return [4 /*yield*/, index.get(keyArr)];
|
|
297
305
|
case 1:
|
|
298
306
|
result = _a.sent();
|
|
299
307
|
return [2 /*return*/, result];
|
|
@@ -304,7 +312,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
304
312
|
IndexedDBAdapter.prototype.save = function (model, condition) {
|
|
305
313
|
var e_2, _a;
|
|
306
314
|
return __awaiter(this, void 0, void 0, function () {
|
|
307
|
-
var modelConstructor, storeName,
|
|
315
|
+
var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, tx, store, keyValues, fromDB, predicates, predicateObjs, type, isValid, msg, result, connectionStoreNames_1, connectionStoreNames_1_1, resItem, storeName_1, item, instance, keys, store_1, itemKeyValues, fromDB_1, opType, modelKeyValues, key, e_2_1;
|
|
308
316
|
var _this = this;
|
|
309
317
|
return __generator(this, function (_b) {
|
|
310
318
|
switch (_b.label) {
|
|
@@ -314,18 +322,20 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
314
322
|
modelConstructor = Object.getPrototypeOf(model)
|
|
315
323
|
.constructor;
|
|
316
324
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
317
|
-
connectedModels = util_1.traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
318
325
|
namespaceName = this.namespaceResolver(modelConstructor);
|
|
326
|
+
connectedModels = util_1.traverseModel(modelConstructor.name, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
319
327
|
set = new Set();
|
|
320
328
|
connectionStoreNames = Object.values(connectedModels).map(function (_a) {
|
|
321
329
|
var modelName = _a.modelName, item = _a.item, instance = _a.instance;
|
|
322
|
-
var storeName =
|
|
330
|
+
var storeName = util_1.getStorename(namespaceName, modelName);
|
|
323
331
|
set.add(storeName);
|
|
324
|
-
|
|
332
|
+
var keys = util_1.getIndexKeys(_this.schema.namespaces[namespaceName], modelName);
|
|
333
|
+
return { storeName: storeName, item: item, instance: instance, keys: keys };
|
|
325
334
|
});
|
|
326
335
|
tx = this.db.transaction(__spread([storeName], Array.from(set.values())), 'readwrite');
|
|
327
336
|
store = tx.objectStore(storeName);
|
|
328
|
-
|
|
337
|
+
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
338
|
+
return [4 /*yield*/, this._get(store, keyValues)];
|
|
329
339
|
case 2:
|
|
330
340
|
fromDB = _b.sent();
|
|
331
341
|
if (condition && fromDB) {
|
|
@@ -348,15 +358,20 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
348
358
|
case 5:
|
|
349
359
|
if (!(connectionStoreNames_1_1 = _b.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 10];
|
|
350
360
|
resItem = connectionStoreNames_1_1.value;
|
|
351
|
-
storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance;
|
|
361
|
+
storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance, keys = resItem.keys;
|
|
352
362
|
store_1 = tx.objectStore(storeName_1);
|
|
353
|
-
|
|
354
|
-
|
|
363
|
+
itemKeyValues = keys.map(function (key) {
|
|
364
|
+
var value = item[key];
|
|
365
|
+
return value;
|
|
366
|
+
});
|
|
367
|
+
return [4 /*yield*/, this._get(store_1, itemKeyValues)];
|
|
355
368
|
case 6:
|
|
356
369
|
fromDB_1 = _b.sent();
|
|
357
370
|
opType = fromDB_1 === undefined ? types_1.OpType.INSERT : types_1.OpType.UPDATE;
|
|
358
|
-
|
|
359
|
-
|
|
371
|
+
modelKeyValues = this.getIndexKeyValuesFromModel(model);
|
|
372
|
+
if (!(util_1.keysEqual(itemKeyValues, modelKeyValues) ||
|
|
373
|
+
opType === types_1.OpType.INSERT)) return [3 /*break*/, 9];
|
|
374
|
+
return [4 /*yield*/, store_1.index('byPk').getKey(itemKeyValues)];
|
|
360
375
|
case 7:
|
|
361
376
|
key = _b.sent();
|
|
362
377
|
return [4 /*yield*/, store_1.put(item, key)];
|
|
@@ -394,7 +409,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
394
409
|
var records_1, records_1_1, records_2, records_2_1;
|
|
395
410
|
var e_3, _a, e_4, _b, e_5, _c;
|
|
396
411
|
return __awaiter(this, void 0, void 0, function () {
|
|
397
|
-
var namespace, relations, connectionStoreNames, modelConstructor, tx, relations_1, relations_1_1, relation, fieldName, modelName, targetName, storeName, store, modelConstructor_1, _d, recordItem, getByfield, connectionRecord, e_4_1, recordItem, connectionRecord, e_5_1, e_3_1;
|
|
412
|
+
var namespace, relations, connectionStoreNames, modelConstructor, tx, relations_1, relations_1_1, relation, fieldName, modelName, targetName, targetNames, storeName, store, modelConstructor_1, _d, recordItem, getByFields, allPresent, keys, connectionRecord, getByfield, key, connectionRecord, e_4_1, recordItem, allPresent, keys, connectionRecord, key, connectionRecord, e_5_1, e_3_1;
|
|
398
413
|
var _this = this;
|
|
399
414
|
return __generator(this, function (_e) {
|
|
400
415
|
switch (_e.label) {
|
|
@@ -403,7 +418,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
403
418
|
relations = namespace.relationships[srcModelName].relationTypes;
|
|
404
419
|
connectionStoreNames = relations.map(function (_a) {
|
|
405
420
|
var modelName = _a.modelName;
|
|
406
|
-
return
|
|
421
|
+
return util_1.getStorename(namespaceName, modelName);
|
|
407
422
|
});
|
|
408
423
|
modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
|
|
409
424
|
if (connectionStoreNames.length === 0) {
|
|
@@ -414,122 +429,170 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
414
429
|
tx = this.db.transaction(__spread(connectionStoreNames), 'readonly');
|
|
415
430
|
_e.label = 1;
|
|
416
431
|
case 1:
|
|
417
|
-
_e.trys.push([1,
|
|
432
|
+
_e.trys.push([1, 38, 39, 44]);
|
|
418
433
|
relations_1 = __asyncValues(relations);
|
|
419
434
|
_e.label = 2;
|
|
420
435
|
case 2: return [4 /*yield*/, relations_1.next()];
|
|
421
436
|
case 3:
|
|
422
|
-
if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/,
|
|
437
|
+
if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
|
|
423
438
|
relation = relations_1_1.value;
|
|
424
|
-
fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName;
|
|
425
|
-
storeName =
|
|
439
|
+
fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName, targetNames = relation.targetNames;
|
|
440
|
+
storeName = util_1.getStorename(namespaceName, modelName);
|
|
426
441
|
store = tx.objectStore(storeName);
|
|
427
442
|
modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, modelName);
|
|
428
443
|
_d = relation.relationType;
|
|
429
444
|
switch (_d) {
|
|
430
445
|
case 'HAS_ONE': return [3 /*break*/, 4];
|
|
431
|
-
case 'BELONGS_TO': return [3 /*break*/,
|
|
432
|
-
case 'HAS_MANY': return [3 /*break*/,
|
|
446
|
+
case 'BELONGS_TO': return [3 /*break*/, 19];
|
|
447
|
+
case 'HAS_MANY': return [3 /*break*/, 34];
|
|
433
448
|
}
|
|
434
|
-
return [3 /*break*/,
|
|
449
|
+
return [3 /*break*/, 35];
|
|
435
450
|
case 4:
|
|
436
|
-
_e.trys.push([4,
|
|
451
|
+
_e.trys.push([4, 12, 13, 18]);
|
|
437
452
|
records_1 = __asyncValues(records);
|
|
438
453
|
_e.label = 5;
|
|
439
454
|
case 5: return [4 /*yield*/, records_1.next()];
|
|
440
455
|
case 6:
|
|
441
|
-
if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/,
|
|
456
|
+
if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/, 11];
|
|
442
457
|
recordItem = records_1_1.value;
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
458
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
|
|
459
|
+
getByFields = [];
|
|
460
|
+
allPresent = void 0;
|
|
461
|
+
// iterate through all targetnames to make sure they are all present in the recordItem
|
|
462
|
+
allPresent = targetNames.every(function (targetName) {
|
|
463
|
+
return recordItem[targetName] != null;
|
|
464
|
+
});
|
|
465
|
+
if (!allPresent) {
|
|
466
|
+
return [3 /*break*/, 11];
|
|
467
|
+
}
|
|
468
|
+
getByFields = targetNames;
|
|
469
|
+
keys = getByFields.map(function (getByField) { return recordItem[getByField]; });
|
|
470
|
+
return [4 /*yield*/, this._get(store, keys)];
|
|
447
471
|
case 7:
|
|
448
472
|
connectionRecord = _e.sent();
|
|
449
473
|
recordItem[fieldName] =
|
|
450
474
|
connectionRecord &&
|
|
451
475
|
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
452
|
-
|
|
453
|
-
case 8:
|
|
454
|
-
|
|
455
|
-
|
|
476
|
+
return [3 /*break*/, 10];
|
|
477
|
+
case 8:
|
|
478
|
+
getByfield = recordItem[targetName]
|
|
479
|
+
? targetName
|
|
480
|
+
: fieldName;
|
|
481
|
+
// We break here, because the recordItem does not have 'team', the `getByField`
|
|
482
|
+
// extract the keys on the related model.
|
|
483
|
+
if (!recordItem[getByfield])
|
|
484
|
+
return [3 /*break*/, 11];
|
|
485
|
+
key = [recordItem[getByfield]];
|
|
486
|
+
return [4 /*yield*/, this._get(store, key)];
|
|
487
|
+
case 9:
|
|
488
|
+
connectionRecord = _e.sent();
|
|
489
|
+
recordItem[fieldName] =
|
|
490
|
+
connectionRecord &&
|
|
491
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
492
|
+
_e.label = 10;
|
|
493
|
+
case 10: return [3 /*break*/, 5];
|
|
494
|
+
case 11: return [3 /*break*/, 18];
|
|
495
|
+
case 12:
|
|
456
496
|
e_4_1 = _e.sent();
|
|
457
497
|
e_4 = { error: e_4_1 };
|
|
458
|
-
return [3 /*break*/,
|
|
459
|
-
case
|
|
460
|
-
_e.trys.push([
|
|
461
|
-
if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/,
|
|
498
|
+
return [3 /*break*/, 18];
|
|
499
|
+
case 13:
|
|
500
|
+
_e.trys.push([13, , 16, 17]);
|
|
501
|
+
if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/, 15];
|
|
462
502
|
return [4 /*yield*/, _b.call(records_1)];
|
|
463
|
-
case 12:
|
|
464
|
-
_e.sent();
|
|
465
|
-
_e.label = 13;
|
|
466
|
-
case 13: return [3 /*break*/, 15];
|
|
467
503
|
case 14:
|
|
504
|
+
_e.sent();
|
|
505
|
+
_e.label = 15;
|
|
506
|
+
case 15: return [3 /*break*/, 17];
|
|
507
|
+
case 16:
|
|
468
508
|
if (e_4) throw e_4.error;
|
|
469
509
|
return [7 /*endfinally*/];
|
|
470
|
-
case
|
|
471
|
-
case
|
|
472
|
-
case 17:
|
|
473
|
-
_e.trys.push([17, 23, 24, 29]);
|
|
474
|
-
records_2 = __asyncValues(records);
|
|
475
|
-
_e.label = 18;
|
|
476
|
-
case 18: return [4 /*yield*/, records_2.next()];
|
|
510
|
+
case 17: return [7 /*endfinally*/];
|
|
511
|
+
case 18: return [3 /*break*/, 36];
|
|
477
512
|
case 19:
|
|
478
|
-
|
|
513
|
+
_e.trys.push([19, 27, 28, 33]);
|
|
514
|
+
records_2 = __asyncValues(records);
|
|
515
|
+
_e.label = 20;
|
|
516
|
+
case 20: return [4 /*yield*/, records_2.next()];
|
|
517
|
+
case 21:
|
|
518
|
+
if (!(records_2_1 = _e.sent(), !records_2_1.done)) return [3 /*break*/, 26];
|
|
479
519
|
recordItem = records_2_1.value;
|
|
480
|
-
if (!
|
|
481
|
-
|
|
482
|
-
|
|
520
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 23];
|
|
521
|
+
allPresent = void 0;
|
|
522
|
+
// iterate through all targetnames to make sure they are all present in the recordItem
|
|
523
|
+
allPresent = targetNames.every(function (targetName) {
|
|
524
|
+
return recordItem[targetName] != null;
|
|
525
|
+
});
|
|
526
|
+
// If not present, there is not yet a connected record
|
|
527
|
+
if (!allPresent) {
|
|
528
|
+
return [3 /*break*/, 26];
|
|
529
|
+
}
|
|
530
|
+
keys = targetNames.map(function (targetName) { return recordItem[targetName]; });
|
|
531
|
+
return [4 /*yield*/, this._get(store, keys)];
|
|
532
|
+
case 22:
|
|
483
533
|
connectionRecord = _e.sent();
|
|
484
534
|
recordItem[fieldName] =
|
|
485
535
|
connectionRecord &&
|
|
486
536
|
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
537
|
+
targetNames === null || targetNames === void 0 ? void 0 : targetNames.map(function (targetName) {
|
|
538
|
+
delete recordItem[targetName];
|
|
539
|
+
});
|
|
540
|
+
return [3 /*break*/, 25];
|
|
491
541
|
case 23:
|
|
542
|
+
if (!recordItem[targetName]) return [3 /*break*/, 25];
|
|
543
|
+
key = [recordItem[targetName]];
|
|
544
|
+
return [4 /*yield*/, this._get(store, key)];
|
|
545
|
+
case 24:
|
|
546
|
+
connectionRecord = _e.sent();
|
|
547
|
+
recordItem[fieldName] =
|
|
548
|
+
connectionRecord &&
|
|
549
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
550
|
+
delete recordItem[targetName];
|
|
551
|
+
_e.label = 25;
|
|
552
|
+
case 25: return [3 /*break*/, 20];
|
|
553
|
+
case 26: return [3 /*break*/, 33];
|
|
554
|
+
case 27:
|
|
492
555
|
e_5_1 = _e.sent();
|
|
493
556
|
e_5 = { error: e_5_1 };
|
|
494
|
-
return [3 /*break*/,
|
|
495
|
-
case
|
|
496
|
-
_e.trys.push([
|
|
497
|
-
if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/,
|
|
557
|
+
return [3 /*break*/, 33];
|
|
558
|
+
case 28:
|
|
559
|
+
_e.trys.push([28, , 31, 32]);
|
|
560
|
+
if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/, 30];
|
|
498
561
|
return [4 /*yield*/, _c.call(records_2)];
|
|
499
|
-
case
|
|
562
|
+
case 29:
|
|
500
563
|
_e.sent();
|
|
501
|
-
_e.label =
|
|
502
|
-
case
|
|
503
|
-
case
|
|
564
|
+
_e.label = 30;
|
|
565
|
+
case 30: return [3 /*break*/, 32];
|
|
566
|
+
case 31:
|
|
504
567
|
if (e_5) throw e_5.error;
|
|
505
568
|
return [7 /*endfinally*/];
|
|
506
|
-
case
|
|
507
|
-
case
|
|
508
|
-
case
|
|
569
|
+
case 32: return [7 /*endfinally*/];
|
|
570
|
+
case 33: return [3 /*break*/, 36];
|
|
571
|
+
case 34:
|
|
509
572
|
// TODO: Lazy loading
|
|
510
|
-
return [3 /*break*/,
|
|
511
|
-
case
|
|
573
|
+
return [3 /*break*/, 36];
|
|
574
|
+
case 35:
|
|
512
575
|
util_1.exhaustiveCheck(relation.relationType);
|
|
513
|
-
return [3 /*break*/,
|
|
514
|
-
case
|
|
515
|
-
case
|
|
516
|
-
case
|
|
576
|
+
return [3 /*break*/, 36];
|
|
577
|
+
case 36: return [3 /*break*/, 2];
|
|
578
|
+
case 37: return [3 /*break*/, 44];
|
|
579
|
+
case 38:
|
|
517
580
|
e_3_1 = _e.sent();
|
|
518
581
|
e_3 = { error: e_3_1 };
|
|
519
|
-
return [3 /*break*/,
|
|
520
|
-
case
|
|
521
|
-
_e.trys.push([
|
|
522
|
-
if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/,
|
|
582
|
+
return [3 /*break*/, 44];
|
|
583
|
+
case 39:
|
|
584
|
+
_e.trys.push([39, , 42, 43]);
|
|
585
|
+
if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 41];
|
|
523
586
|
return [4 /*yield*/, _a.call(relations_1)];
|
|
524
|
-
case
|
|
587
|
+
case 40:
|
|
525
588
|
_e.sent();
|
|
526
|
-
_e.label =
|
|
527
|
-
case
|
|
528
|
-
case
|
|
589
|
+
_e.label = 41;
|
|
590
|
+
case 41: return [3 /*break*/, 43];
|
|
591
|
+
case 42:
|
|
529
592
|
if (e_3) throw e_3.error;
|
|
530
593
|
return [7 /*endfinally*/];
|
|
531
|
-
case
|
|
532
|
-
case
|
|
594
|
+
case 43: return [7 /*endfinally*/];
|
|
595
|
+
case 44: return [2 /*return*/, records.map(function (record) {
|
|
533
596
|
return _this.modelInstanceCreator(modelConstructor, record);
|
|
534
597
|
})];
|
|
535
598
|
}
|
|
@@ -538,7 +601,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
538
601
|
};
|
|
539
602
|
IndexedDBAdapter.prototype.query = function (modelConstructor, predicate, pagination) {
|
|
540
603
|
return __awaiter(this, void 0, void 0, function () {
|
|
541
|
-
var storeName, namespaceName, predicates,
|
|
604
|
+
var storeName, namespaceName, predicates, keyPath, queryByKey, hasSort, hasPagination, records;
|
|
542
605
|
var _this = this;
|
|
543
606
|
return __generator(this, function (_a) {
|
|
544
607
|
switch (_a.label) {
|
|
@@ -548,7 +611,8 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
548
611
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
549
612
|
namespaceName = this.namespaceResolver(modelConstructor);
|
|
550
613
|
predicates = predicate && predicates_1.ModelPredicateCreator.getPredicates(predicate);
|
|
551
|
-
|
|
614
|
+
keyPath = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelConstructor.name);
|
|
615
|
+
queryByKey = predicates && this.keyValueFromPredicate(predicates, keyPath);
|
|
552
616
|
hasSort = pagination && pagination.sort;
|
|
553
617
|
hasPagination = pagination && pagination.limit;
|
|
554
618
|
return [4 /*yield*/, (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -556,8 +620,8 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
556
620
|
return __generator(this, function (_a) {
|
|
557
621
|
switch (_a.label) {
|
|
558
622
|
case 0:
|
|
559
|
-
if (!
|
|
560
|
-
return [4 /*yield*/, this.
|
|
623
|
+
if (!queryByKey) return [3 /*break*/, 2];
|
|
624
|
+
return [4 /*yield*/, this.getByKey(storeName, queryByKey)];
|
|
561
625
|
case 1:
|
|
562
626
|
record = _a.sent();
|
|
563
627
|
return [2 /*return*/, record ? [record] : []];
|
|
@@ -589,12 +653,12 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
589
653
|
});
|
|
590
654
|
});
|
|
591
655
|
};
|
|
592
|
-
IndexedDBAdapter.prototype.
|
|
656
|
+
IndexedDBAdapter.prototype.getByKey = function (storeName, keyValue) {
|
|
593
657
|
return __awaiter(this, void 0, void 0, function () {
|
|
594
658
|
var record;
|
|
595
659
|
return __generator(this, function (_a) {
|
|
596
660
|
switch (_a.label) {
|
|
597
|
-
case 0: return [4 /*yield*/, this._get(storeName,
|
|
661
|
+
case 0: return [4 /*yield*/, this._get(storeName, keyValue)];
|
|
598
662
|
case 1:
|
|
599
663
|
record = _a.sent();
|
|
600
664
|
return [2 /*return*/, record];
|
|
@@ -612,11 +676,31 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
612
676
|
});
|
|
613
677
|
});
|
|
614
678
|
};
|
|
615
|
-
IndexedDBAdapter.prototype.
|
|
679
|
+
IndexedDBAdapter.prototype.keyValueFromPredicate = function (predicates, keyPath) {
|
|
680
|
+
var e_6, _a;
|
|
616
681
|
var predicateObjs = predicates.predicates;
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
682
|
+
if (predicateObjs.length !== keyPath.length) {
|
|
683
|
+
return;
|
|
684
|
+
}
|
|
685
|
+
var keyValues = [];
|
|
686
|
+
var _loop_1 = function (key) {
|
|
687
|
+
var predicateObj = predicateObjs.find(function (p) { return types_1.isPredicateObj(p) && p.field === key && p.operator === 'eq'; });
|
|
688
|
+
predicateObj && keyValues.push(predicateObj.operand);
|
|
689
|
+
};
|
|
690
|
+
try {
|
|
691
|
+
for (var keyPath_1 = __values(keyPath), keyPath_1_1 = keyPath_1.next(); !keyPath_1_1.done; keyPath_1_1 = keyPath_1.next()) {
|
|
692
|
+
var key = keyPath_1_1.value;
|
|
693
|
+
_loop_1(key);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
697
|
+
finally {
|
|
698
|
+
try {
|
|
699
|
+
if (keyPath_1_1 && !keyPath_1_1.done && (_a = keyPath_1.return)) _a.call(keyPath_1);
|
|
700
|
+
}
|
|
701
|
+
finally { if (e_6) throw e_6.error; }
|
|
702
|
+
}
|
|
703
|
+
return keyValues.length === keyPath.length ? keyValues : undefined;
|
|
620
704
|
};
|
|
621
705
|
IndexedDBAdapter.prototype.filterOnPredicate = function (storeName, predicates) {
|
|
622
706
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -722,7 +806,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
722
806
|
};
|
|
723
807
|
IndexedDBAdapter.prototype.delete = function (modelOrModelConstructor, condition) {
|
|
724
808
|
return __awaiter(this, void 0, void 0, function () {
|
|
725
|
-
var deleteQueue, modelConstructor, nameSpace, storeName, models, relations, deletedModels, deletedModels, model, modelConstructor,
|
|
809
|
+
var deleteQueue, modelConstructor, nameSpace, storeName, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, tx, store, keyValues, fromDB, msg, predicates, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
|
|
726
810
|
return __generator(this, function (_a) {
|
|
727
811
|
switch (_a.label) {
|
|
728
812
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
@@ -771,12 +855,13 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
771
855
|
model = modelOrModelConstructor;
|
|
772
856
|
modelConstructor = Object.getPrototypeOf(model)
|
|
773
857
|
.constructor;
|
|
774
|
-
|
|
858
|
+
namespaceName = this.namespaceResolver(modelConstructor);
|
|
775
859
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
776
860
|
if (!condition) return [3 /*break*/, 13];
|
|
777
861
|
tx = this.db.transaction([storeName], 'readwrite');
|
|
778
862
|
store = tx.objectStore(storeName);
|
|
779
|
-
|
|
863
|
+
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
864
|
+
return [4 /*yield*/, this._get(store, keyValues)];
|
|
780
865
|
case 10:
|
|
781
866
|
fromDB = _a.sent();
|
|
782
867
|
if (fromDB === undefined) {
|
|
@@ -795,16 +880,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
795
880
|
return [4 /*yield*/, tx.done];
|
|
796
881
|
case 11:
|
|
797
882
|
_a.sent();
|
|
798
|
-
relations = this.schema.namespaces[
|
|
799
|
-
|
|
800
|
-
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
|
|
883
|
+
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
884
|
+
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
801
885
|
case 12:
|
|
802
886
|
_a.sent();
|
|
803
887
|
return [3 /*break*/, 15];
|
|
804
888
|
case 13:
|
|
805
|
-
relations = this.schema.namespaces[
|
|
806
|
-
|
|
807
|
-
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
|
|
889
|
+
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
890
|
+
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
808
891
|
case 14:
|
|
809
892
|
_a.sent();
|
|
810
893
|
_a.label = 15;
|
|
@@ -823,9 +906,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
823
906
|
};
|
|
824
907
|
IndexedDBAdapter.prototype.deleteItem = function (deleteQueue) {
|
|
825
908
|
var deleteQueue_1, deleteQueue_1_1;
|
|
826
|
-
var
|
|
909
|
+
var e_7, _a, e_8, _b;
|
|
827
910
|
return __awaiter(this, void 0, void 0, function () {
|
|
828
|
-
var connectionStoreNames, tx, deleteItem, storeName, items, store, items_1, items_1_1, item, key,
|
|
911
|
+
var connectionStoreNames, tx, deleteItem, storeName, items, store, items_1, items_1_1, item, key, keyValues, itemKey, e_8_1, e_7_1;
|
|
829
912
|
return __generator(this, function (_c) {
|
|
830
913
|
switch (_c.label) {
|
|
831
914
|
case 0:
|
|
@@ -857,11 +940,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
857
940
|
if (!item) return [3 /*break*/, 12];
|
|
858
941
|
key = void 0;
|
|
859
942
|
if (!(typeof item === 'object')) return [3 /*break*/, 8];
|
|
860
|
-
|
|
943
|
+
keyValues = this.getIndexKeyValuesFromModel(item);
|
|
944
|
+
return [4 /*yield*/, store.index('byPk').getKey(keyValues)];
|
|
861
945
|
case 7:
|
|
862
946
|
key = _c.sent();
|
|
863
947
|
return [3 /*break*/, 10];
|
|
864
|
-
case 8:
|
|
948
|
+
case 8:
|
|
949
|
+
itemKey = [item.toString()];
|
|
950
|
+
return [4 /*yield*/, store.index('byPk').getKey([itemKey])];
|
|
865
951
|
case 9:
|
|
866
952
|
key = _c.sent();
|
|
867
953
|
_c.label = 10;
|
|
@@ -874,8 +960,8 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
874
960
|
case 12: return [3 /*break*/, 5];
|
|
875
961
|
case 13: return [3 /*break*/, 20];
|
|
876
962
|
case 14:
|
|
877
|
-
|
|
878
|
-
|
|
963
|
+
e_8_1 = _c.sent();
|
|
964
|
+
e_8 = { error: e_8_1 };
|
|
879
965
|
return [3 /*break*/, 20];
|
|
880
966
|
case 15:
|
|
881
967
|
_c.trys.push([15, , 18, 19]);
|
|
@@ -886,14 +972,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
886
972
|
_c.label = 17;
|
|
887
973
|
case 17: return [3 /*break*/, 19];
|
|
888
974
|
case 18:
|
|
889
|
-
if (
|
|
975
|
+
if (e_8) throw e_8.error;
|
|
890
976
|
return [7 /*endfinally*/];
|
|
891
977
|
case 19: return [7 /*endfinally*/];
|
|
892
978
|
case 20: return [3 /*break*/, 2];
|
|
893
979
|
case 21: return [3 /*break*/, 28];
|
|
894
980
|
case 22:
|
|
895
|
-
|
|
896
|
-
|
|
981
|
+
e_7_1 = _c.sent();
|
|
982
|
+
e_7 = { error: e_7_1 };
|
|
897
983
|
return [3 /*break*/, 28];
|
|
898
984
|
case 23:
|
|
899
985
|
_c.trys.push([23, , 26, 27]);
|
|
@@ -904,7 +990,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
904
990
|
_c.label = 25;
|
|
905
991
|
case 25: return [3 /*break*/, 27];
|
|
906
992
|
case 26:
|
|
907
|
-
if (
|
|
993
|
+
if (e_7) throw e_7.error;
|
|
908
994
|
return [7 /*endfinally*/];
|
|
909
995
|
case 27: return [7 /*endfinally*/];
|
|
910
996
|
case 28: return [2 /*return*/];
|
|
@@ -914,145 +1000,178 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
914
1000
|
};
|
|
915
1001
|
IndexedDBAdapter.prototype.deleteTraverse = function (relations, models, srcModel, nameSpace, deleteQueue) {
|
|
916
1002
|
var relations_2, relations_2_1, models_1, models_1_1, models_2, models_2_1;
|
|
917
|
-
var
|
|
1003
|
+
var e_9, _a, e_10, _b, e_11, _c;
|
|
918
1004
|
return __awaiter(this, void 0, void 0, function () {
|
|
919
|
-
var rel, relationType,
|
|
1005
|
+
var rel, relationType, modelName, targetName, targetNames, associatedWith, storeName, _d, model, hasOneIndex, values, recordToDelete, index, values, value, recordToDelete, e_10_1, model, index, keyValues, childrenArray, e_11_1, e_9_1;
|
|
920
1006
|
var _this = this;
|
|
921
1007
|
return __generator(this, function (_e) {
|
|
922
1008
|
switch (_e.label) {
|
|
923
1009
|
case 0:
|
|
924
|
-
_e.trys.push([0,
|
|
1010
|
+
_e.trys.push([0, 38, 39, 44]);
|
|
925
1011
|
relations_2 = __asyncValues(relations);
|
|
926
1012
|
_e.label = 1;
|
|
927
1013
|
case 1: return [4 /*yield*/, relations_2.next()];
|
|
928
1014
|
case 2:
|
|
929
|
-
if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/,
|
|
1015
|
+
if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/, 37];
|
|
930
1016
|
rel = relations_2_1.value;
|
|
931
|
-
relationType = rel.relationType,
|
|
932
|
-
storeName =
|
|
933
|
-
index = util_1.getIndex(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
934
|
-
.relationTypes, srcModel) ||
|
|
935
|
-
// if we were unable to find an index via relationTypes
|
|
936
|
-
// i.e. for keyName connections, attempt to find one by the
|
|
937
|
-
// associatedWith property
|
|
938
|
-
util_1.getIndexFromAssociation(this.schema.namespaces[nameSpace].relationships[modelName].indexes, rel.associatedWith);
|
|
1017
|
+
relationType = rel.relationType, modelName = rel.modelName, targetName = rel.targetName, targetNames = rel.targetNames, associatedWith = rel.associatedWith;
|
|
1018
|
+
storeName = util_1.getStorename(nameSpace, modelName);
|
|
939
1019
|
_d = relationType;
|
|
940
1020
|
switch (_d) {
|
|
941
1021
|
case 'HAS_ONE': return [3 /*break*/, 3];
|
|
942
|
-
case 'HAS_MANY': return [3 /*break*/,
|
|
943
|
-
case 'BELONGS_TO': return [3 /*break*/,
|
|
1022
|
+
case 'HAS_MANY': return [3 /*break*/, 20];
|
|
1023
|
+
case 'BELONGS_TO': return [3 /*break*/, 34];
|
|
944
1024
|
}
|
|
945
|
-
return [3 /*break*/,
|
|
1025
|
+
return [3 /*break*/, 35];
|
|
946
1026
|
case 3:
|
|
947
|
-
_e.trys.push([3,
|
|
1027
|
+
_e.trys.push([3, 13, 14, 19]);
|
|
948
1028
|
models_1 = __asyncValues(models);
|
|
949
1029
|
_e.label = 4;
|
|
950
1030
|
case 4: return [4 /*yield*/, models_1.next()];
|
|
951
1031
|
case 5:
|
|
952
|
-
if (!(models_1_1 = _e.sent(), !models_1_1.done)) return [3 /*break*/,
|
|
1032
|
+
if (!(models_1_1 = _e.sent(), !models_1_1.done)) return [3 /*break*/, 12];
|
|
953
1033
|
model = models_1_1.value;
|
|
954
|
-
hasOneIndex =
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
if (
|
|
958
|
-
return [3 /*break*/,
|
|
1034
|
+
hasOneIndex = 'byPk';
|
|
1035
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
|
|
1036
|
+
values = targetNames.map(function (targetName) { return model[targetName]; });
|
|
1037
|
+
if (values.length === 0)
|
|
1038
|
+
return [3 /*break*/, 12];
|
|
959
1039
|
return [4 /*yield*/, this.db
|
|
960
1040
|
.transaction(storeName, 'readwrite')
|
|
961
1041
|
.objectStore(storeName)
|
|
962
1042
|
.index(hasOneIndex)
|
|
963
|
-
.get(
|
|
1043
|
+
.get(values)];
|
|
964
1044
|
case 6:
|
|
965
1045
|
recordToDelete = (_e.sent());
|
|
966
1046
|
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
967
1047
|
.relationTypes, recordToDelete ? [recordToDelete] : [], modelName, nameSpace, deleteQueue)];
|
|
968
1048
|
case 7:
|
|
969
1049
|
_e.sent();
|
|
970
|
-
|
|
971
|
-
case 8:
|
|
972
|
-
|
|
1050
|
+
return [3 /*break*/, 12];
|
|
1051
|
+
case 8:
|
|
1052
|
+
index = void 0;
|
|
1053
|
+
values = void 0;
|
|
1054
|
+
if (targetName && targetName in model) {
|
|
1055
|
+
index = hasOneIndex;
|
|
1056
|
+
value = model[targetName];
|
|
1057
|
+
values = [value];
|
|
1058
|
+
}
|
|
1059
|
+
else {
|
|
1060
|
+
// backwards compatability for older versions of codegen that did not emit targetName for HAS_ONE relations
|
|
1061
|
+
// TODO: can we deprecate this? it's been ~2 years since codegen started including targetName for HAS_ONE
|
|
1062
|
+
// If we deprecate, we'll need to re-gen the MIPR in __tests__/schema.ts > newSchema
|
|
1063
|
+
// otherwise some unit tests will fail
|
|
1064
|
+
index = util_1.getIndex(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
1065
|
+
.relationTypes, srcModel);
|
|
1066
|
+
values = this.getIndexKeyValuesFromModel(model);
|
|
1067
|
+
}
|
|
1068
|
+
if (!values || !index)
|
|
1069
|
+
return [3 /*break*/, 12];
|
|
1070
|
+
return [4 /*yield*/, this.db
|
|
1071
|
+
.transaction(storeName, 'readwrite')
|
|
1072
|
+
.objectStore(storeName)
|
|
1073
|
+
.index(index)
|
|
1074
|
+
.get(values)];
|
|
1075
|
+
case 9:
|
|
1076
|
+
recordToDelete = (_e.sent());
|
|
1077
|
+
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
1078
|
+
.relationTypes, recordToDelete ? [recordToDelete] : [], modelName, nameSpace, deleteQueue)];
|
|
973
1079
|
case 10:
|
|
974
|
-
e_9_1 = _e.sent();
|
|
975
|
-
e_9 = { error: e_9_1 };
|
|
976
|
-
return [3 /*break*/, 16];
|
|
977
|
-
case 11:
|
|
978
|
-
_e.trys.push([11, , 14, 15]);
|
|
979
|
-
if (!(models_1_1 && !models_1_1.done && (_b = models_1.return))) return [3 /*break*/, 13];
|
|
980
|
-
return [4 /*yield*/, _b.call(models_1)];
|
|
981
|
-
case 12:
|
|
982
1080
|
_e.sent();
|
|
983
|
-
_e.label =
|
|
984
|
-
case
|
|
1081
|
+
_e.label = 11;
|
|
1082
|
+
case 11: return [3 /*break*/, 4];
|
|
1083
|
+
case 12: return [3 /*break*/, 19];
|
|
1084
|
+
case 13:
|
|
1085
|
+
e_10_1 = _e.sent();
|
|
1086
|
+
e_10 = { error: e_10_1 };
|
|
1087
|
+
return [3 /*break*/, 19];
|
|
985
1088
|
case 14:
|
|
986
|
-
|
|
987
|
-
return [
|
|
988
|
-
|
|
989
|
-
case
|
|
1089
|
+
_e.trys.push([14, , 17, 18]);
|
|
1090
|
+
if (!(models_1_1 && !models_1_1.done && (_b = models_1.return))) return [3 /*break*/, 16];
|
|
1091
|
+
return [4 /*yield*/, _b.call(models_1)];
|
|
1092
|
+
case 15:
|
|
1093
|
+
_e.sent();
|
|
1094
|
+
_e.label = 16;
|
|
1095
|
+
case 16: return [3 /*break*/, 18];
|
|
990
1096
|
case 17:
|
|
991
|
-
|
|
1097
|
+
if (e_10) throw e_10.error;
|
|
1098
|
+
return [7 /*endfinally*/];
|
|
1099
|
+
case 18: return [7 /*endfinally*/];
|
|
1100
|
+
case 19: return [3 /*break*/, 36];
|
|
1101
|
+
case 20:
|
|
1102
|
+
_e.trys.push([20, 27, 28, 33]);
|
|
992
1103
|
models_2 = __asyncValues(models);
|
|
993
|
-
_e.label =
|
|
994
|
-
case
|
|
995
|
-
case
|
|
996
|
-
if (!(models_2_1 = _e.sent(), !models_2_1.done)) return [3 /*break*/,
|
|
1104
|
+
_e.label = 21;
|
|
1105
|
+
case 21: return [4 /*yield*/, models_2.next()];
|
|
1106
|
+
case 22:
|
|
1107
|
+
if (!(models_2_1 = _e.sent(), !models_2_1.done)) return [3 /*break*/, 26];
|
|
997
1108
|
model = models_2_1.value;
|
|
1109
|
+
index =
|
|
1110
|
+
// explicit bi-directional @hasMany and @manyToMany
|
|
1111
|
+
util_1.getIndex(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
1112
|
+
.relationTypes, srcModel) ||
|
|
1113
|
+
// uni and/or implicit @hasMany
|
|
1114
|
+
util_1.getIndexFromAssociation(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
1115
|
+
.indexes, associatedWith);
|
|
1116
|
+
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
998
1117
|
return [4 /*yield*/, this.db
|
|
999
1118
|
.transaction(storeName, 'readwrite')
|
|
1000
1119
|
.objectStore(storeName)
|
|
1001
1120
|
.index(index)
|
|
1002
|
-
.getAll(
|
|
1003
|
-
case
|
|
1121
|
+
.getAll(keyValues)];
|
|
1122
|
+
case 23:
|
|
1004
1123
|
childrenArray = _e.sent();
|
|
1005
1124
|
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[nameSpace].relationships[modelName]
|
|
1006
1125
|
.relationTypes, childrenArray, modelName, nameSpace, deleteQueue)];
|
|
1007
|
-
case 21:
|
|
1008
|
-
_e.sent();
|
|
1009
|
-
_e.label = 22;
|
|
1010
|
-
case 22: return [3 /*break*/, 18];
|
|
1011
|
-
case 23: return [3 /*break*/, 30];
|
|
1012
1126
|
case 24:
|
|
1013
|
-
e_10_1 = _e.sent();
|
|
1014
|
-
e_10 = { error: e_10_1 };
|
|
1015
|
-
return [3 /*break*/, 30];
|
|
1016
|
-
case 25:
|
|
1017
|
-
_e.trys.push([25, , 28, 29]);
|
|
1018
|
-
if (!(models_2_1 && !models_2_1.done && (_c = models_2.return))) return [3 /*break*/, 27];
|
|
1019
|
-
return [4 /*yield*/, _c.call(models_2)];
|
|
1020
|
-
case 26:
|
|
1021
1127
|
_e.sent();
|
|
1022
|
-
_e.label =
|
|
1023
|
-
case
|
|
1128
|
+
_e.label = 25;
|
|
1129
|
+
case 25: return [3 /*break*/, 21];
|
|
1130
|
+
case 26: return [3 /*break*/, 33];
|
|
1131
|
+
case 27:
|
|
1132
|
+
e_11_1 = _e.sent();
|
|
1133
|
+
e_11 = { error: e_11_1 };
|
|
1134
|
+
return [3 /*break*/, 33];
|
|
1024
1135
|
case 28:
|
|
1025
|
-
|
|
1136
|
+
_e.trys.push([28, , 31, 32]);
|
|
1137
|
+
if (!(models_2_1 && !models_2_1.done && (_c = models_2.return))) return [3 /*break*/, 30];
|
|
1138
|
+
return [4 /*yield*/, _c.call(models_2)];
|
|
1139
|
+
case 29:
|
|
1140
|
+
_e.sent();
|
|
1141
|
+
_e.label = 30;
|
|
1142
|
+
case 30: return [3 /*break*/, 32];
|
|
1143
|
+
case 31:
|
|
1144
|
+
if (e_11) throw e_11.error;
|
|
1026
1145
|
return [7 /*endfinally*/];
|
|
1027
|
-
case
|
|
1028
|
-
case
|
|
1029
|
-
case
|
|
1146
|
+
case 32: return [7 /*endfinally*/];
|
|
1147
|
+
case 33: return [3 /*break*/, 36];
|
|
1148
|
+
case 34:
|
|
1030
1149
|
// Intentionally blank
|
|
1031
|
-
return [3 /*break*/,
|
|
1032
|
-
case 32:
|
|
1033
|
-
util_1.exhaustiveCheck(relationType);
|
|
1034
|
-
return [3 /*break*/, 33];
|
|
1035
|
-
case 33: return [3 /*break*/, 1];
|
|
1036
|
-
case 34: return [3 /*break*/, 41];
|
|
1150
|
+
return [3 /*break*/, 36];
|
|
1037
1151
|
case 35:
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
case
|
|
1042
|
-
|
|
1043
|
-
|
|
1152
|
+
util_1.exhaustiveCheck(relationType);
|
|
1153
|
+
return [3 /*break*/, 36];
|
|
1154
|
+
case 36: return [3 /*break*/, 1];
|
|
1155
|
+
case 37: return [3 /*break*/, 44];
|
|
1156
|
+
case 38:
|
|
1157
|
+
e_9_1 = _e.sent();
|
|
1158
|
+
e_9 = { error: e_9_1 };
|
|
1159
|
+
return [3 /*break*/, 44];
|
|
1160
|
+
case 39:
|
|
1161
|
+
_e.trys.push([39, , 42, 43]);
|
|
1162
|
+
if (!(relations_2_1 && !relations_2_1.done && (_a = relations_2.return))) return [3 /*break*/, 41];
|
|
1044
1163
|
return [4 /*yield*/, _a.call(relations_2)];
|
|
1045
|
-
case
|
|
1164
|
+
case 40:
|
|
1046
1165
|
_e.sent();
|
|
1047
|
-
_e.label =
|
|
1048
|
-
case
|
|
1049
|
-
case
|
|
1050
|
-
if (
|
|
1166
|
+
_e.label = 41;
|
|
1167
|
+
case 41: return [3 /*break*/, 43];
|
|
1168
|
+
case 42:
|
|
1169
|
+
if (e_9) throw e_9.error;
|
|
1051
1170
|
return [7 /*endfinally*/];
|
|
1052
|
-
case
|
|
1053
|
-
case
|
|
1171
|
+
case 43: return [7 /*endfinally*/];
|
|
1172
|
+
case 44:
|
|
1054
1173
|
deleteQueue.push({
|
|
1055
|
-
storeName:
|
|
1174
|
+
storeName: util_1.getStorename(nameSpace, srcModel),
|
|
1056
1175
|
items: models.map(function (record) {
|
|
1057
1176
|
return _this.modelInstanceCreator(_this.getModelConstructorByModelName(nameSpace, srcModel), record);
|
|
1058
1177
|
}),
|
|
@@ -1083,8 +1202,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1083
1202
|
};
|
|
1084
1203
|
IndexedDBAdapter.prototype.batchSave = function (modelConstructor, items) {
|
|
1085
1204
|
return __awaiter(this, void 0, void 0, function () {
|
|
1086
|
-
var result, storeName, txn, store,
|
|
1087
|
-
var
|
|
1205
|
+
var result, storeName, txn, store, _loop_2, this_1, items_2, items_2_1, item, e_12_1;
|
|
1206
|
+
var e_12, _a;
|
|
1207
|
+
var _this = this;
|
|
1088
1208
|
return __generator(this, function (_b) {
|
|
1089
1209
|
switch (_b.label) {
|
|
1090
1210
|
case 0:
|
|
@@ -1098,21 +1218,26 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1098
1218
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
1099
1219
|
txn = this.db.transaction(storeName, 'readwrite');
|
|
1100
1220
|
store = txn.store;
|
|
1101
|
-
|
|
1102
|
-
var connectedModels,
|
|
1221
|
+
_loop_2 = function (item) {
|
|
1222
|
+
var namespaceName, modelName, model, connectedModels, keyValues, _deleted, index, key, instance;
|
|
1103
1223
|
return __generator(this, function (_a) {
|
|
1104
1224
|
switch (_a.label) {
|
|
1105
1225
|
case 0:
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1226
|
+
namespaceName = this_1.namespaceResolver(modelConstructor);
|
|
1227
|
+
modelName = modelConstructor.name;
|
|
1228
|
+
model = this_1.modelInstanceCreator(modelConstructor, item);
|
|
1229
|
+
connectedModels = util_1.traverseModel(modelName, model, this_1.schema.namespaces[namespaceName], this_1.modelInstanceCreator, this_1.getModelConstructorByModelName);
|
|
1230
|
+
keyValues = this_1.getIndexKeyValuesFromModel(model);
|
|
1231
|
+
_deleted = item._deleted;
|
|
1232
|
+
index = store.index('byPk');
|
|
1233
|
+
return [4 /*yield*/, index.getKey(keyValues)];
|
|
1110
1234
|
case 1:
|
|
1111
1235
|
key = _a.sent();
|
|
1112
1236
|
if (!!_deleted) return [3 /*break*/, 3];
|
|
1113
1237
|
instance = connectedModels.find(function (_a) {
|
|
1114
1238
|
var instance = _a.instance;
|
|
1115
|
-
|
|
1239
|
+
var instanceKeyValues = _this.getIndexKeyValuesFromModel(instance);
|
|
1240
|
+
return util_1.keysEqual(instanceKeyValues, keyValues);
|
|
1116
1241
|
}).instance;
|
|
1117
1242
|
result.push([
|
|
1118
1243
|
instance,
|
|
@@ -1142,7 +1267,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1142
1267
|
case 3:
|
|
1143
1268
|
if (!!items_2_1.done) return [3 /*break*/, 6];
|
|
1144
1269
|
item = items_2_1.value;
|
|
1145
|
-
return [5 /*yield**/,
|
|
1270
|
+
return [5 /*yield**/, _loop_2(item)];
|
|
1146
1271
|
case 4:
|
|
1147
1272
|
_b.sent();
|
|
1148
1273
|
_b.label = 5;
|
|
@@ -1151,14 +1276,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1151
1276
|
return [3 /*break*/, 3];
|
|
1152
1277
|
case 6: return [3 /*break*/, 9];
|
|
1153
1278
|
case 7:
|
|
1154
|
-
|
|
1155
|
-
|
|
1279
|
+
e_12_1 = _b.sent();
|
|
1280
|
+
e_12 = { error: e_12_1 };
|
|
1156
1281
|
return [3 /*break*/, 9];
|
|
1157
1282
|
case 8:
|
|
1158
1283
|
try {
|
|
1159
1284
|
if (items_2_1 && !items_2_1.done && (_a = items_2.return)) _a.call(items_2);
|
|
1160
1285
|
}
|
|
1161
|
-
finally { if (
|
|
1286
|
+
finally { if (e_12) throw e_12.error; }
|
|
1162
1287
|
return [7 /*endfinally*/];
|
|
1163
1288
|
case 9: return [4 /*yield*/, txn.done];
|
|
1164
1289
|
case 10:
|
|
@@ -1169,18 +1294,15 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1169
1294
|
});
|
|
1170
1295
|
};
|
|
1171
1296
|
IndexedDBAdapter.prototype.createObjectStoreForModel = function (db, namespaceName, storeName, modelName) {
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
indexes.forEach(function (index) { return store.createIndex(index, index); });
|
|
1180
|
-
store.createIndex('byId', 'id', { unique: true });
|
|
1181
|
-
return [2 /*return*/];
|
|
1182
|
-
});
|
|
1297
|
+
var store = db.createObjectStore(storeName, {
|
|
1298
|
+
autoIncrement: true,
|
|
1299
|
+
});
|
|
1300
|
+
var indexes = this.schema.namespaces[namespaceName].relationships[modelName].indexes;
|
|
1301
|
+
indexes.forEach(function (_a) {
|
|
1302
|
+
var _b = __read(_a, 3), idxName = _b[0], keyPath = _b[1], options = _b[2];
|
|
1303
|
+
store.createIndex(idxName, keyPath, options);
|
|
1183
1304
|
});
|
|
1305
|
+
return store;
|
|
1184
1306
|
};
|
|
1185
1307
|
return IndexedDBAdapter;
|
|
1186
1308
|
}());
|