@aws-amplify/datastore 4.1.1 → 4.1.2
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 +8 -0
- package/lib/storage/adapter/AsyncStorageAdapter.d.ts +52 -28
- package/lib/storage/adapter/AsyncStorageAdapter.js +212 -476
- package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib/storage/adapter/IndexedDBAdapter.d.ts +53 -28
- package/lib/storage/adapter/IndexedDBAdapter.js +589 -892
- package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib/storage/adapter/StorageAdapterBase.d.ts +146 -0
- package/lib/storage/adapter/StorageAdapterBase.js +479 -0
- package/lib/storage/adapter/StorageAdapterBase.js.map +1 -0
- package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +52 -28
- package/lib-esm/storage/adapter/AsyncStorageAdapter.js +215 -479
- package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +53 -28
- package/lib-esm/storage/adapter/IndexedDBAdapter.js +588 -891
- package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib-esm/storage/adapter/StorageAdapterBase.d.ts +146 -0
- package/lib-esm/storage/adapter/StorageAdapterBase.js +477 -0
- package/lib-esm/storage/adapter/StorageAdapterBase.js.map +1 -0
- package/package.json +6 -6
- package/src/storage/adapter/AsyncStorageAdapter.ts +239 -543
- package/src/storage/adapter/AsyncStorageDatabase.ts +2 -2
- package/src/storage/adapter/IndexedDBAdapter.ts +423 -786
- package/src/storage/adapter/StorageAdapterBase.ts +639 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var core_1 = require("@aws-amplify/core");
|
|
5
|
+
var predicates_1 = require("../../predicates");
|
|
6
|
+
var types_1 = require("../../types");
|
|
7
|
+
var util_1 = require("../../util");
|
|
8
|
+
var logger = new core_1.ConsoleLogger('DataStore');
|
|
9
|
+
var DB_NAME = 'amplify-datastore';
|
|
10
|
+
var StorageAdapterBase = /** @class */ (function () {
|
|
11
|
+
function StorageAdapterBase() {
|
|
12
|
+
this.dbName = DB_NAME;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Initializes local DB
|
|
16
|
+
*
|
|
17
|
+
* @param theSchema
|
|
18
|
+
* @param namespaceResolver
|
|
19
|
+
* @param modelInstanceCreator
|
|
20
|
+
* @param getModelConstructorByModelName
|
|
21
|
+
* @param sessionId
|
|
22
|
+
*/
|
|
23
|
+
StorageAdapterBase.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName, sessionId) {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
25
|
+
var _a, error_1;
|
|
26
|
+
var _this = this;
|
|
27
|
+
return tslib_1.__generator(this, function (_b) {
|
|
28
|
+
switch (_b.label) {
|
|
29
|
+
case 0: return [4 /*yield*/, this.preSetUpChecks()];
|
|
30
|
+
case 1:
|
|
31
|
+
_b.sent();
|
|
32
|
+
if (!!this.initPromise) return [3 /*break*/, 2];
|
|
33
|
+
this.initPromise = new Promise(function (res, rej) {
|
|
34
|
+
_this.resolve = res;
|
|
35
|
+
_this.reject = rej;
|
|
36
|
+
});
|
|
37
|
+
return [3 /*break*/, 4];
|
|
38
|
+
case 2: return [4 /*yield*/, this.initPromise];
|
|
39
|
+
case 3:
|
|
40
|
+
_b.sent();
|
|
41
|
+
return [2 /*return*/];
|
|
42
|
+
case 4:
|
|
43
|
+
if (sessionId) {
|
|
44
|
+
this.dbName = DB_NAME + "-" + sessionId;
|
|
45
|
+
}
|
|
46
|
+
this.schema = theSchema;
|
|
47
|
+
this.namespaceResolver = namespaceResolver;
|
|
48
|
+
this.modelInstanceCreator = modelInstanceCreator;
|
|
49
|
+
this.getModelConstructorByModelName = getModelConstructorByModelName;
|
|
50
|
+
_b.label = 5;
|
|
51
|
+
case 5:
|
|
52
|
+
_b.trys.push([5, 8, , 9]);
|
|
53
|
+
if (!!this.db) return [3 /*break*/, 7];
|
|
54
|
+
_a = this;
|
|
55
|
+
return [4 /*yield*/, this.initDb()];
|
|
56
|
+
case 6:
|
|
57
|
+
_a.db = _b.sent();
|
|
58
|
+
this.resolve();
|
|
59
|
+
_b.label = 7;
|
|
60
|
+
case 7: return [3 /*break*/, 9];
|
|
61
|
+
case 8:
|
|
62
|
+
error_1 = _b.sent();
|
|
63
|
+
this.reject(error_1);
|
|
64
|
+
return [3 /*break*/, 9];
|
|
65
|
+
case 9: return [2 /*return*/];
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* @param modelConstructor
|
|
72
|
+
* @returns local DB table name
|
|
73
|
+
*/
|
|
74
|
+
StorageAdapterBase.prototype.getStorenameForModel = function (modelConstructor) {
|
|
75
|
+
var namespace = this.namespaceResolver(modelConstructor);
|
|
76
|
+
var modelName = modelConstructor.name;
|
|
77
|
+
return util_1.getStorename(namespace, modelName);
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* @param model - instantiated model record
|
|
82
|
+
* @returns the record's primary key values
|
|
83
|
+
*/
|
|
84
|
+
StorageAdapterBase.prototype.getIndexKeyValuesFromModel = function (model) {
|
|
85
|
+
var modelConstructor = Object.getPrototypeOf(model)
|
|
86
|
+
.constructor;
|
|
87
|
+
var namespaceName = this.namespaceResolver(modelConstructor);
|
|
88
|
+
var keys = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelConstructor.name);
|
|
89
|
+
return util_1.extractPrimaryKeyValues(model, keys);
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Common metadata for `save` operation
|
|
93
|
+
* used by individual storage adapters
|
|
94
|
+
*
|
|
95
|
+
* @param model
|
|
96
|
+
*/
|
|
97
|
+
StorageAdapterBase.prototype.saveMetadata = function (model) {
|
|
98
|
+
var _this = this;
|
|
99
|
+
var modelConstructor = Object.getPrototypeOf(model)
|
|
100
|
+
.constructor;
|
|
101
|
+
var storeName = this.getStorenameForModel(modelConstructor);
|
|
102
|
+
var namespaceName = this.namespaceResolver(modelConstructor);
|
|
103
|
+
var connectedModels = util_1.traverseModel(modelConstructor.name, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
104
|
+
var set = new Set();
|
|
105
|
+
var connectionStoreNames = Object.values(connectedModels).map(function (_a) {
|
|
106
|
+
var modelName = _a.modelName, item = _a.item, instance = _a.instance;
|
|
107
|
+
var storeName = util_1.getStorename(namespaceName, modelName);
|
|
108
|
+
set.add(storeName);
|
|
109
|
+
var keys = util_1.getIndexKeys(_this.schema.namespaces[namespaceName], modelName);
|
|
110
|
+
return { storeName: storeName, item: item, instance: instance, keys: keys };
|
|
111
|
+
});
|
|
112
|
+
var modelKeyValues = this.getIndexKeyValuesFromModel(model);
|
|
113
|
+
return { storeName: storeName, set: set, connectionStoreNames: connectionStoreNames, modelKeyValues: modelKeyValues };
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Enforces conditional save. Throws if condition is not met.
|
|
117
|
+
* used by individual storage adapters
|
|
118
|
+
*
|
|
119
|
+
* @param model
|
|
120
|
+
*/
|
|
121
|
+
StorageAdapterBase.prototype.validateSaveCondition = function (condition, fromDB) {
|
|
122
|
+
if (!(condition && fromDB)) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
var predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
|
|
126
|
+
var _a = predicates, predicateObjs = _a.predicates, type = _a.type;
|
|
127
|
+
var isValid = util_1.validatePredicate(fromDB, type, predicateObjs);
|
|
128
|
+
if (!isValid) {
|
|
129
|
+
var msg = 'Conditional update failed';
|
|
130
|
+
logger.error(msg, { model: fromDB, condition: predicateObjs });
|
|
131
|
+
throw new Error(msg);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Instantiate models from POJO records returned from the database
|
|
136
|
+
*
|
|
137
|
+
* @param namespaceName - string model namespace
|
|
138
|
+
* @param srcModelName - string model name
|
|
139
|
+
* @param records - array of uninstantiated records
|
|
140
|
+
* @returns
|
|
141
|
+
*/
|
|
142
|
+
StorageAdapterBase.prototype.load = function (namespaceName, srcModelName, records) {
|
|
143
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
144
|
+
var namespace, relations, connectionStoreNames, modelConstructor;
|
|
145
|
+
var _this = this;
|
|
146
|
+
return tslib_1.__generator(this, function (_a) {
|
|
147
|
+
namespace = this.schema.namespaces[namespaceName];
|
|
148
|
+
relations = namespace.relationships[srcModelName].relationTypes;
|
|
149
|
+
connectionStoreNames = relations.map(function (_a) {
|
|
150
|
+
var modelName = _a.modelName;
|
|
151
|
+
return util_1.getStorename(namespaceName, modelName);
|
|
152
|
+
});
|
|
153
|
+
modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
|
|
154
|
+
if (connectionStoreNames.length === 0) {
|
|
155
|
+
return [2 /*return*/, records.map(function (record) {
|
|
156
|
+
return _this.modelInstanceCreator(modelConstructor, record);
|
|
157
|
+
})];
|
|
158
|
+
}
|
|
159
|
+
return [2 /*return*/, records.map(function (record) {
|
|
160
|
+
return _this.modelInstanceCreator(modelConstructor, record);
|
|
161
|
+
})];
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Extracts operands from a predicate group into an array of key values
|
|
167
|
+
* Used in the query method
|
|
168
|
+
*
|
|
169
|
+
* @param predicates - predicate group
|
|
170
|
+
* @param keyPath - string array of key names ['id', 'sortKey']
|
|
171
|
+
* @returns string[] of key values
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```js
|
|
175
|
+
* { and:[{ id: { eq: 'abc' }}, { sortKey: { eq: 'def' }}] }
|
|
176
|
+
* ```
|
|
177
|
+
* Becomes
|
|
178
|
+
* ```
|
|
179
|
+
* ['abc', 'def']
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
StorageAdapterBase.prototype.keyValueFromPredicate = function (predicates, keyPath) {
|
|
183
|
+
var e_1, _a;
|
|
184
|
+
var predicateObjs = predicates.predicates;
|
|
185
|
+
if (predicateObjs.length !== keyPath.length) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
var keyValues = [];
|
|
189
|
+
var _loop_1 = function (key) {
|
|
190
|
+
var predicateObj = predicateObjs.find(function (p) {
|
|
191
|
+
// it's a relevant predicate object only if it's an equality
|
|
192
|
+
// operation for a key field from the key:
|
|
193
|
+
return types_1.isPredicateObj(p) &&
|
|
194
|
+
p.field === key &&
|
|
195
|
+
p.operator === 'eq' &&
|
|
196
|
+
p.operand !== null &&
|
|
197
|
+
p.operand !== undefined;
|
|
198
|
+
});
|
|
199
|
+
predicateObj && keyValues.push(predicateObj.operand);
|
|
200
|
+
};
|
|
201
|
+
try {
|
|
202
|
+
for (var keyPath_1 = tslib_1.__values(keyPath), keyPath_1_1 = keyPath_1.next(); !keyPath_1_1.done; keyPath_1_1 = keyPath_1.next()) {
|
|
203
|
+
var key = keyPath_1_1.value;
|
|
204
|
+
_loop_1(key);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
208
|
+
finally {
|
|
209
|
+
try {
|
|
210
|
+
if (keyPath_1_1 && !keyPath_1_1.done && (_a = keyPath_1.return)) _a.call(keyPath_1);
|
|
211
|
+
}
|
|
212
|
+
finally { if (e_1) throw e_1.error; }
|
|
213
|
+
}
|
|
214
|
+
return keyValues.length === keyPath.length ? keyValues : undefined;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Common metadata for `query` operation
|
|
218
|
+
* used by individual storage adapters
|
|
219
|
+
*
|
|
220
|
+
* @param modelConstructor
|
|
221
|
+
* @param predicate
|
|
222
|
+
* @param pagination
|
|
223
|
+
*/
|
|
224
|
+
StorageAdapterBase.prototype.queryMetadata = function (modelConstructor, predicate, pagination) {
|
|
225
|
+
var storeName = this.getStorenameForModel(modelConstructor);
|
|
226
|
+
var namespaceName = this.namespaceResolver(modelConstructor);
|
|
227
|
+
var predicates = predicate && predicates_1.ModelPredicateCreator.getPredicates(predicate);
|
|
228
|
+
var keyPath = util_1.getIndexKeys(this.schema.namespaces[namespaceName], modelConstructor.name);
|
|
229
|
+
var queryByKey = predicates && this.keyValueFromPredicate(predicates, keyPath);
|
|
230
|
+
var hasSort = pagination && pagination.sort;
|
|
231
|
+
var hasPagination = pagination && pagination.limit;
|
|
232
|
+
return {
|
|
233
|
+
storeName: storeName,
|
|
234
|
+
namespaceName: namespaceName,
|
|
235
|
+
queryByKey: queryByKey,
|
|
236
|
+
predicates: predicates,
|
|
237
|
+
hasSort: hasSort,
|
|
238
|
+
hasPagination: hasPagination,
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Delete record
|
|
243
|
+
* Cascades to related records (for Has One and Has Many relationships)
|
|
244
|
+
*
|
|
245
|
+
* @param modelOrModelConstructor
|
|
246
|
+
* @param condition
|
|
247
|
+
* @returns
|
|
248
|
+
*/
|
|
249
|
+
StorageAdapterBase.prototype.delete = function (modelOrModelConstructor, condition) {
|
|
250
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
251
|
+
var deleteQueue, modelConstructor, namespace, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, keyValues, fromDB, msg, predicates, _a, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
|
|
252
|
+
return tslib_1.__generator(this, function (_b) {
|
|
253
|
+
switch (_b.label) {
|
|
254
|
+
case 0: return [4 /*yield*/, this.preOpCheck()];
|
|
255
|
+
case 1:
|
|
256
|
+
_b.sent();
|
|
257
|
+
deleteQueue = [];
|
|
258
|
+
if (!util_1.isModelConstructor(modelOrModelConstructor)) return [3 /*break*/, 9];
|
|
259
|
+
modelConstructor = modelOrModelConstructor;
|
|
260
|
+
namespace = this.namespaceResolver(modelConstructor);
|
|
261
|
+
return [4 /*yield*/, this.query(modelConstructor, condition)];
|
|
262
|
+
case 2:
|
|
263
|
+
models = _b.sent();
|
|
264
|
+
relations = this.schema.namespaces[namespace].relationships[modelConstructor.name]
|
|
265
|
+
.relationTypes;
|
|
266
|
+
if (!(condition !== undefined)) return [3 /*break*/, 5];
|
|
267
|
+
return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, namespace, deleteQueue)];
|
|
268
|
+
case 3:
|
|
269
|
+
_b.sent();
|
|
270
|
+
return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
271
|
+
case 4:
|
|
272
|
+
_b.sent();
|
|
273
|
+
deletedModels = deleteQueue.reduce(function (acc, _a) {
|
|
274
|
+
var items = _a.items;
|
|
275
|
+
return acc.concat(items);
|
|
276
|
+
}, []);
|
|
277
|
+
return [2 /*return*/, [models, deletedModels]];
|
|
278
|
+
case 5: return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, namespace, deleteQueue)];
|
|
279
|
+
case 6:
|
|
280
|
+
_b.sent();
|
|
281
|
+
return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
282
|
+
case 7:
|
|
283
|
+
_b.sent();
|
|
284
|
+
deletedModels = deleteQueue.reduce(function (acc, _a) {
|
|
285
|
+
var items = _a.items;
|
|
286
|
+
return acc.concat(items);
|
|
287
|
+
}, []);
|
|
288
|
+
return [2 /*return*/, [models, deletedModels]];
|
|
289
|
+
case 8: return [3 /*break*/, 16];
|
|
290
|
+
case 9:
|
|
291
|
+
model = modelOrModelConstructor;
|
|
292
|
+
modelConstructor = Object.getPrototypeOf(model)
|
|
293
|
+
.constructor;
|
|
294
|
+
namespaceName = this.namespaceResolver(modelConstructor);
|
|
295
|
+
storeName = this.getStorenameForModel(modelConstructor);
|
|
296
|
+
if (!condition) return [3 /*break*/, 12];
|
|
297
|
+
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
298
|
+
return [4 /*yield*/, this._get(storeName, keyValues)];
|
|
299
|
+
case 10:
|
|
300
|
+
fromDB = _b.sent();
|
|
301
|
+
if (fromDB === undefined) {
|
|
302
|
+
msg = 'Model instance not found in storage';
|
|
303
|
+
logger.warn(msg, { model: model });
|
|
304
|
+
return [2 /*return*/, [[model], []]];
|
|
305
|
+
}
|
|
306
|
+
predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
|
|
307
|
+
_a = predicates, predicateObjs = _a.predicates, type = _a.type;
|
|
308
|
+
isValid = util_1.validatePredicate(fromDB, type, predicateObjs);
|
|
309
|
+
if (!isValid) {
|
|
310
|
+
msg = 'Conditional update failed';
|
|
311
|
+
logger.error(msg, { model: fromDB, condition: predicateObjs });
|
|
312
|
+
throw new Error(msg);
|
|
313
|
+
}
|
|
314
|
+
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
315
|
+
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
316
|
+
case 11:
|
|
317
|
+
_b.sent();
|
|
318
|
+
return [3 /*break*/, 14];
|
|
319
|
+
case 12:
|
|
320
|
+
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
321
|
+
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
322
|
+
case 13:
|
|
323
|
+
_b.sent();
|
|
324
|
+
_b.label = 14;
|
|
325
|
+
case 14: return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
326
|
+
case 15:
|
|
327
|
+
_b.sent();
|
|
328
|
+
deletedModels = deleteQueue.reduce(function (acc, _a) {
|
|
329
|
+
var items = _a.items;
|
|
330
|
+
return acc.concat(items);
|
|
331
|
+
}, []);
|
|
332
|
+
return [2 /*return*/, [[model], deletedModels]];
|
|
333
|
+
case 16: return [2 /*return*/];
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
};
|
|
338
|
+
/**
|
|
339
|
+
* Recursively traverse relationship graph and add
|
|
340
|
+
* all Has One and Has Many relations to `deleteQueue` param
|
|
341
|
+
*
|
|
342
|
+
* Actual deletion of records added to `deleteQueue` occurs in the `delete` method
|
|
343
|
+
*
|
|
344
|
+
* @param relations
|
|
345
|
+
* @param models
|
|
346
|
+
* @param srcModel
|
|
347
|
+
* @param namespace
|
|
348
|
+
* @param deleteQueue
|
|
349
|
+
*/
|
|
350
|
+
StorageAdapterBase.prototype.deleteTraverse = function (relations, models, srcModel, namespace, deleteQueue) {
|
|
351
|
+
var relations_1, relations_1_1, models_1, models_1_1;
|
|
352
|
+
var e_2, _a, e_3, _b;
|
|
353
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
354
|
+
var rel, modelName, relationType, targetNames, associatedWith, storeName, index, model, childRecords, _c, childRecord, keyValues, records, childModels, e_3_1, e_2_1;
|
|
355
|
+
var _this = this;
|
|
356
|
+
return tslib_1.__generator(this, function (_d) {
|
|
357
|
+
switch (_d.label) {
|
|
358
|
+
case 0:
|
|
359
|
+
_d.trys.push([0, 28, 29, 34]);
|
|
360
|
+
relations_1 = tslib_1.__asyncValues(relations);
|
|
361
|
+
_d.label = 1;
|
|
362
|
+
case 1: return [4 /*yield*/, relations_1.next()];
|
|
363
|
+
case 2:
|
|
364
|
+
if (!(relations_1_1 = _d.sent(), !relations_1_1.done)) return [3 /*break*/, 27];
|
|
365
|
+
rel = relations_1_1.value;
|
|
366
|
+
modelName = rel.modelName, relationType = rel.relationType, targetNames = rel.targetNames, associatedWith = rel.associatedWith;
|
|
367
|
+
storeName = util_1.getStorename(namespace, modelName);
|
|
368
|
+
index = util_1.getIndex(this.schema.namespaces[namespace].relationships[modelName]
|
|
369
|
+
.relationTypes, srcModel) ||
|
|
370
|
+
// if we were unable to find an index via relationTypes
|
|
371
|
+
// i.e. for keyName connections, attempt to find one by the
|
|
372
|
+
// associatedWith property
|
|
373
|
+
util_1.getIndexFromAssociation(this.schema.namespaces[namespace].relationships[modelName].indexes, associatedWith);
|
|
374
|
+
_d.label = 3;
|
|
375
|
+
case 3:
|
|
376
|
+
_d.trys.push([3, 20, 21, 26]);
|
|
377
|
+
models_1 = tslib_1.__asyncValues(models);
|
|
378
|
+
_d.label = 4;
|
|
379
|
+
case 4: return [4 /*yield*/, models_1.next()];
|
|
380
|
+
case 5:
|
|
381
|
+
if (!(models_1_1 = _d.sent(), !models_1_1.done)) return [3 /*break*/, 19];
|
|
382
|
+
model = models_1_1.value;
|
|
383
|
+
childRecords = [];
|
|
384
|
+
_c = relationType;
|
|
385
|
+
switch (_c) {
|
|
386
|
+
case 'HAS_ONE': return [3 /*break*/, 6];
|
|
387
|
+
case 'HAS_MANY': return [3 /*break*/, 11];
|
|
388
|
+
case 'BELONGS_TO': return [3 /*break*/, 13];
|
|
389
|
+
}
|
|
390
|
+
return [3 /*break*/, 14];
|
|
391
|
+
case 6:
|
|
392
|
+
childRecord = void 0;
|
|
393
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
|
|
394
|
+
return [4 /*yield*/, this.getHasOneChild(model, srcModel, namespace, rel)];
|
|
395
|
+
case 7:
|
|
396
|
+
childRecord = _d.sent();
|
|
397
|
+
return [3 /*break*/, 10];
|
|
398
|
+
case 8: return [4 /*yield*/, this.getHasOneChildLegacy(model, srcModel, namespace, rel)];
|
|
399
|
+
case 9:
|
|
400
|
+
childRecord = _d.sent();
|
|
401
|
+
_d.label = 10;
|
|
402
|
+
case 10:
|
|
403
|
+
if (childRecord) {
|
|
404
|
+
childRecords.push(childRecord);
|
|
405
|
+
}
|
|
406
|
+
return [3 /*break*/, 15];
|
|
407
|
+
case 11:
|
|
408
|
+
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
409
|
+
return [4 /*yield*/, this.getHasManyChildren(storeName, index, keyValues)];
|
|
410
|
+
case 12:
|
|
411
|
+
records = _d.sent();
|
|
412
|
+
if (records === null || records === void 0 ? void 0 : records.length) {
|
|
413
|
+
childRecords.push.apply(childRecords, tslib_1.__spread(records));
|
|
414
|
+
}
|
|
415
|
+
return [3 /*break*/, 15];
|
|
416
|
+
case 13:
|
|
417
|
+
// Intentionally blank
|
|
418
|
+
return [3 /*break*/, 15];
|
|
419
|
+
case 14: throw new Error("Invalid relation type " + relationType);
|
|
420
|
+
case 15: return [4 /*yield*/, this.load(namespace, modelName, childRecords)];
|
|
421
|
+
case 16:
|
|
422
|
+
childModels = _d.sent();
|
|
423
|
+
return [4 /*yield*/, this.deleteTraverse(this.schema.namespaces[namespace].relationships[modelName]
|
|
424
|
+
.relationTypes, childModels, modelName, namespace, deleteQueue)];
|
|
425
|
+
case 17:
|
|
426
|
+
_d.sent();
|
|
427
|
+
_d.label = 18;
|
|
428
|
+
case 18: return [3 /*break*/, 4];
|
|
429
|
+
case 19: return [3 /*break*/, 26];
|
|
430
|
+
case 20:
|
|
431
|
+
e_3_1 = _d.sent();
|
|
432
|
+
e_3 = { error: e_3_1 };
|
|
433
|
+
return [3 /*break*/, 26];
|
|
434
|
+
case 21:
|
|
435
|
+
_d.trys.push([21, , 24, 25]);
|
|
436
|
+
if (!(models_1_1 && !models_1_1.done && (_b = models_1.return))) return [3 /*break*/, 23];
|
|
437
|
+
return [4 /*yield*/, _b.call(models_1)];
|
|
438
|
+
case 22:
|
|
439
|
+
_d.sent();
|
|
440
|
+
_d.label = 23;
|
|
441
|
+
case 23: return [3 /*break*/, 25];
|
|
442
|
+
case 24:
|
|
443
|
+
if (e_3) throw e_3.error;
|
|
444
|
+
return [7 /*endfinally*/];
|
|
445
|
+
case 25: return [7 /*endfinally*/];
|
|
446
|
+
case 26: return [3 /*break*/, 1];
|
|
447
|
+
case 27: return [3 /*break*/, 34];
|
|
448
|
+
case 28:
|
|
449
|
+
e_2_1 = _d.sent();
|
|
450
|
+
e_2 = { error: e_2_1 };
|
|
451
|
+
return [3 /*break*/, 34];
|
|
452
|
+
case 29:
|
|
453
|
+
_d.trys.push([29, , 32, 33]);
|
|
454
|
+
if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 31];
|
|
455
|
+
return [4 /*yield*/, _a.call(relations_1)];
|
|
456
|
+
case 30:
|
|
457
|
+
_d.sent();
|
|
458
|
+
_d.label = 31;
|
|
459
|
+
case 31: return [3 /*break*/, 33];
|
|
460
|
+
case 32:
|
|
461
|
+
if (e_2) throw e_2.error;
|
|
462
|
+
return [7 /*endfinally*/];
|
|
463
|
+
case 33: return [7 /*endfinally*/];
|
|
464
|
+
case 34:
|
|
465
|
+
deleteQueue.push({
|
|
466
|
+
storeName: util_1.getStorename(namespace, srcModel),
|
|
467
|
+
items: models.map(function (record) {
|
|
468
|
+
return _this.modelInstanceCreator(_this.getModelConstructorByModelName(namespace, srcModel), record);
|
|
469
|
+
}),
|
|
470
|
+
});
|
|
471
|
+
return [2 /*return*/];
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
};
|
|
476
|
+
return StorageAdapterBase;
|
|
477
|
+
}());
|
|
478
|
+
exports.StorageAdapterBase = StorageAdapterBase;
|
|
479
|
+
//# sourceMappingURL=StorageAdapterBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageAdapterBase.js","sourceRoot":"","sources":["../../../src/storage/adapter/StorageAdapterBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,66 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { InternalSchema, ModelInstanceMetadata, ModelPredicate, NamespaceResolver, OpType, PaginationInput, PersistentModel, PersistentModelConstructor, QueryOne } from '../../types';
|
|
1
|
+
import AsyncStorageDatabase from './AsyncStorageDatabase';
|
|
2
|
+
import { ModelInstanceMetadata, ModelPredicate, OpType, PaginationInput, PersistentModel, PersistentModelConstructor, QueryOne, RelationType } from '../../types';
|
|
4
3
|
import { NAMESPACES } from '../../util';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
4
|
+
import { StorageAdapterBase } from './StorageAdapterBase';
|
|
5
|
+
export declare class AsyncStorageAdapter extends StorageAdapterBase {
|
|
6
|
+
protected db: AsyncStorageDatabase;
|
|
7
|
+
protected preSetUpChecks(): Promise<void>;
|
|
8
|
+
protected preOpCheck(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Open AsyncStorage database
|
|
11
|
+
* Create new DB if one doesn't exist
|
|
12
|
+
*
|
|
13
|
+
* Called by `StorageAdapterBase.setUp()`
|
|
14
|
+
*
|
|
15
|
+
* @returns AsyncStorageDatabase instance
|
|
16
|
+
*/
|
|
17
|
+
protected initDb(): Promise<AsyncStorageDatabase>;
|
|
18
|
+
clear(): Promise<void>;
|
|
19
|
+
batchSave<T extends PersistentModel>(modelConstructor: PersistentModelConstructor<any>, items: ModelInstanceMetadata[]): Promise<[T, OpType][]>;
|
|
20
|
+
protected _get<T>(storeName: string, keyArr: string[]): Promise<T>;
|
|
18
21
|
save<T extends PersistentModel>(model: T, condition?: ModelPredicate<T>): Promise<[T, OpType.INSERT | OpType.UPDATE][]>;
|
|
19
|
-
private load;
|
|
20
22
|
query<T extends PersistentModel>(modelConstructor: PersistentModelConstructor<T>, predicate?: ModelPredicate<T>, pagination?: PaginationInput<T>): Promise<T[]>;
|
|
21
23
|
private getByKey;
|
|
22
24
|
private getAll;
|
|
23
|
-
private keyValueFromPredicate;
|
|
24
25
|
private filterOnPredicate;
|
|
25
26
|
private inMemoryPagination;
|
|
26
27
|
queryOne<T extends PersistentModel>(modelConstructor: PersistentModelConstructor<T>, firstOrLast?: QueryOne): Promise<T | undefined>;
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
protected deleteItem<T extends PersistentModel>(deleteQueue?: {
|
|
29
|
+
storeName: string;
|
|
30
|
+
items: T[] | IDBValidKey[];
|
|
31
|
+
}[]): Promise<void>;
|
|
29
32
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @param
|
|
33
|
+
* Gets related Has One record for `model`
|
|
34
|
+
*
|
|
35
|
+
* @param model
|
|
33
36
|
* @param srcModel
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
37
|
+
* @param namespace
|
|
38
|
+
* @param rel
|
|
39
|
+
* @returns
|
|
36
40
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
protected getHasOneChild<T extends PersistentModel>(model: T, srcModel: string, namespace: NAMESPACES, rel: RelationType): Promise<any>;
|
|
42
|
+
/**
|
|
43
|
+
* Backwards compatability for pre-CPK codegen
|
|
44
|
+
* TODO - deprecate this in v6; will need to re-gen MIPR for older unit
|
|
45
|
+
* tests that hit this path
|
|
46
|
+
*/
|
|
47
|
+
protected getHasOneChildLegacy<T extends PersistentModel>(model: T, srcModel: string, namespace: NAMESPACES, rel: RelationType): Promise<T>;
|
|
48
|
+
/**
|
|
49
|
+
* Gets related Has Many records by given `storeName`, `index`, and `keyValues`
|
|
50
|
+
*
|
|
51
|
+
* @param storeName
|
|
52
|
+
* @param index
|
|
53
|
+
* @param keyValues
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
protected getHasManyChildren<T extends PersistentModel>(storeName: string, index: string, keyValues: string[]): Promise<T[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Retrieves concatenated primary key values from a model
|
|
59
|
+
*
|
|
60
|
+
* @param model
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
private getIndexKeyValuesPath;
|
|
40
64
|
}
|
|
41
65
|
declare const _default: AsyncStorageAdapter;
|
|
42
66
|
export default _default;
|