@aws-amplify/datastore-storage-adapter 1.2.13 → 1.2.14-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.
Files changed (77) hide show
  1. package/ExpoSQLiteAdapter/index.js +7 -0
  2. package/SQLiteAdapter/index.js +7 -0
  3. package/dist/aws-amplify-datastore-sqlite-adapter-expo.js +2502 -0
  4. package/dist/aws-amplify-datastore-sqlite-adapter-expo.js.map +1 -0
  5. package/dist/aws-amplify-datastore-sqlite-adapter-expo.min.js +2 -0
  6. package/dist/aws-amplify-datastore-sqlite-adapter-expo.min.js.map +1 -0
  7. package/dist/aws-amplify-datastore-storage-adapter.js +1179 -1151
  8. package/dist/aws-amplify-datastore-storage-adapter.js.map +1 -1
  9. package/dist/aws-amplify-datastore-storage-adapter.min.js +1 -1
  10. package/dist/aws-amplify-datastore-storage-adapter.min.js.map +1 -1
  11. package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
  12. package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +10 -0
  13. package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
  14. package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
  15. package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +362 -0
  16. package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
  17. package/lib/SQLiteAdapter/SQLiteAdapter.d.ts +3 -23
  18. package/lib/SQLiteAdapter/SQLiteAdapter.js +3 -582
  19. package/lib/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
  20. package/lib/SQLiteAdapter/SQLiteDatabase.d.ts +8 -8
  21. package/lib/SQLiteAdapter/SQLiteDatabase.js +46 -42
  22. package/lib/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
  23. package/lib/common/CommonSQLiteAdapter.d.ts +23 -0
  24. package/lib/common/CommonSQLiteAdapter.js +579 -0
  25. package/lib/common/CommonSQLiteAdapter.js.map +1 -0
  26. package/lib/{SQLiteAdapter → common}/SQLiteUtils.d.ts +3 -2
  27. package/lib/{SQLiteAdapter → common}/SQLiteUtils.js +26 -2
  28. package/lib/common/SQLiteUtils.js.map +1 -0
  29. package/lib/common/constants.d.ts +1 -0
  30. package/lib/common/constants.js +4 -0
  31. package/lib/common/constants.js.map +1 -0
  32. package/lib/common/types.d.ts +13 -0
  33. package/lib/common/types.js +3 -0
  34. package/lib/common/types.js.map +1 -0
  35. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
  36. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +5 -0
  37. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
  38. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
  39. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +360 -0
  40. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
  41. package/lib-esm/SQLiteAdapter/SQLiteAdapter.d.ts +3 -23
  42. package/lib-esm/SQLiteAdapter/SQLiteAdapter.js +3 -582
  43. package/lib-esm/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
  44. package/lib-esm/SQLiteAdapter/SQLiteDatabase.d.ts +8 -8
  45. package/lib-esm/SQLiteAdapter/SQLiteDatabase.js +46 -42
  46. package/lib-esm/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
  47. package/lib-esm/common/CommonSQLiteAdapter.d.ts +23 -0
  48. package/lib-esm/common/CommonSQLiteAdapter.js +577 -0
  49. package/lib-esm/common/CommonSQLiteAdapter.js.map +1 -0
  50. package/lib-esm/{SQLiteAdapter → common}/SQLiteUtils.d.ts +3 -2
  51. package/lib-esm/{SQLiteAdapter → common}/SQLiteUtils.js +24 -1
  52. package/lib-esm/common/SQLiteUtils.js.map +1 -0
  53. package/lib-esm/common/constants.d.ts +1 -0
  54. package/lib-esm/common/constants.js +2 -0
  55. package/lib-esm/common/constants.js.map +1 -0
  56. package/lib-esm/common/types.d.ts +13 -0
  57. package/lib-esm/common/types.js +1 -0
  58. package/lib-esm/common/types.js.map +1 -0
  59. package/package.json +7 -4
  60. package/src/ExpoSQLiteAdapter/ExpoSQLiteAdapter.ts +8 -0
  61. package/src/ExpoSQLiteAdapter/ExpoSQLiteDatabase.ts +282 -0
  62. package/src/SQLiteAdapter/SQLiteAdapter.ts +5 -475
  63. package/src/SQLiteAdapter/SQLiteDatabase.ts +49 -53
  64. package/src/common/CommonSQLiteAdapter.ts +478 -0
  65. package/src/{SQLiteAdapter → common}/SQLiteUtils.ts +32 -3
  66. package/src/common/constants.ts +1 -0
  67. package/src/common/types.ts +29 -0
  68. package/webpack.config.dev.js +2 -0
  69. package/lib/SQLiteAdapter/SQLiteUtils.js.map +0 -1
  70. package/lib/SQLiteAdapter/types.d.ts +0 -2
  71. package/lib/SQLiteAdapter/types.js +0 -28
  72. package/lib/SQLiteAdapter/types.js.map +0 -1
  73. package/lib-esm/SQLiteAdapter/SQLiteUtils.js.map +0 -1
  74. package/lib-esm/SQLiteAdapter/types.d.ts +0 -2
  75. package/lib-esm/SQLiteAdapter/types.js +0 -25
  76. package/lib-esm/SQLiteAdapter/types.js.map +0 -1
  77. package/src/SQLiteAdapter/types.ts +0 -31
