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