@@ -0,0 +1,579 @@
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 __read = (this && this.__read) || function (o, n) {
46
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
47
+ if (!m) return o;
48
+ var i = m.call(o), r, ar = [], e;
49
+ try {
50
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
51
+ }
52
+ catch (error) { e = { error: error }; }
53
+ finally {
54
+ try {
55
+ if (r && !r.done && (m = i["return"])) m.call(i);
56
+ }
57
+ finally { if (e) throw e.error; }
58
+ }
59
+ return ar;
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
+ Object.defineProperty(exports, "__esModule", { value: true });
73
+ var core_1 = require("@aws-amplify/core");
74
+ var SQLiteUtils_1 = require("../common/SQLiteUtils");
75
+ var datastore_1 = require("@aws-amplify/datastore");
76
+ var traverseModel = datastore_1.utils.traverseModel, validatePredicate = datastore_1.utils.validatePredicate, isModelConstructor = datastore_1.utils.isModelConstructor;
77
+ var logger = new core_1.ConsoleLogger('DataStore');
78
+ var CommonSQLiteAdapter = /** @class */ (function () {
79
+ function CommonSQLiteAdapter(db) {
80
+ this.db = db;
81
+ }
82
+ CommonSQLiteAdapter.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
83
+ return __awaiter(this, void 0, void 0, function () {
84
+ var statements, error_1;
85
+ var _this = this;
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0:
89
+ if (!!this.initPromise) return [3 /*break*/, 1];
90
+ this.initPromise = new Promise(function (res, rej) {
91
+ _this.resolve = res;
92
+ _this.reject = rej;
93
+ });
94
+ return [3 /*break*/, 3];
95
+ case 1: return [4 /*yield*/, this.initPromise];
96
+ case 2:
97
+ _a.sent();
98
+ return [2 /*return*/];
99
+ case 3:
100
+ this.schema = theSchema;
101
+ this.namespaceResolver = namespaceResolver;
102
+ this.modelInstanceCreator = modelInstanceCreator;
103
+ this.getModelConstructorByModelName = getModelConstructorByModelName;
104
+ _a.label = 4;
105
+ case 4:
106
+ _a.trys.push([4, 7, , 8]);
107
+ return [4 /*yield*/, this.db.init()];
108
+ case 5:
109
+ _a.sent();
110
+ statements = SQLiteUtils_1.generateSchemaStatements(this.schema);
111
+ return [4 /*yield*/, this.db.createSchema(statements)];
112
+ case 6:
113
+ _a.sent();
114
+ this.resolve();
115
+ return [3 /*break*/, 8];
116
+ case 7:
117
+ error_1 = _a.sent();
118
+ this.reject(error_1);
119
+ return [3 /*break*/, 8];
120
+ case 8: return [2 /*return*/];
121
+ }
122
+ });
123
+ });
124
+ };
125
+ CommonSQLiteAdapter.prototype.clear = function () {
126
+ return __awaiter(this, void 0, void 0, function () {
127
+ return __generator(this, function (_a) {
128
+ switch (_a.label) {
129
+ case 0: return [4 /*yield*/, this.db.clear()];
130
+ case 1:
131
+ _a.sent();
132
+ this.initPromise = undefined;
133
+ return [2 /*return*/];
134
+ }
135
+ });
136
+ });
137
+ };
138
+ CommonSQLiteAdapter.prototype.save = function (model, condition) {
139
+ var e_1, _a;
140
+ return __awaiter(this, void 0, void 0, function () {
141
+ var modelConstructor, tableName, connectedModels, connectionStoreNames, _b, queryStatement, params, fromDB, predicates, predicateObjs, type, isValid, msg, result, saveStatements, connectionStoreNames_1, connectionStoreNames_1_1, resItem, modelName, item, instance, id, _c, queryStatement_1, params_1, fromDB_1, opType, saveStatement, e_1_1;
142
+ return __generator(this, function (_d) {
143
+ switch (_d.label) {
144
+ case 0:
145
+ modelConstructor = Object.getPrototypeOf(model)
146
+ .constructor;
147
+ tableName = modelConstructor.name;
148
+ connectedModels = traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
149
+ connectionStoreNames = Object.values(connectedModels).map(function (_a) {
150
+ var modelName = _a.modelName, item = _a.item, instance = _a.instance;
151
+ return { modelName: modelName, item: item, instance: instance };
152
+ });
153
+ _b = __read(SQLiteUtils_1.queryByIdStatement(model.id, tableName), 2), queryStatement = _b[0], params = _b[1];
154
+ return [4 /*yield*/, this.db.get(queryStatement, params)];
155
+ case 1:
156
+ fromDB = _d.sent();
157
+ if (condition && fromDB) {
158
+ predicates = datastore_1.ModelPredicateCreator.getPredicates(condition);
159
+ predicateObjs = predicates.predicates, type = predicates.type;
160
+ isValid = validatePredicate(fromDB, type, predicateObjs);
161
+ if (!isValid) {
162
+ msg = 'Conditional update failed';
163
+ logger.error(msg, { model: fromDB, condition: predicateObjs });
164
+ throw new Error(msg);
165
+ }
166
+ }
167
+ result = [];
168
+ saveStatements = new Set();
169
+ _d.label = 2;
170
+ case 2:
171
+ _d.trys.push([2, 8, 9, 14]);
172
+ connectionStoreNames_1 = __asyncValues(connectionStoreNames);
173
+ _d.label = 3;
174
+ case 3: return [4 /*yield*/, connectionStoreNames_1.next()];
175
+ case 4:
176
+ if (!(connectionStoreNames_1_1 = _d.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 7];
177
+ resItem = connectionStoreNames_1_1.value;
178
+ modelName = resItem.modelName, item = resItem.item, instance = resItem.instance;
179
+ id = item.id;
180
+ _c = __read(SQLiteUtils_1.queryByIdStatement(id, modelName), 2), queryStatement_1 = _c[0], params_1 = _c[1];
181
+ return [4 /*yield*/, this.db.get(queryStatement_1, params_1)];
182
+ case 5:
183
+ fromDB_1 = _d.sent();
184
+ opType = fromDB_1 === undefined ? datastore_1.OpType.INSERT : datastore_1.OpType.UPDATE;
185
+ saveStatement = fromDB_1
186
+ ? SQLiteUtils_1.modelUpdateStatement(instance, modelName)
187
+ : SQLiteUtils_1.modelInsertStatement(instance, modelName);
188
+ saveStatements.add(saveStatement);
189
+ result.push([instance, opType]);
190
+ _d.label = 6;
191
+ case 6: return [3 /*break*/, 3];
192
+ case 7: return [3 /*break*/, 14];
193
+ case 8:
194
+ e_1_1 = _d.sent();
195
+ e_1 = { error: e_1_1 };
196
+ return [3 /*break*/, 14];
197
+ case 9:
198
+ _d.trys.push([9, , 12, 13]);
199
+ if (!(connectionStoreNames_1_1 && !connectionStoreNames_1_1.done && (_a = connectionStoreNames_1.return))) return [3 /*break*/, 11];
200
+ return [4 /*yield*/, _a.call(connectionStoreNames_1)];
201
+ case 10:
202
+ _d.sent();
203
+ _d.label = 11;
204
+ case 11: return [3 /*break*/, 13];
205
+ case 12:
206
+ if (e_1) throw e_1.error;
207
+ return [7 /*endfinally*/];
208
+ case 13: return [7 /*endfinally*/];
209
+ case 14: return [4 /*yield*/, this.db.batchSave(saveStatements)];
210
+ case 15:
211
+ _d.sent();
212
+ return [2 /*return*/, result];
213
+ }
214
+ });
215
+ });
216
+ };
217
+ CommonSQLiteAdapter.prototype.load = function (namespaceName, srcModelName, records) {
218
+ var records_1, records_1_1, records_2, records_2_1;
219
+ var e_2, _a, e_3, _b, e_4, _c;
220
+ return __awaiter(this, void 0, void 0, function () {
221
+ var namespace, relations, connectionTableNames, modelConstructor, relations_1, relations_1_1, relation, fieldName, tableName, targetName, relationType, modelConstructor_1, _d, recordItem, getByfield, _e, queryStatement, params, connectionRecord, e_3_1, recordItem, _f, queryStatement, params, connectionRecord, e_4_1, _, e_2_1;
222
+ var _this = this;
223
+ return __generator(this, function (_g) {
224
+ switch (_g.label) {
225
+ case 0:
226
+ namespace = this.schema.namespaces[namespaceName];
227
+ relations = namespace.relationships[srcModelName].relationTypes;
228
+ connectionTableNames = relations.map(function (_a) {
229
+ var modelName = _a.modelName;
230
+ return modelName;
231
+ });
232
+ modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
233
+ if (connectionTableNames.length === 0) {
234
+ return [2 /*return*/, records.map(function (record) {
235
+ return _this.modelInstanceCreator(modelConstructor, record);
236
+ })];
237
+ }
238
+ _g.label = 1;
239
+ case 1:
240
+ _g.trys.push([1, 34, 35, 40]);
241
+ relations_1 = __asyncValues(relations);
242
+ _g.label = 2;
243
+ case 2: return [4 /*yield*/, relations_1.next()];
244
+ case 3:
245
+ if (!(relations_1_1 = _g.sent(), !relations_1_1.done)) return [3 /*break*/, 33];
246
+ relation = relations_1_1.value;
247
+ fieldName = relation.fieldName, tableName = relation.modelName, targetName = relation.targetName, relationType = relation.relationType;
248
+ modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, tableName);
249
+ _d = relationType;
250
+ switch (_d) {
251
+ case 'HAS_ONE': return [3 /*break*/, 4];
252
+ case 'BELONGS_TO': return [3 /*break*/, 17];
253
+ case 'HAS_MANY': return [3 /*break*/, 30];
254
+ }
255
+ return [3 /*break*/, 31];
256
+ case 4:
257
+ _g.trys.push([4, 10, 11, 16]);
258
+ records_1 = __asyncValues(records);
259
+ _g.label = 5;
260
+ case 5: return [4 /*yield*/, records_1.next()];
261
+ case 6:
262
+ if (!(records_1_1 = _g.sent(), !records_1_1.done)) return [3 /*break*/, 9];
263
+ recordItem = records_1_1.value;
264
+ getByfield = recordItem[targetName] ? targetName : fieldName;
265
+ if (!recordItem[getByfield])
266
+ return [3 /*break*/, 9];
267
+ _e = __read(SQLiteUtils_1.queryByIdStatement(recordItem[getByfield], tableName), 2), queryStatement = _e[0], params = _e[1];
268
+ return [4 /*yield*/, this.db.get(queryStatement, params)];
269
+ case 7:
270
+ connectionRecord = _g.sent();
271
+ recordItem[fieldName] =
272
+ connectionRecord &&
273
+ this.modelInstanceCreator(modelConstructor_1, connectionRecord);
274
+ _g.label = 8;
275
+ case 8: return [3 /*break*/, 5];
276
+ case 9: return [3 /*break*/, 16];
277
+ case 10:
278
+ e_3_1 = _g.sent();
279
+ e_3 = { error: e_3_1 };
280
+ return [3 /*break*/, 16];
281
+ case 11:
282
+ _g.trys.push([11, , 14, 15]);
283
+ if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/, 13];
284
+ return [4 /*yield*/, _b.call(records_1)];
285
+ case 12:
286
+ _g.sent();
287
+ _g.label = 13;
288
+ case 13: return [3 /*break*/, 15];
289
+ case 14:
290
+ if (e_3) throw e_3.error;
291
+ return [7 /*endfinally*/];
292
+ case 15: return [7 /*endfinally*/];
293
+ case 16: return [3 /*break*/, 32];
294
+ case 17:
295
+ _g.trys.push([17, 23, 24, 29]);
296
+ records_2 = __asyncValues(records);
297
+ _g.label = 18;
298
+ case 18: return [4 /*yield*/, records_2.next()];
299
+ case 19:
300
+ if (!(records_2_1 = _g.sent(), !records_2_1.done)) return [3 /*break*/, 22];
301
+ recordItem = records_2_1.value;
302
+ if (!recordItem[targetName]) return [3 /*break*/, 21];
303
+ _f = __read(SQLiteUtils_1.queryByIdStatement(recordItem[targetName], tableName), 2), queryStatement = _f[0], params = _f[1];
304
+ return [4 /*yield*/, this.db.get(queryStatement, params)];
305
+ case 20:
306
+ connectionRecord = _g.sent();
307
+ recordItem[fieldName] =
308
+ connectionRecord &&
309
+ this.modelInstanceCreator(modelConstructor_1, connectionRecord);
310
+ delete recordItem[targetName];
311
+ _g.label = 21;
312
+ case 21: return [3 /*break*/, 18];
313
+ case 22: return [3 /*break*/, 29];
314
+ case 23:
315
+ e_4_1 = _g.sent();
316
+ e_4 = { error: e_4_1 };
317
+ return [3 /*break*/, 29];
318
+ case 24:
319
+ _g.trys.push([24, , 27, 28]);
320
+ if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/, 26];
321
+ return [4 /*yield*/, _c.call(records_2)];
322
+ case 25:
323
+ _g.sent();
324
+ _g.label = 26;
325
+ case 26: return [3 /*break*/, 28];
326
+ case 27:
327
+ if (e_4) throw e_4.error;
328
+ return [7 /*endfinally*/];
329
+ case 28: return [7 /*endfinally*/];
330
+ case 29: return [3 /*break*/, 32];
331
+ case 30:
332
+ // TODO: Lazy loading
333
+ return [3 /*break*/, 32];
334
+ case 31:
335
+ _ = relationType;
336
+ throw new Error("invalid relation type " + relationType);
337
+ case 32: return [3 /*break*/, 2];
338
+ case 33: return [3 /*break*/, 40];
339
+ case 34:
340
+ e_2_1 = _g.sent();
341
+ e_2 = { error: e_2_1 };
342
+ return [3 /*break*/, 40];
343
+ case 35:
344
+ _g.trys.push([35, , 38, 39]);
345
+ if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 37];
346
+ return [4 /*yield*/, _a.call(relations_1)];
347
+ case 36:
348
+ _g.sent();
349
+ _g.label = 37;
350
+ case 37: return [3 /*break*/, 39];
351
+ case 38:
352
+ if (e_2) throw e_2.error;
353
+ return [7 /*endfinally*/];
354
+ case 39: return [7 /*endfinally*/];
355
+ case 40: return [2 /*return*/, records.map(function (record) {
356
+ return _this.modelInstanceCreator(modelConstructor, record);
357
+ })];
358
+ }
359
+ });
360
+ });
361
+ };
362
+ CommonSQLiteAdapter.prototype.query = function (modelConstructor, predicate, pagination) {
363
+ return __awaiter(this, void 0, void 0, function () {
364
+ var tableName, namespaceName, predicates, sortPredicates, limit, page, queryById, records;
365
+ var _this = this;
366
+ return __generator(this, function (_a) {
367
+ switch (_a.label) {
368
+ case 0:
369
+ tableName = modelConstructor.name;
370
+ namespaceName = this.namespaceResolver(modelConstructor);
371
+ predicates = predicate && datastore_1.ModelPredicateCreator.getPredicates(predicate);
372
+ sortPredicates = pagination &&
373
+ pagination.sort &&
374
+ datastore_1.ModelSortPredicateCreator.getPredicates(pagination.sort);
375
+ limit = pagination && pagination.limit;
376
+ page = limit && pagination.page;
377
+ queryById = predicates && this.idFromPredicate(predicates);
378
+ return [4 /*yield*/, (function () { return __awaiter(_this, void 0, void 0, function () {
379
+ var record, _a, queryStatement, params;
380
+ return __generator(this, function (_b) {
381
+ switch (_b.label) {
382
+ case 0:
383
+ if (!queryById) return [3 /*break*/, 2];
384
+ return [4 /*yield*/, this.getById(tableName, queryById)];
385
+ case 1:
386
+ record = _b.sent();
387
+ return [2 /*return*/, record ? [record] : []];
388
+ case 2:
389
+ _a = __read(SQLiteUtils_1.queryAllStatement(tableName, predicates, sortPredicates, limit, page), 2), queryStatement = _a[0], params = _a[1];
390
+ return [4 /*yield*/, this.db.getAll(queryStatement, params)];
391
+ case 3: return [2 /*return*/, _b.sent()];
392
+ }
393
+ });
394
+ }); })()];
395
+ case 1:
396
+ records = _a.sent();
397
+ return [4 /*yield*/, this.load(namespaceName, modelConstructor.name, records)];
398
+ case 2: return [2 /*return*/, _a.sent()];
399
+ }
400
+ });
401
+ });
402
+ };
403
+ CommonSQLiteAdapter.prototype.getById = function (tableName, id) {
404
+ return __awaiter(this, void 0, void 0, function () {
405
+ var _a, queryStatement, params, record;
406
+ return __generator(this, function (_b) {
407
+ switch (_b.label) {
408
+ case 0:
409
+ _a = __read(SQLiteUtils_1.queryByIdStatement(id, tableName), 2), queryStatement = _a[0], params = _a[1];
410
+ return [4 /*yield*/, this.db.get(queryStatement, params)];
411
+ case 1:
412
+ record = _b.sent();
413
+ return [2 /*return*/, record];
414
+ }
415
+ });
416
+ });
417
+ };
418
+ CommonSQLiteAdapter.prototype.idFromPredicate = function (predicates) {
419
+ var predicateObjs = predicates.predicates;
420
+ var idPredicate = predicateObjs.length === 1 &&
421
+ predicateObjs.find(function (p) { return datastore_1.isPredicateObj(p) && p.field === 'id' && p.operator === 'eq'; });
422
+ return idPredicate && idPredicate.operand;
423
+ };
424
+ CommonSQLiteAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
425
+ if (firstOrLast === void 0) { firstOrLast = datastore_1.QueryOne.FIRST; }
426
+ return __awaiter(this, void 0, void 0, function () {
427
+ var tableName, _a, queryStatement, params, result, modelInstance;
428
+ return __generator(this, function (_b) {
429
+ switch (_b.label) {
430
+ case 0:
431
+ tableName = modelConstructor.name;
432
+ _a = __read(SQLiteUtils_1.queryOneStatement(firstOrLast, tableName), 2), queryStatement = _a[0], params = _a[1];
433
+ return [4 /*yield*/, this.db.get(queryStatement, params)];
434
+ case 1:
435
+ result = _b.sent();
436
+ modelInstance = result && this.modelInstanceCreator(modelConstructor, result);
437
+ return [2 /*return*/, modelInstance];
438
+ }
439
+ });
440
+ });
441
+ };
442
+ // Currently does not cascade
443
+ // TODO: use FKs in relations and have `ON DELETE CASCADE` set
444
+ // For Has Many and Has One relations to have SQL handle cascades automatically
445
+ CommonSQLiteAdapter.prototype.delete = function (modelOrModelConstructor, condition) {
446
+ return __awaiter(this, void 0, void 0, function () {
447
+ var modelConstructor, namespaceName, tableName, predicates, queryStatement, deleteStatement, models, modelInstances, model, modelConstructor, tableName, _a, queryStatement, params, fromDB, msg, predicates, predicateObjs, type, isValid, msg, _b, deleteStatement, deleteParams, _c, deleteStatement, params;
448
+ return __generator(this, function (_d) {
449
+ switch (_d.label) {
450
+ case 0:
451
+ if (!isModelConstructor(modelOrModelConstructor)) return [3 /*break*/, 3];
452
+ modelConstructor = modelOrModelConstructor;
453
+ namespaceName = this.namespaceResolver(modelConstructor);
454
+ tableName = modelConstructor.name;
455
+ predicates = condition && datastore_1.ModelPredicateCreator.getPredicates(condition);
456
+ queryStatement = SQLiteUtils_1.queryAllStatement(tableName, predicates);
457
+ deleteStatement = SQLiteUtils_1.deleteByPredicateStatement(tableName, predicates);
458
+ return [4 /*yield*/, this.db.selectAndDelete(queryStatement, deleteStatement)];
459
+ case 1:
460
+ models = _d.sent();
461
+ return [4 /*yield*/, this.load(namespaceName, modelConstructor.name, models)];
462
+ case 2:
463
+ modelInstances = _d.sent();
464
+ return [2 /*return*/, [modelInstances, modelInstances]];
465
+ case 3:
466
+ model = modelOrModelConstructor;
467
+ modelConstructor = Object.getPrototypeOf(model)
468
+ .constructor;
469
+ tableName = modelConstructor.name;
470
+ if (!condition) return [3 /*break*/, 6];
471
+ _a = __read(SQLiteUtils_1.queryByIdStatement(model.id, tableName), 2), queryStatement = _a[0], params = _a[1];
472
+ return [4 /*yield*/, this.db.get(queryStatement, params)];
473
+ case 4:
474
+ fromDB = _d.sent();
475
+ if (fromDB === undefined) {
476
+ msg = 'Model instance not found in storage';
477
+ logger.warn(msg, { model: model });
478
+ return [2 /*return*/, [[model], []]];
479
+ }
480
+ predicates = datastore_1.ModelPredicateCreator.getPredicates(condition);
481
+ predicateObjs = predicates.predicates, type = predicates.type;
482
+ isValid = validatePredicate(fromDB, type, predicateObjs);
483
+ if (!isValid) {
484
+ msg = 'Conditional update failed';
485
+ logger.error(msg, { model: fromDB, condition: predicateObjs });
486
+ throw new Error(msg);
487
+ }
488
+ _b = __read(SQLiteUtils_1.deleteByIdStatement(model.id, tableName), 2), deleteStatement = _b[0], deleteParams = _b[1];
489
+ return [4 /*yield*/, this.db.save(deleteStatement, deleteParams)];
490
+ case 5:
491
+ _d.sent();
492
+ return [2 /*return*/, [[model], [model]]];
493
+ case 6:
494
+ _c = __read(SQLiteUtils_1.deleteByIdStatement(model.id, tableName), 2), deleteStatement = _c[0], params = _c[1];
495
+ return [4 /*yield*/, this.db.save(deleteStatement, params)];
496
+ case 7:
497
+ _d.sent();
498
+ return [2 /*return*/, [[model], [model]]];
499
+ }
500
+ });
501
+ });
502
+ };
503
+ CommonSQLiteAdapter.prototype.batchSave = function (modelConstructor, items) {
504
+ return __awaiter(this, void 0, void 0, function () {
505
+ var tableName, result, itemsToSave, queryStatements, deleteStatements, saveStatements, _loop_1, this_1, items_1, items_1_1, item, queryResponses;
506
+ var e_5, _a;
507
+ return __generator(this, function (_b) {
508
+ switch (_b.label) {
509
+ case 0:
510
+ tableName = modelConstructor.name;
511
+ result = [];
512
+ itemsToSave = [];
513
+ queryStatements = new Set();
514
+ deleteStatements = new Set();
515
+ saveStatements = new Set();
516
+ _loop_1 = function (item) {
517
+ var connectedModels = traverseModel(modelConstructor.name, this_1.modelInstanceCreator(modelConstructor, item), this_1.schema.namespaces[this_1.namespaceResolver(modelConstructor)], this_1.modelInstanceCreator, this_1.getModelConstructorByModelName);
518
+ var id = item.id, _deleted = item._deleted;
519
+ var instance = connectedModels.find(function (_a) {
520
+ var instance = _a.instance;
521
+ return instance.id === id;
522
+ }).instance;
523
+ if (_deleted) {
524
+ // create the delete statements right away
525
+ var deleteStatement = SQLiteUtils_1.deleteByIdStatement(instance.id, tableName);
526
+ deleteStatements.add(deleteStatement);
527
+ result.push([item, datastore_1.OpType.DELETE]);
528
+ }
529
+ else {
530
+ // query statements for the saves at first
531
+ var queryStatement = SQLiteUtils_1.queryByIdStatement(id, tableName);
532
+ queryStatements.add(queryStatement);
533
+ // combination of insert and update items
534
+ itemsToSave.push(instance);
535
+ }
536
+ };
537
+ this_1 = this;
538
+ try {
539
+ for (items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
540
+ item = items_1_1.value;
541
+ _loop_1(item);
542
+ }
543
+ }
544
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
545
+ finally {
546
+ try {
547
+ if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);
548
+ }
549
+ finally { if (e_5) throw e_5.error; }
550
+ }
551
+ return [4 /*yield*/, this.db.batchQuery(queryStatements)];
552
+ case 1:
553
+ queryResponses = _b.sent();
554
+ queryResponses.forEach(function (response, idx) {
555
+ if (response === undefined) {
556
+ var insertStatement = SQLiteUtils_1.modelInsertStatement(itemsToSave[idx], tableName);
557
+ saveStatements.add(insertStatement);
558
+ result.push([itemsToSave[idx], datastore_1.OpType.INSERT]);
559
+ }
560
+ else {
561
+ var updateStatement = SQLiteUtils_1.modelUpdateStatement(itemsToSave[idx], tableName);
562
+ saveStatements.add(updateStatement);
563
+ result.push([itemsToSave[idx], datastore_1.OpType.UPDATE]);
564
+ }
565
+ });
566
+ // perform all of the insert/update/delete operations in a single transaction
567
+ return [4 /*yield*/, this.db.batchSave(saveStatements, deleteStatements)];
568
+ case 2:
569
+ // perform all of the insert/update/delete operations in a single transaction
570
+ _b.sent();
571
+ return [2 /*return*/, result];
572
+ }
573
+ });
574
+ });
575
+ };
576
+ return CommonSQLiteAdapter;
577
+ }());
578
+ exports.CommonSQLiteAdapter = CommonSQLiteAdapter;
579
+ //# sourceMappingURL=CommonSQLiteAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommonSQLiteAdapter.js","sourceRoot":"","sources":["../../src/common/CommonSQLiteAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { InternalSchema, SchemaModel, PersistentModel, PredicatesGroup, SortPredicatesGroup } from '@aws-amplify/datastore';
2
- export declare type ParameterizedStatement = [string, any[]];
1
+ import { InternalSchema, SchemaModel, PersistentModel, PredicatesGroup, SortPredicatesGroup, GraphQLScalarType } from '@aws-amplify/datastore';
2
+ import { ParameterizedStatement } from './types';
3
+ export declare function getSQLiteType(scalar: keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction' | 'getSQLiteType'>): 'TEXT' | 'INTEGER' | 'REAL' | 'BLOB';
3
4
  export declare function generateSchemaStatements(schema: InternalSchema): string[];
4
5
  export declare const implicitAuthFieldsForModel: (model: SchemaModel) => string[];
5
6
  export declare function modelCreateTableStatement(model: SchemaModel, userModel?: boolean): string;