@aws-amplify/datastore-storage-adapter 1.2.3-webpack5.5 → 1.2.4-custom-pk.80

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 (80) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/ExpoSQLiteAdapter/index.d.ts +1 -0
  3. package/ExpoSQLiteAdapter/index.js +7 -0
  4. package/SQLiteAdapter/index.d.ts +1 -0
  5. package/SQLiteAdapter/index.js +7 -0
  6. package/dist/aws-amplify-datastore-sqlite-adapter-expo.js +2509 -0
  7. package/dist/aws-amplify-datastore-sqlite-adapter-expo.js.map +1 -0
  8. package/dist/aws-amplify-datastore-sqlite-adapter-expo.min.js +2 -0
  9. package/dist/aws-amplify-datastore-sqlite-adapter-expo.min.js.map +1 -0
  10. package/dist/aws-amplify-datastore-storage-adapter.js +1227 -1158
  11. package/dist/aws-amplify-datastore-storage-adapter.js.map +1 -1
  12. package/dist/aws-amplify-datastore-storage-adapter.min.js +1 -1
  13. package/dist/aws-amplify-datastore-storage-adapter.min.js.map +1 -1
  14. package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
  15. package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +10 -0
  16. package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
  17. package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
  18. package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +362 -0
  19. package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
  20. package/lib/SQLiteAdapter/SQLiteAdapter.d.ts +3 -23
  21. package/lib/SQLiteAdapter/SQLiteAdapter.js +3 -580
  22. package/lib/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
  23. package/lib/SQLiteAdapter/SQLiteDatabase.d.ts +8 -8
  24. package/lib/SQLiteAdapter/SQLiteDatabase.js +46 -42
  25. package/lib/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
  26. package/lib/common/CommonSQLiteAdapter.d.ts +23 -0
  27. package/lib/common/CommonSQLiteAdapter.js +582 -0
  28. package/lib/common/CommonSQLiteAdapter.js.map +1 -0
  29. package/lib/{SQLiteAdapter → common}/SQLiteUtils.d.ts +3 -2
  30. package/lib/{SQLiteAdapter → common}/SQLiteUtils.js +54 -3
  31. package/lib/common/SQLiteUtils.js.map +1 -0
  32. package/lib/common/constants.d.ts +1 -0
  33. package/lib/common/constants.js +4 -0
  34. package/lib/common/constants.js.map +1 -0
  35. package/lib/common/types.d.ts +13 -0
  36. package/lib/common/types.js +3 -0
  37. package/lib/common/types.js.map +1 -0
  38. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
  39. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +5 -0
  40. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
  41. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
  42. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +360 -0
  43. package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
  44. package/lib-esm/SQLiteAdapter/SQLiteAdapter.d.ts +3 -23
  45. package/lib-esm/SQLiteAdapter/SQLiteAdapter.js +3 -580
  46. package/lib-esm/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
  47. package/lib-esm/SQLiteAdapter/SQLiteDatabase.d.ts +8 -8
  48. package/lib-esm/SQLiteAdapter/SQLiteDatabase.js +46 -42
  49. package/lib-esm/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
  50. package/lib-esm/common/CommonSQLiteAdapter.d.ts +23 -0
  51. package/lib-esm/common/CommonSQLiteAdapter.js +580 -0
  52. package/lib-esm/common/CommonSQLiteAdapter.js.map +1 -0
  53. package/lib-esm/{SQLiteAdapter → common}/SQLiteUtils.d.ts +3 -2
  54. package/lib-esm/{SQLiteAdapter → common}/SQLiteUtils.js +52 -2
  55. package/lib-esm/common/SQLiteUtils.js.map +1 -0
  56. package/lib-esm/common/constants.d.ts +1 -0
  57. package/lib-esm/common/constants.js +2 -0
  58. package/lib-esm/common/constants.js.map +1 -0
  59. package/lib-esm/common/types.d.ts +13 -0
  60. package/lib-esm/common/types.js +1 -0
  61. package/lib-esm/common/types.js.map +1 -0
  62. package/package.json +13 -7
  63. package/src/ExpoSQLiteAdapter/ExpoSQLiteAdapter.ts +8 -0
  64. package/src/ExpoSQLiteAdapter/ExpoSQLiteDatabase.ts +282 -0
  65. package/src/SQLiteAdapter/SQLiteAdapter.ts +5 -475
  66. package/src/SQLiteAdapter/SQLiteDatabase.ts +49 -53
  67. package/src/common/CommonSQLiteAdapter.ts +479 -0
  68. package/src/{SQLiteAdapter → common}/SQLiteUtils.ts +66 -5
  69. package/src/common/constants.ts +1 -0
  70. package/src/common/types.ts +29 -0
  71. package/webpack.config.dev.js +2 -0
  72. package/lib/SQLiteAdapter/SQLiteUtils.js.map +0 -1
  73. package/lib/SQLiteAdapter/types.d.ts +0 -2
  74. package/lib/SQLiteAdapter/types.js +0 -28
  75. package/lib/SQLiteAdapter/types.js.map +0 -1
  76. package/lib-esm/SQLiteAdapter/SQLiteUtils.js.map +0 -1
  77. package/lib-esm/SQLiteAdapter/types.d.ts +0 -2
  78. package/lib-esm/SQLiteAdapter/types.js +0 -25
  79. package/lib-esm/SQLiteAdapter/types.js.map +0 -1
  80. package/src/SQLiteAdapter/types.ts +0 -31
@@ -100,18 +100,34 @@ return /******/ (function(modules) { // webpackBootstrap
100
100
  /*!************************************************!*\
101
101
  !*** ./lib-esm/SQLiteAdapter/SQLiteAdapter.js ***!
102
102
  \************************************************/
103
- /*! exports provided: SQLiteAdapter, default */
103
+ /*! exports provided: default */
104
104
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
105
105
 
106
106
  "use strict";
107
107
  __webpack_require__.r(__webpack_exports__);
108
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SQLiteAdapter", function() { return SQLiteAdapter; });
109
- /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @aws-amplify/core */ "@aws-amplify/core");
110
- /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__);
108
+ /* harmony import */ var _common_CommonSQLiteAdapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/CommonSQLiteAdapter */ "./lib-esm/common/CommonSQLiteAdapter.js");
111
109
  /* harmony import */ var _SQLiteDatabase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SQLiteDatabase */ "./lib-esm/SQLiteAdapter/SQLiteDatabase.js");
112
- /* harmony import */ var _SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SQLiteUtils */ "./lib-esm/SQLiteAdapter/SQLiteUtils.js");
113
- /* harmony import */ var _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @aws-amplify/datastore */ "@aws-amplify/datastore");
114
- /* harmony import */ var _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__);
110
+
111
+
112
+ var SQLiteAdapter = new _common_CommonSQLiteAdapter__WEBPACK_IMPORTED_MODULE_0__["CommonSQLiteAdapter"](new _SQLiteDatabase__WEBPACK_IMPORTED_MODULE_1__["default"]());
113
+ /* harmony default export */ __webpack_exports__["default"] = (SQLiteAdapter);
114
+
115
+ /***/ }),
116
+
117
+ /***/ "./lib-esm/SQLiteAdapter/SQLiteDatabase.js":
118
+ /*!*************************************************!*\
119
+ !*** ./lib-esm/SQLiteAdapter/SQLiteDatabase.js ***!
120
+ \*************************************************/
121
+ /*! exports provided: default */
122
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
123
+
124
+ "use strict";
125
+ __webpack_require__.r(__webpack_exports__);
126
+ /* harmony import */ var react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native-sqlite-storage */ "react-native-sqlite-storage");
127
+ /* harmony import */ var react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0__);
128
+ /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @aws-amplify/core */ "@aws-amplify/core");
129
+ /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__);
130
+ /* harmony import */ var _common_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/constants */ "./lib-esm/common/constants.js");
115
131
  var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
116
132
  function adopt(value) {
117
133
  return value instanceof P ? value : new P(function (resolve) {
@@ -255,32 +271,6 @@ var __generator = undefined && undefined.__generator || function (thisArg, body)
255
271
  }
256
272
  };
257
273
 
258
- var __asyncValues = undefined && undefined.__asyncValues || function (o) {
259
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
260
- var m = o[Symbol.asyncIterator],
261
- i;
262
- 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 () {
263
- return this;
264
- }, i);
265
-
266
- function verb(n) {
267
- i[n] = o[n] && function (v) {
268
- return new Promise(function (resolve, reject) {
269
- v = o[n](v), settle(resolve, reject, v.done, v.value);
270
- });
271
- };
272
- }
273
-
274
- function settle(resolve, reject, d, v) {
275
- Promise.resolve(v).then(function (v) {
276
- resolve({
277
- value: v,
278
- done: d
279
- });
280
- }, reject);
281
- }
282
- };
283
-
284
274
  var __read = undefined && undefined.__read || function (o, n) {
285
275
  var m = typeof Symbol === "function" && o[Symbol.iterator];
286
276
  if (!m) return o;
@@ -328,94 +318,104 @@ var __values = undefined && undefined.__values || function (o) {
328
318
 
329
319
 
330
320
 
321
+ var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["ConsoleLogger"]('SQLiteDatabase');
322
+ react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.enablePromise(true);
323
+
324
+ if (_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["ConsoleLogger"].LOG_LEVEL === 'DEBUG') {
325
+ react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.DEBUG(true);
326
+ }
327
+ /*
328
+
329
+ Note:
330
+ I purposely avoided using arrow functions () => {} in this class,
331
+ Because I ran into issues with them in some of the SQLite method callbacks
332
+
333
+ Also, even though the SQLite library is promisified, certain operations
334
+ only work correctly with callbacks. Specifically, any time you need to
335
+ get the result of an `executeSql` command inside of a transaction
336
+ (see the batchQuery method below)
337
+
338
+ */
331
339
 
332
- var traverseModel = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["utils"].traverseModel,
333
- validatePredicate = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["utils"].validatePredicate,
334
- isModelConstructor = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["utils"].isModelConstructor;
335
- var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["ConsoleLogger"]('DataStore');
336
340
 
337
- var SQLiteAdapter =
341
+ var SQLiteDatabase =
338
342
  /** @class */
339
343
  function () {
340
- function SQLiteAdapter() {}
344
+ function SQLiteDatabase() {}
341
345
 
342
- SQLiteAdapter.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
346
+ SQLiteDatabase.prototype.init = function () {
343
347
  return __awaiter(this, void 0, void 0, function () {
344
- var statements, error_1;
345
-
346
- var _this = this;
348
+ var _a;
347
349
 
348
- return __generator(this, function (_a) {
349
- switch (_a.label) {
350
+ return __generator(this, function (_b) {
351
+ switch (_b.label) {
350
352
  case 0:
351
- if (!!this.initPromise) return [3
352
- /*break*/
353
- , 1];
354
- this.initPromise = new Promise(function (res, rej) {
355
- _this.resolve = res;
356
- _this.reject = rej;
357
- });
358
- return [3
353
+ if (!!this.db) return [3
359
354
  /*break*/
360
- , 3];
361
-
362
- case 1:
355
+ , 2];
356
+ _a = this;
363
357
  return [4
364
358
  /*yield*/
365
- , this.initPromise];
359
+ , react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.openDatabase({
360
+ name: _common_constants__WEBPACK_IMPORTED_MODULE_2__["DB_NAME"],
361
+ location: 'default'
362
+ })];
366
363
 
367
- case 2:
368
- _a.sent();
364
+ case 1:
365
+ _a.db = _b.sent();
366
+ _b.label = 2;
369
367
 
368
+ case 2:
370
369
  return [2
371
370
  /*return*/
372
371
  ];
372
+ }
373
+ });
374
+ });
375
+ };
373
376
 
374
- case 3:
375
- this.schema = theSchema;
376
- this.namespaceResolver = namespaceResolver;
377
- this.modelInstanceCreator = modelInstanceCreator;
378
- this.getModelConstructorByModelName = getModelConstructorByModelName;
379
- _a.label = 4;
377
+ SQLiteDatabase.prototype.createSchema = function (statements) {
378
+ return __awaiter(this, void 0, void 0, function () {
379
+ return __generator(this, function (_a) {
380
+ switch (_a.label) {
381
+ case 0:
382
+ return [4
383
+ /*yield*/
384
+ , this.executeStatements(statements)];
380
385
 
381
- case 4:
382
- _a.trys.push([4, 8,, 9]);
386
+ case 1:
387
+ return [2
388
+ /*return*/
389
+ , _a.sent()];
390
+ }
391
+ });
392
+ });
393
+ };
383
394
 
384
- if (!!this.db) return [3
385
- /*break*/
386
- , 7];
387
- this.db = new _SQLiteDatabase__WEBPACK_IMPORTED_MODULE_1__["default"]();
395
+ SQLiteDatabase.prototype.clear = function () {
396
+ return __awaiter(this, void 0, void 0, function () {
397
+ return __generator(this, function (_a) {
398
+ switch (_a.label) {
399
+ case 0:
388
400
  return [4
389
401
  /*yield*/
390
- , this.db.init()];
402
+ , this.closeDB()];
391
403
 
392
- case 5:
404
+ case 1:
393
405
  _a.sent();
394
406
 
395
- statements = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["generateSchemaStatements"])(this.schema);
407
+ logger.debug('Deleting database');
396
408
  return [4
397
409
  /*yield*/
398
- , this.db.createSchema(statements)];
410
+ , react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.deleteDatabase({
411
+ name: _common_constants__WEBPACK_IMPORTED_MODULE_2__["DB_NAME"],
412
+ location: 'default'
413
+ })];
399
414
 
400
- case 6:
415
+ case 2:
401
416
  _a.sent();
402
417
 
403
- this.resolve();
404
- _a.label = 7;
405
-
406
- case 7:
407
- return [3
408
- /*break*/
409
- , 9];
410
-
411
- case 8:
412
- error_1 = _a.sent();
413
- this.reject(error_1);
414
- return [3
415
- /*break*/
416
- , 9];
417
-
418
- case 9:
418
+ logger.debug('Database deleted');
419
419
  return [2
420
420
  /*return*/
421
421
  ];
@@ -424,1402 +424,1440 @@ function () {
424
424
  });
425
425
  };
426
426
 
427
- SQLiteAdapter.prototype.clear = function () {
427
+ SQLiteDatabase.prototype.get = function (statement, params) {
428
428
  return __awaiter(this, void 0, void 0, function () {
429
+ var results;
429
430
  return __generator(this, function (_a) {
430
431
  switch (_a.label) {
431
432
  case 0:
432
433
  return [4
433
434
  /*yield*/
434
- , this.db.clear()];
435
+ , this.getAll(statement, params)];
435
436
 
436
437
  case 1:
437
- _a.sent();
438
-
439
- this.db = undefined;
440
- this.initPromise = undefined;
438
+ results = _a.sent();
441
439
  return [2
442
440
  /*return*/
443
- ];
441
+ , results[0]];
444
442
  }
445
443
  });
446
444
  });
447
445
  };
448
446
 
449
- SQLiteAdapter.prototype.save = function (model, condition) {
450
- var e_1, _a;
451
-
447
+ SQLiteDatabase.prototype.getAll = function (statement, params) {
452
448
  return __awaiter(this, void 0, void 0, function () {
453
- 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;
449
+ var _a, resultSet, result;
454
450
 
455
- return __generator(this, function (_d) {
456
- switch (_d.label) {
451
+ return __generator(this, function (_b) {
452
+ switch (_b.label) {
457
453
  case 0:
458
- modelConstructor = Object.getPrototypeOf(model).constructor;
459
- tableName = modelConstructor.name;
460
- connectedModels = traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
461
- connectionStoreNames = Object.values(connectedModels).map(function (_a) {
462
- var modelName = _a.modelName,
463
- item = _a.item,
464
- instance = _a.instance;
465
- return {
466
- modelName: modelName,
467
- item: item,
468
- instance: instance
469
- };
470
- });
471
- _b = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(model.id, tableName), 2), queryStatement = _b[0], params = _b[1];
472
454
  return [4
473
455
  /*yield*/
474
- , this.db.get(queryStatement, params)];
456
+ , this.db.executeSql(statement, params)];
475
457
 
476
458
  case 1:
477
- fromDB = _d.sent();
478
-
479
- if (condition && fromDB) {
480
- predicates = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["ModelPredicateCreator"].getPredicates(condition);
481
- predicateObjs = predicates.predicates, type = predicates.type;
482
- isValid = validatePredicate(fromDB, type, predicateObjs);
483
-
484
- if (!isValid) {
485
- msg = 'Conditional update failed';
486
- logger.error(msg, {
487
- model: fromDB,
488
- condition: predicateObjs
489
- });
490
- throw new Error(msg);
491
- }
492
- }
459
+ _a = __read.apply(void 0, [_b.sent(), 1]), resultSet = _a[0];
460
+ result = resultSet && resultSet.rows && resultSet.rows.length && resultSet.rows.raw && resultSet.rows.raw();
461
+ return [2
462
+ /*return*/
463
+ , result || []];
464
+ }
465
+ });
466
+ });
467
+ };
493
468
 
494
- result = [];
495
- saveStatements = new Set();
496
- _d.label = 2;
469
+ SQLiteDatabase.prototype.save = function (statement, params) {
470
+ return __awaiter(this, void 0, void 0, function () {
471
+ return __generator(this, function (_a) {
472
+ switch (_a.label) {
473
+ case 0:
474
+ return [4
475
+ /*yield*/
476
+ , this.db.executeSql(statement, params)];
497
477
 
498
- case 2:
499
- _d.trys.push([2, 8, 9, 14]);
478
+ case 1:
479
+ _a.sent();
500
480
 
501
- connectionStoreNames_1 = __asyncValues(connectionStoreNames);
502
- _d.label = 3;
481
+ return [2
482
+ /*return*/
483
+ ];
484
+ }
485
+ });
486
+ });
487
+ };
503
488
 
504
- case 3:
489
+ SQLiteDatabase.prototype.batchQuery = function (queryParameterizedStatements) {
490
+ return __awaiter(this, void 0, void 0, function () {
491
+ var results;
492
+ return __generator(this, function (_a) {
493
+ switch (_a.label) {
494
+ case 0:
495
+ results = [];
505
496
  return [4
506
497
  /*yield*/
507
- , connectionStoreNames_1.next()];
498
+ , this.db.readTransaction(function (tx) {
499
+ var e_1, _a;
508
500
 
509
- case 4:
510
- if (!(connectionStoreNames_1_1 = _d.sent(), !connectionStoreNames_1_1.done)) return [3
511
- /*break*/
512
- , 7];
513
- resItem = connectionStoreNames_1_1.value;
514
- modelName = resItem.modelName, item = resItem.item, instance = resItem.instance;
515
- id = item.id;
516
- _c = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(id, modelName), 2), queryStatement_1 = _c[0], params_1 = _c[1];
517
- return [4
518
- /*yield*/
519
- , this.db.get(queryStatement_1, params_1)];
501
+ try {
502
+ for (var queryParameterizedStatements_1 = __values(queryParameterizedStatements), queryParameterizedStatements_1_1 = queryParameterizedStatements_1.next(); !queryParameterizedStatements_1_1.done; queryParameterizedStatements_1_1 = queryParameterizedStatements_1.next()) {
503
+ var _b = __read(queryParameterizedStatements_1_1.value, 2),
504
+ statement = _b[0],
505
+ params = _b[1];
520
506
 
521
- case 5:
522
- fromDB_1 = _d.sent();
523
- opType = fromDB_1 === undefined ? _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["OpType"].INSERT : _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["OpType"].UPDATE;
524
- saveStatement = fromDB_1 ? Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["modelUpdateStatement"])(instance, modelName) : Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["modelInsertStatement"])(instance, modelName);
525
- saveStatements.add(saveStatement);
526
- result.push([instance, opType]);
527
- _d.label = 6;
507
+ tx.executeSql(statement, params, function (_, res) {
508
+ results.push(res.rows.raw()[0]);
509
+ }, logger.warn);
510
+ }
511
+ } catch (e_1_1) {
512
+ e_1 = {
513
+ error: e_1_1
514
+ };
515
+ } finally {
516
+ try {
517
+ if (queryParameterizedStatements_1_1 && !queryParameterizedStatements_1_1.done && (_a = queryParameterizedStatements_1["return"])) _a.call(queryParameterizedStatements_1);
518
+ } finally {
519
+ if (e_1) throw e_1.error;
520
+ }
521
+ }
522
+ })];
528
523
 
529
- case 6:
530
- return [3
531
- /*break*/
532
- , 3];
524
+ case 1:
525
+ _a.sent();
533
526
 
534
- case 7:
535
- return [3
536
- /*break*/
537
- , 14];
527
+ return [2
528
+ /*return*/
529
+ , results];
530
+ }
531
+ });
532
+ });
533
+ };
538
534
 
539
- case 8:
540
- e_1_1 = _d.sent();
541
- e_1 = {
542
- error: e_1_1
543
- };
544
- return [3
545
- /*break*/
546
- , 14];
535
+ SQLiteDatabase.prototype.batchSave = function (saveParameterizedStatements, deleteParameterizedStatements) {
536
+ return __awaiter(this, void 0, void 0, function () {
537
+ return __generator(this, function (_a) {
538
+ switch (_a.label) {
539
+ case 0:
540
+ return [4
541
+ /*yield*/
542
+ , this.db.transaction(function (tx) {
543
+ var e_2, _a;
547
544
 
548
- case 9:
549
- _d.trys.push([9,, 12, 13]);
545
+ try {
546
+ for (var saveParameterizedStatements_1 = __values(saveParameterizedStatements), saveParameterizedStatements_1_1 = saveParameterizedStatements_1.next(); !saveParameterizedStatements_1_1.done; saveParameterizedStatements_1_1 = saveParameterizedStatements_1.next()) {
547
+ var _b = __read(saveParameterizedStatements_1_1.value, 2),
548
+ statement = _b[0],
549
+ params = _b[1];
550
550
 
551
- if (!(connectionStoreNames_1_1 && !connectionStoreNames_1_1.done && (_a = connectionStoreNames_1["return"]))) return [3
551
+ tx.executeSql(statement, params);
552
+ }
553
+ } catch (e_2_1) {
554
+ e_2 = {
555
+ error: e_2_1
556
+ };
557
+ } finally {
558
+ try {
559
+ if (saveParameterizedStatements_1_1 && !saveParameterizedStatements_1_1.done && (_a = saveParameterizedStatements_1["return"])) _a.call(saveParameterizedStatements_1);
560
+ } finally {
561
+ if (e_2) throw e_2.error;
562
+ }
563
+ }
564
+ })];
565
+
566
+ case 1:
567
+ _a.sent();
568
+
569
+ if (!deleteParameterizedStatements) return [3
552
570
  /*break*/
553
- , 11];
571
+ , 3];
554
572
  return [4
555
573
  /*yield*/
556
- , _a.call(connectionStoreNames_1)];
574
+ , this.db.transaction(function (tx) {
575
+ var e_3, _a;
557
576
 
558
- case 10:
559
- _d.sent();
577
+ try {
578
+ for (var deleteParameterizedStatements_1 = __values(deleteParameterizedStatements), deleteParameterizedStatements_1_1 = deleteParameterizedStatements_1.next(); !deleteParameterizedStatements_1_1.done; deleteParameterizedStatements_1_1 = deleteParameterizedStatements_1.next()) {
579
+ var _b = __read(deleteParameterizedStatements_1_1.value, 2),
580
+ statement = _b[0],
581
+ params = _b[1];
560
582
 
561
- _d.label = 11;
583
+ tx.executeSql(statement, params);
584
+ }
585
+ } catch (e_3_1) {
586
+ e_3 = {
587
+ error: e_3_1
588
+ };
589
+ } finally {
590
+ try {
591
+ if (deleteParameterizedStatements_1_1 && !deleteParameterizedStatements_1_1.done && (_a = deleteParameterizedStatements_1["return"])) _a.call(deleteParameterizedStatements_1);
592
+ } finally {
593
+ if (e_3) throw e_3.error;
594
+ }
595
+ }
596
+ })];
562
597
 
563
- case 11:
564
- return [3
565
- /*break*/
566
- , 13];
598
+ case 2:
599
+ _a.sent();
567
600
 
568
- case 12:
569
- if (e_1) throw e_1.error;
570
- return [7
571
- /*endfinally*/
572
- ];
601
+ _a.label = 3;
573
602
 
574
- case 13:
575
- return [7
576
- /*endfinally*/
603
+ case 3:
604
+ return [2
605
+ /*return*/
577
606
  ];
607
+ }
608
+ });
609
+ });
610
+ };
578
611
 
579
- case 14:
612
+ SQLiteDatabase.prototype.selectAndDelete = function (queryParameterizedStatement, deleteParameterizedStatement) {
613
+ return __awaiter(this, void 0, void 0, function () {
614
+ var results, _a, queryStatement, queryParams, _b, deleteStatement, deleteParams;
615
+
616
+ return __generator(this, function (_c) {
617
+ switch (_c.label) {
618
+ case 0:
619
+ results = [];
620
+ _a = __read(queryParameterizedStatement, 2), queryStatement = _a[0], queryParams = _a[1];
621
+ _b = __read(deleteParameterizedStatement, 2), deleteStatement = _b[0], deleteParams = _b[1];
580
622
  return [4
581
623
  /*yield*/
582
- , this.db.batchSave(saveStatements)];
624
+ , this.db.transaction(function (tx) {
625
+ tx.executeSql(queryStatement, queryParams, function (_, res) {
626
+ results = res.rows.raw();
627
+ }, logger.warn);
628
+ tx.executeSql(deleteStatement, deleteParams, function () {}, logger.warn);
629
+ })];
583
630
 
584
- case 15:
585
- _d.sent();
631
+ case 1:
632
+ _c.sent();
586
633
 
587
634
  return [2
588
635
  /*return*/
589
- , result];
636
+ , results];
590
637
  }
591
638
  });
592
639
  });
593
640
  };
594
641
 
595
- SQLiteAdapter.prototype.load = function (namespaceName, srcModelName, records) {
596
- var records_1, records_1_1, records_2, records_2_1;
597
-
598
- var e_2, _a, e_3, _b, e_4, _c;
599
-
642
+ SQLiteDatabase.prototype.executeStatements = function (statements) {
600
643
  return __awaiter(this, void 0, void 0, function () {
601
- 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;
602
-
603
- var _this = this;
604
-
605
- return __generator(this, function (_g) {
606
- switch (_g.label) {
644
+ return __generator(this, function (_a) {
645
+ switch (_a.label) {
607
646
  case 0:
608
- namespace = this.schema.namespaces[namespaceName];
609
- relations = namespace.relationships[srcModelName].relationTypes;
610
- connectionTableNames = relations.map(function (_a) {
611
- var modelName = _a.modelName;
612
- return modelName;
613
- });
614
- modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
615
-
616
- if (connectionTableNames.length === 0) {
617
- return [2
618
- /*return*/
619
- , records.map(function (record) {
620
- return _this.modelInstanceCreator(modelConstructor, record);
621
- })];
622
- }
647
+ return [4
648
+ /*yield*/
649
+ , this.db.transaction(function (tx) {
650
+ var e_4, _a;
623
651
 
624
- _g.label = 1;
652
+ try {
653
+ for (var statements_1 = __values(statements), statements_1_1 = statements_1.next(); !statements_1_1.done; statements_1_1 = statements_1.next()) {
654
+ var statement = statements_1_1.value;
655
+ tx.executeSql(statement);
656
+ }
657
+ } catch (e_4_1) {
658
+ e_4 = {
659
+ error: e_4_1
660
+ };
661
+ } finally {
662
+ try {
663
+ if (statements_1_1 && !statements_1_1.done && (_a = statements_1["return"])) _a.call(statements_1);
664
+ } finally {
665
+ if (e_4) throw e_4.error;
666
+ }
667
+ }
668
+ })];
625
669
 
626
670
  case 1:
627
- _g.trys.push([1, 34, 35, 40]);
671
+ _a.sent();
628
672
 
629
- relations_1 = __asyncValues(relations);
630
- _g.label = 2;
673
+ return [2
674
+ /*return*/
675
+ ];
676
+ }
677
+ });
678
+ });
679
+ };
631
680
 
632
- case 2:
681
+ SQLiteDatabase.prototype.closeDB = function () {
682
+ return __awaiter(this, void 0, void 0, function () {
683
+ return __generator(this, function (_a) {
684
+ switch (_a.label) {
685
+ case 0:
686
+ if (!this.db) return [3
687
+ /*break*/
688
+ , 2];
689
+ logger.debug('Closing Database');
633
690
  return [4
634
691
  /*yield*/
635
- , relations_1.next()];
692
+ , this.db.close()];
636
693
 
637
- case 3:
638
- if (!(relations_1_1 = _g.sent(), !relations_1_1.done)) return [3
639
- /*break*/
640
- , 33];
641
- relation = relations_1_1.value;
642
- fieldName = relation.fieldName, tableName = relation.modelName, targetName = relation.targetName, relationType = relation.relationType;
643
- modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, tableName);
644
- _d = relationType;
694
+ case 1:
695
+ _a.sent();
645
696
 
646
- switch (_d) {
647
- case 'HAS_ONE':
648
- return [3
649
- /*break*/
650
- , 4];
697
+ logger.debug('Database closed');
698
+ this.db = undefined;
699
+ _a.label = 2;
651
700
 
652
- case 'BELONGS_TO':
653
- return [3
654
- /*break*/
655
- , 17];
701
+ case 2:
702
+ return [2
703
+ /*return*/
704
+ ];
705
+ }
706
+ });
707
+ });
708
+ };
656
709
 
657
- case 'HAS_MANY':
658
- return [3
659
- /*break*/
660
- , 30];
661
- }
710
+ return SQLiteDatabase;
711
+ }();
662
712
 
663
- return [3
664
- /*break*/
665
- , 31];
713
+ /* harmony default export */ __webpack_exports__["default"] = (SQLiteDatabase);
666
714
 
667
- case 4:
668
- _g.trys.push([4, 10, 11, 16]);
715
+ /***/ }),
669
716
 
670
- records_1 = __asyncValues(records);
671
- _g.label = 5;
672
-
673
- case 5:
674
- return [4
675
- /*yield*/
676
- , records_1.next()];
677
-
678
- case 6:
679
- if (!(records_1_1 = _g.sent(), !records_1_1.done)) return [3
680
- /*break*/
681
- , 9];
682
- recordItem = records_1_1.value;
683
- getByfield = recordItem[targetName] ? targetName : fieldName;
684
- if (!recordItem[getByfield]) return [3
685
- /*break*/
686
- , 9];
687
- _e = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(recordItem[getByfield], tableName), 2), queryStatement = _e[0], params = _e[1];
688
- return [4
689
- /*yield*/
690
- , this.db.get(queryStatement, params)];
691
-
692
- case 7:
693
- connectionRecord = _g.sent();
694
- recordItem[fieldName] = connectionRecord && this.modelInstanceCreator(modelConstructor_1, connectionRecord);
695
- _g.label = 8;
696
-
697
- case 8:
698
- return [3
699
- /*break*/
700
- , 5];
701
-
702
- case 9:
703
- return [3
704
- /*break*/
705
- , 16];
717
+ /***/ "./lib-esm/common/CommonSQLiteAdapter.js":
718
+ /*!***********************************************!*\
719
+ !*** ./lib-esm/common/CommonSQLiteAdapter.js ***!
720
+ \***********************************************/
721
+ /*! exports provided: CommonSQLiteAdapter */
722
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
706
723
 
707
- case 10:
708
- e_3_1 = _g.sent();
709
- e_3 = {
710
- error: e_3_1
711
- };
712
- return [3
713
- /*break*/
714
- , 16];
724
+ "use strict";
725
+ __webpack_require__.r(__webpack_exports__);
726
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CommonSQLiteAdapter", function() { return CommonSQLiteAdapter; });
727
+ /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @aws-amplify/core */ "@aws-amplify/core");
728
+ /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__);
729
+ /* harmony import */ var _common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/SQLiteUtils */ "./lib-esm/common/SQLiteUtils.js");
730
+ /* harmony import */ var _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @aws-amplify/datastore */ "@aws-amplify/datastore");
731
+ /* harmony import */ var _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__);
732
+ var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
733
+ function adopt(value) {
734
+ return value instanceof P ? value : new P(function (resolve) {
735
+ resolve(value);
736
+ });
737
+ }
715
738
 
716
- case 11:
717
- _g.trys.push([11,, 14, 15]);
739
+ return new (P || (P = Promise))(function (resolve, reject) {
740
+ function fulfilled(value) {
741
+ try {
742
+ step(generator.next(value));
743
+ } catch (e) {
744
+ reject(e);
745
+ }
746
+ }
718
747
 
719
- if (!(records_1_1 && !records_1_1.done && (_b = records_1["return"]))) return [3
720
- /*break*/
721
- , 13];
722
- return [4
723
- /*yield*/
724
- , _b.call(records_1)];
748
+ function rejected(value) {
749
+ try {
750
+ step(generator["throw"](value));
751
+ } catch (e) {
752
+ reject(e);
753
+ }
754
+ }
725
755
 
726
- case 12:
727
- _g.sent();
756
+ function step(result) {
757
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
758
+ }
728
759
 
729
- _g.label = 13;
760
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
761
+ });
762
+ };
730
763
 
731
- case 13:
732
- return [3
733
- /*break*/
734
- , 15];
764
+ var __generator = undefined && undefined.__generator || function (thisArg, body) {
765
+ var _ = {
766
+ label: 0,
767
+ sent: function sent() {
768
+ if (t[0] & 1) throw t[1];
769
+ return t[1];
770
+ },
771
+ trys: [],
772
+ ops: []
773
+ },
774
+ f,
775
+ y,
776
+ t,
777
+ g;
778
+ return g = {
779
+ next: verb(0),
780
+ "throw": verb(1),
781
+ "return": verb(2)
782
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
783
+ return this;
784
+ }), g;
735
785
 
736
- case 14:
737
- if (e_3) throw e_3.error;
738
- return [7
739
- /*endfinally*/
740
- ];
786
+ function verb(n) {
787
+ return function (v) {
788
+ return step([n, v]);
789
+ };
790
+ }
741
791
 
742
- case 15:
743
- return [7
744
- /*endfinally*/
745
- ];
792
+ function step(op) {
793
+ if (f) throw new TypeError("Generator is already executing.");
746
794
 
747
- case 16:
748
- return [3
749
- /*break*/
750
- , 32];
795
+ while (_) {
796
+ try {
797
+ 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;
798
+ if (y = 0, t) op = [op[0] & 2, t.value];
751
799
 
752
- case 17:
753
- _g.trys.push([17, 23, 24, 29]);
800
+ switch (op[0]) {
801
+ case 0:
802
+ case 1:
803
+ t = op;
804
+ break;
754
805
 
755
- records_2 = __asyncValues(records);
756
- _g.label = 18;
806
+ case 4:
807
+ _.label++;
808
+ return {
809
+ value: op[1],
810
+ done: false
811
+ };
757
812
 
758
- case 18:
759
- return [4
760
- /*yield*/
761
- , records_2.next()];
813
+ case 5:
814
+ _.label++;
815
+ y = op[1];
816
+ op = [0];
817
+ continue;
762
818
 
763
- case 19:
764
- if (!(records_2_1 = _g.sent(), !records_2_1.done)) return [3
765
- /*break*/
766
- , 22];
767
- recordItem = records_2_1.value;
768
- if (!recordItem[targetName]) return [3
769
- /*break*/
770
- , 21];
771
- _f = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(recordItem[targetName], tableName), 2), queryStatement = _f[0], params = _f[1];
772
- return [4
773
- /*yield*/
774
- , this.db.get(queryStatement, params)];
819
+ case 7:
820
+ op = _.ops.pop();
775
821
 
776
- case 20:
777
- connectionRecord = _g.sent();
778
- recordItem[fieldName] = connectionRecord && this.modelInstanceCreator(modelConstructor_1, connectionRecord);
779
- delete recordItem[targetName];
780
- _g.label = 21;
822
+ _.trys.pop();
781
823
 
782
- case 21:
783
- return [3
784
- /*break*/
785
- , 18];
824
+ continue;
786
825
 
787
- case 22:
788
- return [3
789
- /*break*/
790
- , 29];
826
+ default:
827
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
828
+ _ = 0;
829
+ continue;
830
+ }
791
831
 
792
- case 23:
793
- e_4_1 = _g.sent();
794
- e_4 = {
795
- error: e_4_1
796
- };
797
- return [3
798
- /*break*/
799
- , 29];
832
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
833
+ _.label = op[1];
834
+ break;
835
+ }
800
836
 
801
- case 24:
802
- _g.trys.push([24,, 27, 28]);
837
+ if (op[0] === 6 && _.label < t[1]) {
838
+ _.label = t[1];
839
+ t = op;
840
+ break;
841
+ }
803
842
 
804
- if (!(records_2_1 && !records_2_1.done && (_c = records_2["return"]))) return [3
805
- /*break*/
806
- , 26];
807
- return [4
808
- /*yield*/
809
- , _c.call(records_2)];
843
+ if (t && _.label < t[2]) {
844
+ _.label = t[2];
810
845
 
811
- case 25:
812
- _g.sent();
846
+ _.ops.push(op);
813
847
 
814
- _g.label = 26;
848
+ break;
849
+ }
815
850
 
816
- case 26:
817
- return [3
818
- /*break*/
819
- , 28];
851
+ if (t[2]) _.ops.pop();
820
852
 
821
- case 27:
822
- if (e_4) throw e_4.error;
823
- return [7
824
- /*endfinally*/
825
- ];
853
+ _.trys.pop();
826
854
 
827
- case 28:
828
- return [7
829
- /*endfinally*/
830
- ];
855
+ continue;
856
+ }
831
857
 
832
- case 29:
833
- return [3
834
- /*break*/
835
- , 32];
858
+ op = body.call(thisArg, _);
859
+ } catch (e) {
860
+ op = [6, e];
861
+ y = 0;
862
+ } finally {
863
+ f = t = 0;
864
+ }
865
+ }
836
866
 
837
- case 30:
838
- // TODO: Lazy loading
839
- return [3
840
- /*break*/
841
- , 32];
867
+ if (op[0] & 5) throw op[1];
868
+ return {
869
+ value: op[0] ? op[1] : void 0,
870
+ done: true
871
+ };
872
+ }
873
+ };
842
874
 
843
- case 31:
844
- _ = relationType;
845
- throw new Error("invalid relation type " + relationType);
875
+ var __asyncValues = undefined && undefined.__asyncValues || function (o) {
876
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
877
+ var m = o[Symbol.asyncIterator],
878
+ i;
879
+ 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 () {
880
+ return this;
881
+ }, i);
846
882
 
847
- case 32:
848
- return [3
849
- /*break*/
850
- , 2];
883
+ function verb(n) {
884
+ i[n] = o[n] && function (v) {
885
+ return new Promise(function (resolve, reject) {
886
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
887
+ });
888
+ };
889
+ }
851
890
 
852
- case 33:
853
- return [3
854
- /*break*/
855
- , 40];
891
+ function settle(resolve, reject, d, v) {
892
+ Promise.resolve(v).then(function (v) {
893
+ resolve({
894
+ value: v,
895
+ done: d
896
+ });
897
+ }, reject);
898
+ }
899
+ };
856
900
 
857
- case 34:
858
- e_2_1 = _g.sent();
859
- e_2 = {
860
- error: e_2_1
861
- };
862
- return [3
863
- /*break*/
864
- , 40];
901
+ var __read = undefined && undefined.__read || function (o, n) {
902
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
903
+ if (!m) return o;
904
+ var i = m.call(o),
905
+ r,
906
+ ar = [],
907
+ e;
865
908
 
866
- case 35:
867
- _g.trys.push([35,, 38, 39]);
909
+ try {
910
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
911
+ ar.push(r.value);
912
+ }
913
+ } catch (error) {
914
+ e = {
915
+ error: error
916
+ };
917
+ } finally {
918
+ try {
919
+ if (r && !r.done && (m = i["return"])) m.call(i);
920
+ } finally {
921
+ if (e) throw e.error;
922
+ }
923
+ }
868
924
 
869
- if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1["return"]))) return [3
870
- /*break*/
871
- , 37];
872
- return [4
873
- /*yield*/
874
- , _a.call(relations_1)];
925
+ return ar;
926
+ };
875
927
 
876
- case 36:
877
- _g.sent();
928
+ var __values = undefined && undefined.__values || function (o) {
929
+ var s = typeof Symbol === "function" && Symbol.iterator,
930
+ m = s && o[s],
931
+ i = 0;
932
+ if (m) return m.call(o);
933
+ if (o && typeof o.length === "number") return {
934
+ next: function next() {
935
+ if (o && i >= o.length) o = void 0;
936
+ return {
937
+ value: o && o[i++],
938
+ done: !o
939
+ };
940
+ }
941
+ };
942
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
943
+ };
878
944
 
879
- _g.label = 37;
880
945
 
881
- case 37:
882
- return [3
883
- /*break*/
884
- , 39];
885
946
 
886
- case 38:
887
- if (e_2) throw e_2.error;
888
- return [7
889
- /*endfinally*/
890
- ];
891
947
 
892
- case 39:
893
- return [7
894
- /*endfinally*/
895
- ];
948
+ var traverseModel = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["utils"].traverseModel,
949
+ validatePredicate = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["utils"].validatePredicate,
950
+ isModelConstructor = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["utils"].isModelConstructor;
951
+ var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["ConsoleLogger"]('DataStore');
896
952
 
897
- case 40:
898
- return [2
899
- /*return*/
900
- , records.map(function (record) {
901
- return _this.modelInstanceCreator(modelConstructor, record);
902
- })];
903
- }
904
- });
905
- });
906
- };
953
+ var CommonSQLiteAdapter =
954
+ /** @class */
955
+ function () {
956
+ function CommonSQLiteAdapter(db) {
957
+ this.db = db;
958
+ }
907
959
 
908
- SQLiteAdapter.prototype.query = function (modelConstructor, predicate, pagination) {
960
+ CommonSQLiteAdapter.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
909
961
  return __awaiter(this, void 0, void 0, function () {
910
- var tableName, namespaceName, predicates, sortPredicates, limit, page, queryById, records;
962
+ var statements, error_1;
911
963
 
912
964
  var _this = this;
913
965
 
914
966
  return __generator(this, function (_a) {
915
967
  switch (_a.label) {
916
968
  case 0:
917
- tableName = modelConstructor.name;
918
- namespaceName = this.namespaceResolver(modelConstructor);
919
- predicates = predicate && _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["ModelPredicateCreator"].getPredicates(predicate);
920
- sortPredicates = pagination && pagination.sort && _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["ModelSortPredicateCreator"].getPredicates(pagination.sort);
921
- limit = pagination && pagination.limit;
922
- page = limit && pagination.page;
923
- queryById = predicates && this.idFromPredicate(predicates);
969
+ if (!!this.initPromise) return [3
970
+ /*break*/
971
+ , 1];
972
+ this.initPromise = new Promise(function (res, rej) {
973
+ _this.resolve = res;
974
+ _this.reject = rej;
975
+ });
976
+ return [3
977
+ /*break*/
978
+ , 3];
979
+
980
+ case 1:
924
981
  return [4
925
982
  /*yield*/
926
- , function () {
927
- return __awaiter(_this, void 0, void 0, function () {
928
- var record, _a, queryStatement, params;
983
+ , this.initPromise];
929
984
 
930
- return __generator(this, function (_b) {
931
- switch (_b.label) {
932
- case 0:
933
- if (!queryById) return [3
934
- /*break*/
935
- , 2];
936
- return [4
937
- /*yield*/
938
- , this.getById(tableName, queryById)];
985
+ case 2:
986
+ _a.sent();
939
987
 
940
- case 1:
941
- record = _b.sent();
942
- return [2
943
- /*return*/
944
- , record ? [record] : []];
988
+ return [2
989
+ /*return*/
990
+ ];
945
991
 
946
- case 2:
947
- _a = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryAllStatement"])(tableName, predicates, sortPredicates, limit, page), 2), queryStatement = _a[0], params = _a[1];
948
- return [4
949
- /*yield*/
950
- , this.db.getAll(queryStatement, params)];
992
+ case 3:
993
+ this.schema = theSchema;
994
+ this.namespaceResolver = namespaceResolver;
995
+ this.modelInstanceCreator = modelInstanceCreator;
996
+ this.getModelConstructorByModelName = getModelConstructorByModelName;
997
+ _a.label = 4;
951
998
 
952
- case 3:
953
- return [2
954
- /*return*/
955
- , _b.sent()];
956
- }
957
- });
958
- });
959
- }()];
999
+ case 4:
1000
+ _a.trys.push([4, 7,, 8]);
960
1001
 
961
- case 1:
962
- records = _a.sent();
963
1002
  return [4
964
1003
  /*yield*/
965
- , this.load(namespaceName, modelConstructor.name, records)];
966
-
967
- case 2:
968
- return [2
969
- /*return*/
970
- , _a.sent()];
971
- }
972
- });
973
- });
974
- };
1004
+ , this.db.init()];
975
1005
 
976
- SQLiteAdapter.prototype.getById = function (tableName, id) {
977
- return __awaiter(this, void 0, void 0, function () {
978
- var _a, queryStatement, params, record;
1006
+ case 5:
1007
+ _a.sent();
979
1008
 
980
- return __generator(this, function (_b) {
981
- switch (_b.label) {
982
- case 0:
983
- _a = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(id, tableName), 2), queryStatement = _a[0], params = _a[1];
1009
+ statements = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["generateSchemaStatements"])(this.schema);
984
1010
  return [4
985
1011
  /*yield*/
986
- , this.db.get(queryStatement, params)];
1012
+ , this.db.createSchema(statements)];
987
1013
 
988
- case 1:
989
- record = _b.sent();
1014
+ case 6:
1015
+ _a.sent();
1016
+
1017
+ this.resolve();
1018
+ return [3
1019
+ /*break*/
1020
+ , 8];
1021
+
1022
+ case 7:
1023
+ error_1 = _a.sent();
1024
+ this.reject(error_1);
1025
+ return [3
1026
+ /*break*/
1027
+ , 8];
1028
+
1029
+ case 8:
990
1030
  return [2
991
1031
  /*return*/
992
- , record];
1032
+ ];
993
1033
  }
994
1034
  });
995
1035
  });
996
1036
  };
997
1037
 
998
- SQLiteAdapter.prototype.idFromPredicate = function (predicates) {
999
- var predicateObjs = predicates.predicates;
1000
- var idPredicate = predicateObjs.length === 1 && predicateObjs.find(function (p) {
1001
- return Object(_aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["isPredicateObj"])(p) && p.field === 'id' && p.operator === 'eq';
1002
- });
1003
- return idPredicate && idPredicate.operand;
1004
- };
1005
-
1006
- SQLiteAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
1007
- if (firstOrLast === void 0) {
1008
- firstOrLast = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["QueryOne"].FIRST;
1009
- }
1010
-
1038
+ CommonSQLiteAdapter.prototype.clear = function () {
1011
1039
  return __awaiter(this, void 0, void 0, function () {
1012
- var tableName, _a, queryStatement, params, result, modelInstance;
1013
-
1014
- return __generator(this, function (_b) {
1015
- switch (_b.label) {
1040
+ return __generator(this, function (_a) {
1041
+ switch (_a.label) {
1016
1042
  case 0:
1017
- tableName = modelConstructor.name;
1018
- _a = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryOneStatement"])(firstOrLast, tableName), 2), queryStatement = _a[0], params = _a[1];
1019
1043
  return [4
1020
1044
  /*yield*/
1021
- , this.db.get(queryStatement, params)];
1045
+ , this.db.clear()];
1022
1046
 
1023
1047
  case 1:
1024
- result = _b.sent();
1025
- modelInstance = result && this.modelInstanceCreator(modelConstructor, result);
1048
+ _a.sent();
1049
+
1050
+ this.initPromise = undefined;
1026
1051
  return [2
1027
1052
  /*return*/
1028
- , modelInstance];
1053
+ ];
1029
1054
  }
1030
1055
  });
1031
1056
  });
1032
- }; // Currently does not cascade
1033
- // TODO: use FKs in relations and have `ON DELETE CASCADE` set
1034
- // For Has Many and Has One relations to have SQL handle cascades automatically
1057
+ };
1035
1058
 
1059
+ CommonSQLiteAdapter.prototype.save = function (model, condition) {
1060
+ var e_1, _a;
1036
1061
 
1037
- SQLiteAdapter.prototype["delete"] = function (modelOrModelConstructor, condition) {
1038
1062
  return __awaiter(this, void 0, void 0, function () {
1039
- 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;
1063
+ 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;
1040
1064
 
1041
1065
  return __generator(this, function (_d) {
1042
1066
  switch (_d.label) {
1043
1067
  case 0:
1044
- if (!isModelConstructor(modelOrModelConstructor)) return [3
1045
- /*break*/
1046
- , 3];
1047
- modelConstructor = modelOrModelConstructor;
1048
- namespaceName = this.namespaceResolver(modelConstructor);
1068
+ modelConstructor = Object.getPrototypeOf(model).constructor;
1049
1069
  tableName = modelConstructor.name;
1050
- predicates = condition && _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["ModelPredicateCreator"].getPredicates(condition);
1051
- queryStatement = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryAllStatement"])(tableName, predicates);
1052
- deleteStatement = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["deleteByPredicateStatement"])(tableName, predicates);
1070
+ connectedModels = traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
1071
+ connectionStoreNames = Object.values(connectedModels).map(function (_a) {
1072
+ var modelName = _a.modelName,
1073
+ item = _a.item,
1074
+ instance = _a.instance;
1075
+ return {
1076
+ modelName: modelName,
1077
+ item: item,
1078
+ instance: instance
1079
+ };
1080
+ });
1081
+ _b = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(model.id, tableName), 2), queryStatement = _b[0], params = _b[1];
1053
1082
  return [4
1054
1083
  /*yield*/
1055
- , this.db.selectAndDelete(queryStatement, deleteStatement)];
1084
+ , this.db.get(queryStatement, params)];
1056
1085
 
1057
1086
  case 1:
1058
- models = _d.sent();
1059
- return [4
1060
- /*yield*/
1061
- , this.load(namespaceName, modelConstructor.name, models)];
1087
+ fromDB = _d.sent();
1088
+
1089
+ if (condition && fromDB) {
1090
+ predicates = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["ModelPredicateCreator"].getPredicates(condition);
1091
+ predicateObjs = predicates.predicates, type = predicates.type;
1092
+ isValid = validatePredicate(fromDB, type, predicateObjs);
1093
+
1094
+ if (!isValid) {
1095
+ msg = 'Conditional update failed';
1096
+ logger.error(msg, {
1097
+ model: fromDB,
1098
+ condition: predicateObjs
1099
+ });
1100
+ throw new Error(msg);
1101
+ }
1102
+ }
1103
+
1104
+ result = [];
1105
+ saveStatements = new Set();
1106
+ _d.label = 2;
1062
1107
 
1063
1108
  case 2:
1064
- modelInstances = _d.sent();
1065
- return [2
1066
- /*return*/
1067
- , [modelInstances, modelInstances]];
1109
+ _d.trys.push([2, 8, 9, 14]);
1110
+
1111
+ connectionStoreNames_1 = __asyncValues(connectionStoreNames);
1112
+ _d.label = 3;
1068
1113
 
1069
1114
  case 3:
1070
- model = modelOrModelConstructor;
1071
- modelConstructor = Object.getPrototypeOf(model).constructor;
1072
- tableName = modelConstructor.name;
1073
- if (!condition) return [3
1074
- /*break*/
1075
- , 6];
1076
- _a = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(model.id, tableName), 2), queryStatement = _a[0], params = _a[1];
1077
1115
  return [4
1078
1116
  /*yield*/
1079
- , this.db.get(queryStatement, params)];
1117
+ , connectionStoreNames_1.next()];
1080
1118
 
1081
1119
  case 4:
1082
- fromDB = _d.sent();
1120
+ if (!(connectionStoreNames_1_1 = _d.sent(), !connectionStoreNames_1_1.done)) return [3
1121
+ /*break*/
1122
+ , 7];
1123
+ resItem = connectionStoreNames_1_1.value;
1124
+ modelName = resItem.modelName, item = resItem.item, instance = resItem.instance;
1125
+ id = item.id;
1126
+ _c = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(id, modelName), 2), queryStatement_1 = _c[0], params_1 = _c[1];
1127
+ return [4
1128
+ /*yield*/
1129
+ , this.db.get(queryStatement_1, params_1)];
1083
1130
 
1084
- if (fromDB === undefined) {
1085
- msg = 'Model instance not found in storage';
1086
- logger.warn(msg, {
1087
- model: model
1088
- });
1089
- return [2
1090
- /*return*/
1091
- , [[model], []]];
1131
+ case 5:
1132
+ fromDB_1 = _d.sent();
1133
+ opType = fromDB_1 === undefined ? _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["OpType"].INSERT : _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["OpType"].UPDATE;
1134
+ saveStatement = fromDB_1 ? Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["modelUpdateStatement"])(instance, modelName) : Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["modelInsertStatement"])(instance, modelName);
1135
+
1136
+ if (id === model.id || opType === _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["OpType"].INSERT) {
1137
+ saveStatements.add(saveStatement);
1138
+ result.push([instance, opType]);
1092
1139
  }
1093
1140
 
1094
- predicates = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["ModelPredicateCreator"].getPredicates(condition);
1095
- predicateObjs = predicates.predicates, type = predicates.type;
1096
- isValid = validatePredicate(fromDB, type, predicateObjs);
1141
+ _d.label = 6;
1142
+
1143
+ case 6:
1144
+ return [3
1145
+ /*break*/
1146
+ , 3];
1147
+
1148
+ case 7:
1149
+ return [3
1150
+ /*break*/
1151
+ , 14];
1097
1152
 
1098
- if (!isValid) {
1099
- msg = 'Conditional update failed';
1100
- logger.error(msg, {
1101
- model: fromDB,
1102
- condition: predicateObjs
1103
- });
1104
- throw new Error(msg);
1105
- }
1153
+ case 8:
1154
+ e_1_1 = _d.sent();
1155
+ e_1 = {
1156
+ error: e_1_1
1157
+ };
1158
+ return [3
1159
+ /*break*/
1160
+ , 14];
1106
1161
 
1107
- _b = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["deleteByIdStatement"])(model.id, tableName), 2), deleteStatement = _b[0], deleteParams = _b[1];
1162
+ case 9:
1163
+ _d.trys.push([9,, 12, 13]);
1164
+
1165
+ if (!(connectionStoreNames_1_1 && !connectionStoreNames_1_1.done && (_a = connectionStoreNames_1["return"]))) return [3
1166
+ /*break*/
1167
+ , 11];
1108
1168
  return [4
1109
1169
  /*yield*/
1110
- , this.db.save(deleteStatement, deleteParams)];
1170
+ , _a.call(connectionStoreNames_1)];
1111
1171
 
1112
- case 5:
1172
+ case 10:
1113
1173
  _d.sent();
1114
1174
 
1115
- return [2
1116
- /*return*/
1117
- , [[model], [model]]];
1175
+ _d.label = 11;
1118
1176
 
1119
- case 6:
1120
- _c = __read(Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["deleteByIdStatement"])(model.id, tableName), 2), deleteStatement = _c[0], params = _c[1];
1177
+ case 11:
1178
+ return [3
1179
+ /*break*/
1180
+ , 13];
1181
+
1182
+ case 12:
1183
+ if (e_1) throw e_1.error;
1184
+ return [7
1185
+ /*endfinally*/
1186
+ ];
1187
+
1188
+ case 13:
1189
+ return [7
1190
+ /*endfinally*/
1191
+ ];
1192
+
1193
+ case 14:
1121
1194
  return [4
1122
1195
  /*yield*/
1123
- , this.db.save(deleteStatement, params)];
1196
+ , this.db.batchSave(saveStatements)];
1124
1197
 
1125
- case 7:
1198
+ case 15:
1126
1199
  _d.sent();
1127
1200
 
1128
1201
  return [2
1129
1202
  /*return*/
1130
- , [[model], [model]]];
1203
+ , result];
1131
1204
  }
1132
1205
  });
1133
1206
  });
1134
1207
  };
1135
1208
 
1136
- SQLiteAdapter.prototype.batchSave = function (modelConstructor, items) {
1137
- return __awaiter(this, void 0, void 0, function () {
1138
- var tableName, result, itemsToSave, queryStatements, deleteStatements, saveStatements, _loop_1, this_1, items_1, items_1_1, item, queryResponses;
1139
-
1140
- var e_5, _a;
1141
-
1142
- return __generator(this, function (_b) {
1143
- switch (_b.label) {
1144
- case 0:
1145
- tableName = modelConstructor.name;
1146
- result = [];
1147
- itemsToSave = [];
1148
- queryStatements = new Set();
1149
- deleteStatements = new Set();
1150
- saveStatements = new Set();
1151
-
1152
- _loop_1 = function _loop_1(item) {
1153
- var connectedModels = traverseModel(modelConstructor.name, this_1.modelInstanceCreator(modelConstructor, item), this_1.schema.namespaces[this_1.namespaceResolver(modelConstructor)], this_1.modelInstanceCreator, this_1.getModelConstructorByModelName);
1154
- var id = item.id,
1155
- _deleted = item._deleted;
1156
- var instance = connectedModels.find(function (_a) {
1157
- var instance = _a.instance;
1158
- return instance.id === id;
1159
- }).instance;
1209
+ CommonSQLiteAdapter.prototype.load = function (namespaceName, srcModelName, records) {
1210
+ var records_1, records_1_1, records_2, records_2_1;
1160
1211
 
1161
- if (_deleted) {
1162
- // create the delete statements right away
1163
- var deleteStatement = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["deleteByIdStatement"])(instance.id, tableName);
1164
- deleteStatements.add(deleteStatement);
1165
- result.push([item, _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["OpType"].DELETE]);
1166
- } else {
1167
- // query statements for the saves at first
1168
- var queryStatement = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["queryByIdStatement"])(id, tableName);
1169
- queryStatements.add(queryStatement); // combination of insert and update items
1212
+ var e_2, _a, e_3, _b, e_4, _c;
1170
1213
 
1171
- itemsToSave.push(instance);
1172
- }
1173
- };
1214
+ return __awaiter(this, void 0, void 0, function () {
1215
+ 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;
1174
1216
 
1175
- this_1 = this;
1217
+ var _this = this;
1176
1218
 
1177
- try {
1178
- for (items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
1179
- item = items_1_1.value;
1219
+ return __generator(this, function (_g) {
1220
+ switch (_g.label) {
1221
+ case 0:
1222
+ namespace = this.schema.namespaces[namespaceName];
1223
+ relations = namespace.relationships[srcModelName].relationTypes;
1224
+ connectionTableNames = relations.map(function (_a) {
1225
+ var modelName = _a.modelName;
1226
+ return modelName;
1227
+ });
1228
+ modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
1180
1229
 
1181
- _loop_1(item);
1182
- }
1183
- } catch (e_5_1) {
1184
- e_5 = {
1185
- error: e_5_1
1186
- };
1187
- } finally {
1188
- try {
1189
- if (items_1_1 && !items_1_1.done && (_a = items_1["return"])) _a.call(items_1);
1190
- } finally {
1191
- if (e_5) throw e_5.error;
1192
- }
1230
+ if (connectionTableNames.length === 0) {
1231
+ return [2
1232
+ /*return*/
1233
+ , records.map(function (record) {
1234
+ return _this.modelInstanceCreator(modelConstructor, record);
1235
+ })];
1193
1236
  }
1194
1237
 
1195
- return [4
1196
- /*yield*/
1197
- , this.db.batchQuery(queryStatements)];
1238
+ _g.label = 1;
1198
1239
 
1199
1240
  case 1:
1200
- queryResponses = _b.sent();
1201
- queryResponses.forEach(function (response, idx) {
1202
- if (response === undefined) {
1203
- var insertStatement = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["modelInsertStatement"])(itemsToSave[idx], tableName);
1204
- saveStatements.add(insertStatement);
1205
- result.push([itemsToSave[idx], _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["OpType"].INSERT]);
1206
- } else {
1207
- var updateStatement = Object(_SQLiteUtils__WEBPACK_IMPORTED_MODULE_2__["modelUpdateStatement"])(itemsToSave[idx], tableName);
1208
- saveStatements.add(updateStatement);
1209
- result.push([itemsToSave[idx], _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_3__["OpType"].UPDATE]);
1210
- }
1211
- }); // perform all of the insert/update/delete operations in a single transaction
1241
+ _g.trys.push([1, 34, 35, 40]);
1212
1242
 
1213
- return [4
1214
- /*yield*/
1215
- , this.db.batchSave(saveStatements, deleteStatements)];
1243
+ relations_1 = __asyncValues(relations);
1244
+ _g.label = 2;
1216
1245
 
1217
1246
  case 2:
1218
- // perform all of the insert/update/delete operations in a single transaction
1219
- _b.sent();
1220
-
1221
- return [2
1222
- /*return*/
1223
- , result];
1224
- }
1225
- });
1226
- });
1227
- };
1228
-
1229
- return SQLiteAdapter;
1230
- }();
1231
-
1232
-
1233
- /* harmony default export */ __webpack_exports__["default"] = (new SQLiteAdapter());
1234
-
1235
- /***/ }),
1247
+ return [4
1248
+ /*yield*/
1249
+ , relations_1.next()];
1236
1250
 
1237
- /***/ "./lib-esm/SQLiteAdapter/SQLiteDatabase.js":
1238
- /*!*************************************************!*\
1239
- !*** ./lib-esm/SQLiteAdapter/SQLiteDatabase.js ***!
1240
- \*************************************************/
1241
- /*! exports provided: default */
1242
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
1251
+ case 3:
1252
+ if (!(relations_1_1 = _g.sent(), !relations_1_1.done)) return [3
1253
+ /*break*/
1254
+ , 33];
1255
+ relation = relations_1_1.value;
1256
+ fieldName = relation.fieldName, tableName = relation.modelName, targetName = relation.targetName, relationType = relation.relationType;
1257
+ modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, tableName);
1258
+ _d = relationType;
1243
1259
 
1244
- "use strict";
1245
- __webpack_require__.r(__webpack_exports__);
1246
- /* harmony import */ var react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native-sqlite-storage */ "react-native-sqlite-storage");
1247
- /* harmony import */ var react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0__);
1248
- /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @aws-amplify/core */ "@aws-amplify/core");
1249
- /* harmony import */ var _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__);
1250
- var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
1251
- function adopt(value) {
1252
- return value instanceof P ? value : new P(function (resolve) {
1253
- resolve(value);
1254
- });
1255
- }
1260
+ switch (_d) {
1261
+ case 'HAS_ONE':
1262
+ return [3
1263
+ /*break*/
1264
+ , 4];
1256
1265
 
1257
- return new (P || (P = Promise))(function (resolve, reject) {
1258
- function fulfilled(value) {
1259
- try {
1260
- step(generator.next(value));
1261
- } catch (e) {
1262
- reject(e);
1263
- }
1264
- }
1266
+ case 'BELONGS_TO':
1267
+ return [3
1268
+ /*break*/
1269
+ , 17];
1265
1270
 
1266
- function rejected(value) {
1267
- try {
1268
- step(generator["throw"](value));
1269
- } catch (e) {
1270
- reject(e);
1271
- }
1272
- }
1271
+ case 'HAS_MANY':
1272
+ return [3
1273
+ /*break*/
1274
+ , 30];
1275
+ }
1273
1276
 
1274
- function step(result) {
1275
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
1276
- }
1277
+ return [3
1278
+ /*break*/
1279
+ , 31];
1277
1280
 
1278
- step((generator = generator.apply(thisArg, _arguments || [])).next());
1279
- });
1280
- };
1281
+ case 4:
1282
+ _g.trys.push([4, 10, 11, 16]);
1281
1283
 
1282
- var __generator = undefined && undefined.__generator || function (thisArg, body) {
1283
- var _ = {
1284
- label: 0,
1285
- sent: function sent() {
1286
- if (t[0] & 1) throw t[1];
1287
- return t[1];
1288
- },
1289
- trys: [],
1290
- ops: []
1291
- },
1292
- f,
1293
- y,
1294
- t,
1295
- g;
1296
- return g = {
1297
- next: verb(0),
1298
- "throw": verb(1),
1299
- "return": verb(2)
1300
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
1301
- return this;
1302
- }), g;
1284
+ records_1 = __asyncValues(records);
1285
+ _g.label = 5;
1303
1286
 
1304
- function verb(n) {
1305
- return function (v) {
1306
- return step([n, v]);
1307
- };
1308
- }
1287
+ case 5:
1288
+ return [4
1289
+ /*yield*/
1290
+ , records_1.next()];
1309
1291
 
1310
- function step(op) {
1311
- if (f) throw new TypeError("Generator is already executing.");
1292
+ case 6:
1293
+ if (!(records_1_1 = _g.sent(), !records_1_1.done)) return [3
1294
+ /*break*/
1295
+ , 9];
1296
+ recordItem = records_1_1.value;
1297
+ getByfield = recordItem[targetName] ? targetName : fieldName;
1298
+ if (!recordItem[getByfield]) return [3
1299
+ /*break*/
1300
+ , 9];
1301
+ _e = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(recordItem[getByfield], tableName), 2), queryStatement = _e[0], params = _e[1];
1302
+ return [4
1303
+ /*yield*/
1304
+ , this.db.get(queryStatement, params)];
1312
1305
 
1313
- while (_) {
1314
- try {
1315
- 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;
1316
- if (y = 0, t) op = [op[0] & 2, t.value];
1306
+ case 7:
1307
+ connectionRecord = _g.sent();
1308
+ recordItem[fieldName] = connectionRecord && this.modelInstanceCreator(modelConstructor_1, connectionRecord);
1309
+ _g.label = 8;
1317
1310
 
1318
- switch (op[0]) {
1319
- case 0:
1320
- case 1:
1321
- t = op;
1322
- break;
1311
+ case 8:
1312
+ return [3
1313
+ /*break*/
1314
+ , 5];
1323
1315
 
1324
- case 4:
1325
- _.label++;
1326
- return {
1327
- value: op[1],
1328
- done: false
1316
+ case 9:
1317
+ return [3
1318
+ /*break*/
1319
+ , 16];
1320
+
1321
+ case 10:
1322
+ e_3_1 = _g.sent();
1323
+ e_3 = {
1324
+ error: e_3_1
1329
1325
  };
1326
+ return [3
1327
+ /*break*/
1328
+ , 16];
1330
1329
 
1331
- case 5:
1332
- _.label++;
1333
- y = op[1];
1334
- op = [0];
1335
- continue;
1330
+ case 11:
1331
+ _g.trys.push([11,, 14, 15]);
1336
1332
 
1337
- case 7:
1338
- op = _.ops.pop();
1333
+ if (!(records_1_1 && !records_1_1.done && (_b = records_1["return"]))) return [3
1334
+ /*break*/
1335
+ , 13];
1336
+ return [4
1337
+ /*yield*/
1338
+ , _b.call(records_1)];
1339
1339
 
1340
- _.trys.pop();
1340
+ case 12:
1341
+ _g.sent();
1341
1342
 
1342
- continue;
1343
+ _g.label = 13;
1343
1344
 
1344
- default:
1345
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
1346
- _ = 0;
1347
- continue;
1348
- }
1345
+ case 13:
1346
+ return [3
1347
+ /*break*/
1348
+ , 15];
1349
1349
 
1350
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
1351
- _.label = op[1];
1352
- break;
1353
- }
1350
+ case 14:
1351
+ if (e_3) throw e_3.error;
1352
+ return [7
1353
+ /*endfinally*/
1354
+ ];
1354
1355
 
1355
- if (op[0] === 6 && _.label < t[1]) {
1356
- _.label = t[1];
1357
- t = op;
1358
- break;
1359
- }
1356
+ case 15:
1357
+ return [7
1358
+ /*endfinally*/
1359
+ ];
1360
1360
 
1361
- if (t && _.label < t[2]) {
1362
- _.label = t[2];
1361
+ case 16:
1362
+ return [3
1363
+ /*break*/
1364
+ , 32];
1363
1365
 
1364
- _.ops.push(op);
1366
+ case 17:
1367
+ _g.trys.push([17, 23, 24, 29]);
1365
1368
 
1366
- break;
1367
- }
1369
+ records_2 = __asyncValues(records);
1370
+ _g.label = 18;
1368
1371
 
1369
- if (t[2]) _.ops.pop();
1372
+ case 18:
1373
+ return [4
1374
+ /*yield*/
1375
+ , records_2.next()];
1370
1376
 
1371
- _.trys.pop();
1377
+ case 19:
1378
+ if (!(records_2_1 = _g.sent(), !records_2_1.done)) return [3
1379
+ /*break*/
1380
+ , 22];
1381
+ recordItem = records_2_1.value;
1382
+ if (!recordItem[targetName]) return [3
1383
+ /*break*/
1384
+ , 21];
1385
+ _f = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(recordItem[targetName], tableName), 2), queryStatement = _f[0], params = _f[1];
1386
+ return [4
1387
+ /*yield*/
1388
+ , this.db.get(queryStatement, params)];
1372
1389
 
1373
- continue;
1374
- }
1390
+ case 20:
1391
+ connectionRecord = _g.sent();
1392
+ recordItem[fieldName] = connectionRecord && this.modelInstanceCreator(modelConstructor_1, connectionRecord);
1393
+ delete recordItem[targetName];
1394
+ _g.label = 21;
1375
1395
 
1376
- op = body.call(thisArg, _);
1377
- } catch (e) {
1378
- op = [6, e];
1379
- y = 0;
1380
- } finally {
1381
- f = t = 0;
1382
- }
1383
- }
1396
+ case 21:
1397
+ return [3
1398
+ /*break*/
1399
+ , 18];
1384
1400
 
1385
- if (op[0] & 5) throw op[1];
1386
- return {
1387
- value: op[0] ? op[1] : void 0,
1388
- done: true
1389
- };
1390
- }
1391
- };
1401
+ case 22:
1402
+ return [3
1403
+ /*break*/
1404
+ , 29];
1392
1405
 
1393
- var __read = undefined && undefined.__read || function (o, n) {
1394
- var m = typeof Symbol === "function" && o[Symbol.iterator];
1395
- if (!m) return o;
1396
- var i = m.call(o),
1397
- r,
1398
- ar = [],
1399
- e;
1406
+ case 23:
1407
+ e_4_1 = _g.sent();
1408
+ e_4 = {
1409
+ error: e_4_1
1410
+ };
1411
+ return [3
1412
+ /*break*/
1413
+ , 29];
1400
1414
 
1401
- try {
1402
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
1403
- ar.push(r.value);
1404
- }
1405
- } catch (error) {
1406
- e = {
1407
- error: error
1408
- };
1409
- } finally {
1410
- try {
1411
- if (r && !r.done && (m = i["return"])) m.call(i);
1412
- } finally {
1413
- if (e) throw e.error;
1414
- }
1415
- }
1415
+ case 24:
1416
+ _g.trys.push([24,, 27, 28]);
1416
1417
 
1417
- return ar;
1418
- };
1418
+ if (!(records_2_1 && !records_2_1.done && (_c = records_2["return"]))) return [3
1419
+ /*break*/
1420
+ , 26];
1421
+ return [4
1422
+ /*yield*/
1423
+ , _c.call(records_2)];
1419
1424
 
1420
- var __values = undefined && undefined.__values || function (o) {
1421
- var s = typeof Symbol === "function" && Symbol.iterator,
1422
- m = s && o[s],
1423
- i = 0;
1424
- if (m) return m.call(o);
1425
- if (o && typeof o.length === "number") return {
1426
- next: function next() {
1427
- if (o && i >= o.length) o = void 0;
1428
- return {
1429
- value: o && o[i++],
1430
- done: !o
1431
- };
1432
- }
1433
- };
1434
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
1435
- };
1425
+ case 25:
1426
+ _g.sent();
1436
1427
 
1428
+ _g.label = 26;
1437
1429
 
1430
+ case 26:
1431
+ return [3
1432
+ /*break*/
1433
+ , 28];
1438
1434
 
1439
- var logger = new _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["ConsoleLogger"]('SQLiteDatabase');
1440
- react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.enablePromise(true);
1435
+ case 27:
1436
+ if (e_4) throw e_4.error;
1437
+ return [7
1438
+ /*endfinally*/
1439
+ ];
1441
1440
 
1442
- if (_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["ConsoleLogger"].LOG_LEVEL === 'DEBUG') {
1443
- react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.DEBUG(true);
1444
- }
1441
+ case 28:
1442
+ return [7
1443
+ /*endfinally*/
1444
+ ];
1445
1445
 
1446
- var DB_NAME = 'AmplifyDatastore';
1447
- var DB_DISPLAYNAME = 'AWS Amplify DataStore SQLite Database'; // TODO: make these configurable
1446
+ case 29:
1447
+ return [3
1448
+ /*break*/
1449
+ , 32];
1448
1450
 
1449
- var DB_SIZE = 200000;
1450
- var DB_VERSION = '1.0';
1451
- /*
1451
+ case 30:
1452
+ // TODO: Lazy loading
1453
+ return [3
1454
+ /*break*/
1455
+ , 32];
1452
1456
 
1453
- Note:
1454
- I purposely avoided using arrow functions () => {} in this class,
1455
- Because I ran into issues with them in some of the SQLite method callbacks
1457
+ case 31:
1458
+ _ = relationType;
1459
+ throw new Error("invalid relation type " + relationType);
1456
1460
 
1457
- Also, even though the SQLite library is promisified, certain operations
1458
- only work correctly with callbacks. Specifically, any time you need to
1459
- get the result of an `executeSql` command inside of a transaction
1460
- (see the batchQuery method below)
1461
+ case 32:
1462
+ return [3
1463
+ /*break*/
1464
+ , 2];
1461
1465
 
1462
- */
1466
+ case 33:
1467
+ return [3
1468
+ /*break*/
1469
+ , 40];
1463
1470
 
1464
- var SQLiteDatabase =
1465
- /** @class */
1466
- function () {
1467
- function SQLiteDatabase() {}
1471
+ case 34:
1472
+ e_2_1 = _g.sent();
1473
+ e_2 = {
1474
+ error: e_2_1
1475
+ };
1476
+ return [3
1477
+ /*break*/
1478
+ , 40];
1468
1479
 
1469
- SQLiteDatabase.prototype.init = function () {
1470
- return __awaiter(this, void 0, void 0, function () {
1471
- var _a;
1480
+ case 35:
1481
+ _g.trys.push([35,, 38, 39]);
1472
1482
 
1473
- return __generator(this, function (_b) {
1474
- switch (_b.label) {
1475
- case 0:
1476
- _a = this;
1483
+ if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1["return"]))) return [3
1484
+ /*break*/
1485
+ , 37];
1477
1486
  return [4
1478
1487
  /*yield*/
1479
- , react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.openDatabase(DB_NAME, DB_VERSION, DB_DISPLAYNAME, DB_SIZE)];
1488
+ , _a.call(relations_1)];
1480
1489
 
1481
- case 1:
1482
- _a.db = _b.sent();
1483
- return [2
1484
- /*return*/
1490
+ case 36:
1491
+ _g.sent();
1492
+
1493
+ _g.label = 37;
1494
+
1495
+ case 37:
1496
+ return [3
1497
+ /*break*/
1498
+ , 39];
1499
+
1500
+ case 38:
1501
+ if (e_2) throw e_2.error;
1502
+ return [7
1503
+ /*endfinally*/
1485
1504
  ];
1486
- }
1487
- });
1488
- });
1489
- };
1490
1505
 
1491
- SQLiteDatabase.prototype.createSchema = function (statements) {
1492
- return __awaiter(this, void 0, void 0, function () {
1493
- return __generator(this, function (_a) {
1494
- switch (_a.label) {
1495
- case 0:
1496
- return [4
1497
- /*yield*/
1498
- , this.executeStatements(statements)];
1506
+ case 39:
1507
+ return [7
1508
+ /*endfinally*/
1509
+ ];
1499
1510
 
1500
- case 1:
1511
+ case 40:
1501
1512
  return [2
1502
1513
  /*return*/
1503
- , _a.sent()];
1514
+ , records.map(function (record) {
1515
+ return _this.modelInstanceCreator(modelConstructor, record);
1516
+ })];
1504
1517
  }
1505
1518
  });
1506
1519
  });
1507
1520
  };
1508
1521
 
1509
- SQLiteDatabase.prototype.clear = function () {
1522
+ CommonSQLiteAdapter.prototype.query = function (modelConstructor, predicate, pagination) {
1510
1523
  return __awaiter(this, void 0, void 0, function () {
1524
+ var tableName, namespaceName, predicates, sortPredicates, limit, page, queryById, records;
1525
+
1526
+ var _this = this;
1527
+
1511
1528
  return __generator(this, function (_a) {
1512
1529
  switch (_a.label) {
1513
1530
  case 0:
1531
+ tableName = modelConstructor.name;
1532
+ namespaceName = this.namespaceResolver(modelConstructor);
1533
+ predicates = predicate && _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["ModelPredicateCreator"].getPredicates(predicate);
1534
+ sortPredicates = pagination && pagination.sort && _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["ModelSortPredicateCreator"].getPredicates(pagination.sort);
1535
+ limit = pagination && pagination.limit;
1536
+ page = limit && pagination.page;
1537
+ queryById = predicates && this.idFromPredicate(predicates);
1514
1538
  return [4
1515
1539
  /*yield*/
1516
- , this.closeDB()];
1517
-
1518
- case 1:
1519
- _a.sent();
1540
+ , function () {
1541
+ return __awaiter(_this, void 0, void 0, function () {
1542
+ var record, _a, queryStatement, params;
1520
1543
 
1521
- logger.debug('Deleting database');
1522
- return [4
1523
- /*yield*/
1524
- , react_native_sqlite_storage__WEBPACK_IMPORTED_MODULE_0___default.a.deleteDatabase(DB_NAME)];
1544
+ return __generator(this, function (_b) {
1545
+ switch (_b.label) {
1546
+ case 0:
1547
+ if (!queryById) return [3
1548
+ /*break*/
1549
+ , 2];
1550
+ return [4
1551
+ /*yield*/
1552
+ , this.getById(tableName, queryById)];
1525
1553
 
1526
- case 2:
1527
- _a.sent();
1554
+ case 1:
1555
+ record = _b.sent();
1556
+ return [2
1557
+ /*return*/
1558
+ , record ? [record] : []];
1528
1559
 
1529
- logger.debug('Database deleted');
1530
- return [2
1531
- /*return*/
1532
- ];
1533
- }
1534
- });
1535
- });
1536
- };
1560
+ case 2:
1561
+ _a = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryAllStatement"])(tableName, predicates, sortPredicates, limit, page), 2), queryStatement = _a[0], params = _a[1];
1562
+ return [4
1563
+ /*yield*/
1564
+ , this.db.getAll(queryStatement, params)];
1537
1565
 
1538
- SQLiteDatabase.prototype.get = function (statement, params) {
1539
- return __awaiter(this, void 0, void 0, function () {
1540
- var _a, resultSet, result;
1566
+ case 3:
1567
+ return [2
1568
+ /*return*/
1569
+ , _b.sent()];
1570
+ }
1571
+ });
1572
+ });
1573
+ }()];
1541
1574
 
1542
- return __generator(this, function (_b) {
1543
- switch (_b.label) {
1544
- case 0:
1575
+ case 1:
1576
+ records = _a.sent();
1545
1577
  return [4
1546
1578
  /*yield*/
1547
- , this.db.executeSql(statement, params)];
1579
+ , this.load(namespaceName, modelConstructor.name, records)];
1548
1580
 
1549
- case 1:
1550
- _a = __read.apply(void 0, [_b.sent(), 1]), resultSet = _a[0];
1551
- result = resultSet && resultSet.rows && resultSet.rows.length && resultSet.rows.raw && resultSet.rows.raw();
1581
+ case 2:
1552
1582
  return [2
1553
1583
  /*return*/
1554
- , result[0] || undefined];
1584
+ , _a.sent()];
1555
1585
  }
1556
1586
  });
1557
1587
  });
1558
1588
  };
1559
1589
 
1560
- SQLiteDatabase.prototype.getAll = function (statement, params) {
1590
+ CommonSQLiteAdapter.prototype.getById = function (tableName, id) {
1561
1591
  return __awaiter(this, void 0, void 0, function () {
1562
- var _a, resultSet, result;
1592
+ var _a, queryStatement, params, record;
1563
1593
 
1564
1594
  return __generator(this, function (_b) {
1565
1595
  switch (_b.label) {
1566
1596
  case 0:
1597
+ _a = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(id, tableName), 2), queryStatement = _a[0], params = _a[1];
1567
1598
  return [4
1568
1599
  /*yield*/
1569
- , this.db.executeSql(statement, params)];
1600
+ , this.db.get(queryStatement, params)];
1570
1601
 
1571
1602
  case 1:
1572
- _a = __read.apply(void 0, [_b.sent(), 1]), resultSet = _a[0];
1573
- result = resultSet && resultSet.rows && resultSet.rows.length && resultSet.rows.raw && resultSet.rows.raw();
1603
+ record = _b.sent();
1574
1604
  return [2
1575
1605
  /*return*/
1576
- , result || []];
1606
+ , record];
1577
1607
  }
1578
1608
  });
1579
1609
  });
1580
1610
  };
1581
1611
 
1582
- SQLiteDatabase.prototype.save = function (statement, params) {
1583
- return __awaiter(this, void 0, void 0, function () {
1584
- return __generator(this, function (_a) {
1585
- switch (_a.label) {
1586
- case 0:
1587
- return [4
1588
- /*yield*/
1589
- , this.db.executeSql(statement, params)];
1590
-
1591
- case 1:
1592
- _a.sent();
1593
-
1594
- return [2
1595
- /*return*/
1596
- ];
1597
- }
1598
- });
1612
+ CommonSQLiteAdapter.prototype.idFromPredicate = function (predicates) {
1613
+ var predicateObjs = predicates.predicates;
1614
+ var idPredicate = predicateObjs.length === 1 && predicateObjs.find(function (p) {
1615
+ return Object(_aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["isPredicateObj"])(p) && p.field === 'id' && p.operator === 'eq';
1599
1616
  });
1617
+ return idPredicate && idPredicate.operand;
1600
1618
  };
1601
1619
 
1602
- SQLiteDatabase.prototype.batchQuery = function (queryStatements) {
1620
+ CommonSQLiteAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
1621
+ if (firstOrLast === void 0) {
1622
+ firstOrLast = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["QueryOne"].FIRST;
1623
+ }
1624
+
1603
1625
  return __awaiter(this, void 0, void 0, function () {
1604
- var results;
1605
- return __generator(this, function (_a) {
1606
- switch (_a.label) {
1626
+ var tableName, _a, queryStatement, params, result, modelInstance;
1627
+
1628
+ return __generator(this, function (_b) {
1629
+ switch (_b.label) {
1607
1630
  case 0:
1608
- results = [];
1631
+ tableName = modelConstructor.name;
1632
+ _a = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryOneStatement"])(firstOrLast, tableName), 2), queryStatement = _a[0], params = _a[1];
1609
1633
  return [4
1610
1634
  /*yield*/
1611
- , this.db.readTransaction(function (tx) {
1612
- var e_1, _a;
1613
-
1614
- try {
1615
- for (var queryStatements_1 = __values(queryStatements), queryStatements_1_1 = queryStatements_1.next(); !queryStatements_1_1.done; queryStatements_1_1 = queryStatements_1.next()) {
1616
- var _b = __read(queryStatements_1_1.value, 2),
1617
- statement = _b[0],
1618
- params = _b[1];
1619
-
1620
- tx.executeSql(statement, params, function (_tx, res) {
1621
- results.push(res.rows.raw()[0]);
1622
- }, logger.warn);
1623
- }
1624
- } catch (e_1_1) {
1625
- e_1 = {
1626
- error: e_1_1
1627
- };
1628
- } finally {
1629
- try {
1630
- if (queryStatements_1_1 && !queryStatements_1_1.done && (_a = queryStatements_1["return"])) _a.call(queryStatements_1);
1631
- } finally {
1632
- if (e_1) throw e_1.error;
1633
- }
1634
- }
1635
- })];
1635
+ , this.db.get(queryStatement, params)];
1636
1636
 
1637
1637
  case 1:
1638
- _a.sent();
1639
-
1638
+ result = _b.sent();
1639
+ modelInstance = result && this.modelInstanceCreator(modelConstructor, result);
1640
1640
  return [2
1641
1641
  /*return*/
1642
- , results];
1642
+ , modelInstance];
1643
1643
  }
1644
1644
  });
1645
1645
  });
1646
- };
1646
+ }; // Currently does not cascade
1647
+ // TODO: use FKs in relations and have `ON DELETE CASCADE` set
1648
+ // For Has Many and Has One relations to have SQL handle cascades automatically
1647
1649
 
1648
- SQLiteDatabase.prototype.batchSave = function (saveStatements, deleteStatements) {
1650
+
1651
+ CommonSQLiteAdapter.prototype["delete"] = function (modelOrModelConstructor, condition) {
1649
1652
  return __awaiter(this, void 0, void 0, function () {
1650
- return __generator(this, function (_a) {
1651
- switch (_a.label) {
1653
+ 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;
1654
+
1655
+ return __generator(this, function (_d) {
1656
+ switch (_d.label) {
1652
1657
  case 0:
1658
+ if (!isModelConstructor(modelOrModelConstructor)) return [3
1659
+ /*break*/
1660
+ , 3];
1661
+ modelConstructor = modelOrModelConstructor;
1662
+ namespaceName = this.namespaceResolver(modelConstructor);
1663
+ tableName = modelConstructor.name;
1664
+ predicates = condition && _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["ModelPredicateCreator"].getPredicates(condition);
1665
+ queryStatement = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryAllStatement"])(tableName, predicates);
1666
+ deleteStatement = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["deleteByPredicateStatement"])(tableName, predicates);
1653
1667
  return [4
1654
1668
  /*yield*/
1655
- , this.db.transaction(function (tx) {
1656
- var e_2, _a, e_3, _b;
1657
-
1658
- try {
1659
- for (var saveStatements_1 = __values(saveStatements), saveStatements_1_1 = saveStatements_1.next(); !saveStatements_1_1.done; saveStatements_1_1 = saveStatements_1.next()) {
1660
- var _c = __read(saveStatements_1_1.value, 2),
1661
- statement = _c[0],
1662
- params = _c[1];
1663
-
1664
- tx.executeSql(statement, params);
1665
- }
1666
- } catch (e_2_1) {
1667
- e_2 = {
1668
- error: e_2_1
1669
- };
1670
- } finally {
1671
- try {
1672
- if (saveStatements_1_1 && !saveStatements_1_1.done && (_a = saveStatements_1["return"])) _a.call(saveStatements_1);
1673
- } finally {
1674
- if (e_2) throw e_2.error;
1675
- }
1676
- }
1677
-
1678
- if (deleteStatements) {
1679
- try {
1680
- for (var deleteStatements_1 = __values(deleteStatements), deleteStatements_1_1 = deleteStatements_1.next(); !deleteStatements_1_1.done; deleteStatements_1_1 = deleteStatements_1.next()) {
1681
- var _d = __read(deleteStatements_1_1.value, 2),
1682
- statement = _d[0],
1683
- params = _d[1];
1684
-
1685
- tx.executeSql(statement, params);
1686
- }
1687
- } catch (e_3_1) {
1688
- e_3 = {
1689
- error: e_3_1
1690
- };
1691
- } finally {
1692
- try {
1693
- if (deleteStatements_1_1 && !deleteStatements_1_1.done && (_b = deleteStatements_1["return"])) _b.call(deleteStatements_1);
1694
- } finally {
1695
- if (e_3) throw e_3.error;
1696
- }
1697
- }
1698
- }
1699
- })];
1669
+ , this.db.selectAndDelete(queryStatement, deleteStatement)];
1700
1670
 
1701
1671
  case 1:
1702
- _a.sent();
1672
+ models = _d.sent();
1673
+ return [4
1674
+ /*yield*/
1675
+ , this.load(namespaceName, modelConstructor.name, models)];
1703
1676
 
1677
+ case 2:
1678
+ modelInstances = _d.sent();
1704
1679
  return [2
1705
1680
  /*return*/
1706
- ];
1707
- }
1708
- });
1709
- });
1710
- };
1681
+ , [modelInstances, modelInstances]];
1711
1682
 
1712
- SQLiteDatabase.prototype.selectAndDelete = function (query, _delete) {
1713
- return __awaiter(this, void 0, void 0, function () {
1714
- var results, _a, queryStatement, queryParams, _b, deleteStatement, deleteParams;
1683
+ case 3:
1684
+ model = modelOrModelConstructor;
1685
+ modelConstructor = Object.getPrototypeOf(model).constructor;
1686
+ tableName = modelConstructor.name;
1687
+ if (!condition) return [3
1688
+ /*break*/
1689
+ , 6];
1690
+ _a = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(model.id, tableName), 2), queryStatement = _a[0], params = _a[1];
1691
+ return [4
1692
+ /*yield*/
1693
+ , this.db.get(queryStatement, params)];
1715
1694
 
1716
- return __generator(this, function (_c) {
1717
- switch (_c.label) {
1718
- case 0:
1719
- results = [];
1720
- _a = __read(query, 2), queryStatement = _a[0], queryParams = _a[1];
1721
- _b = __read(_delete, 2), deleteStatement = _b[0], deleteParams = _b[1];
1695
+ case 4:
1696
+ fromDB = _d.sent();
1697
+
1698
+ if (fromDB === undefined) {
1699
+ msg = 'Model instance not found in storage';
1700
+ logger.warn(msg, {
1701
+ model: model
1702
+ });
1703
+ return [2
1704
+ /*return*/
1705
+ , [[model], []]];
1706
+ }
1707
+
1708
+ predicates = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["ModelPredicateCreator"].getPredicates(condition);
1709
+ predicateObjs = predicates.predicates, type = predicates.type;
1710
+ isValid = validatePredicate(fromDB, type, predicateObjs);
1711
+
1712
+ if (!isValid) {
1713
+ msg = 'Conditional update failed';
1714
+ logger.error(msg, {
1715
+ model: fromDB,
1716
+ condition: predicateObjs
1717
+ });
1718
+ throw new Error(msg);
1719
+ }
1720
+
1721
+ _b = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["deleteByIdStatement"])(model.id, tableName), 2), deleteStatement = _b[0], deleteParams = _b[1];
1722
1722
  return [4
1723
1723
  /*yield*/
1724
- , this.db.transaction(function (tx) {
1725
- tx.executeSql(queryStatement, queryParams, function (_tx, res) {
1726
- results = res.rows.raw();
1727
- }, logger.warn);
1728
- tx.executeSql(deleteStatement, deleteParams, function () {}, logger.warn);
1729
- })];
1724
+ , this.db.save(deleteStatement, deleteParams)];
1730
1725
 
1731
- case 1:
1732
- _c.sent();
1726
+ case 5:
1727
+ _d.sent();
1733
1728
 
1734
1729
  return [2
1735
1730
  /*return*/
1736
- , results];
1737
- }
1738
- });
1739
- });
1740
- };
1731
+ , [[model], [model]]];
1741
1732
 
1742
- SQLiteDatabase.prototype.executeStatements = function (statements) {
1743
- return __awaiter(this, void 0, void 0, function () {
1744
- return __generator(this, function (_a) {
1745
- switch (_a.label) {
1746
- case 0:
1733
+ case 6:
1734
+ _c = __read(Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["deleteByIdStatement"])(model.id, tableName), 2), deleteStatement = _c[0], params = _c[1];
1747
1735
  return [4
1748
1736
  /*yield*/
1749
- , this.db.transaction(function (tx) {
1750
- var e_4, _a;
1737
+ , this.db.save(deleteStatement, params)];
1751
1738
 
1752
- try {
1753
- for (var statements_1 = __values(statements), statements_1_1 = statements_1.next(); !statements_1_1.done; statements_1_1 = statements_1.next()) {
1754
- var statement = statements_1_1.value;
1755
- tx.executeSql(statement);
1756
- }
1757
- } catch (e_4_1) {
1758
- e_4 = {
1759
- error: e_4_1
1760
- };
1761
- } finally {
1762
- try {
1763
- if (statements_1_1 && !statements_1_1.done && (_a = statements_1["return"])) _a.call(statements_1);
1764
- } finally {
1765
- if (e_4) throw e_4.error;
1766
- }
1767
- }
1768
- })];
1739
+ case 7:
1740
+ _d.sent();
1769
1741
 
1770
- case 1:
1771
1742
  return [2
1772
1743
  /*return*/
1773
- , _a.sent()];
1744
+ , [[model], [model]]];
1774
1745
  }
1775
1746
  });
1776
1747
  });
1777
- };
1748
+ }; // Temp fix to test build, will either export a separate metadata type here, or implement Custom PK in this adapter
1778
1749
 
1779
- SQLiteDatabase.prototype.closeDB = function () {
1750
+
1751
+ CommonSQLiteAdapter.prototype.batchSave = function (modelConstructor, items) {
1780
1752
  return __awaiter(this, void 0, void 0, function () {
1781
- return __generator(this, function (_a) {
1782
- switch (_a.label) {
1753
+ var tableName, result, itemsToSave, queryStatements, deleteStatements, saveStatements, _loop_1, this_1, items_1, items_1_1, item, queryResponses;
1754
+
1755
+ var e_5, _a;
1756
+
1757
+ return __generator(this, function (_b) {
1758
+ switch (_b.label) {
1783
1759
  case 0:
1784
- if (!this.db) return [3
1785
- /*break*/
1786
- , 2];
1787
- logger.debug('Closing Database');
1760
+ tableName = modelConstructor.name;
1761
+ result = [];
1762
+ itemsToSave = [];
1763
+ queryStatements = new Set();
1764
+ deleteStatements = new Set();
1765
+ saveStatements = new Set();
1766
+
1767
+ _loop_1 = function _loop_1(item) {
1768
+ var connectedModels = traverseModel(modelConstructor.name, this_1.modelInstanceCreator(modelConstructor, item), this_1.schema.namespaces[this_1.namespaceResolver(modelConstructor)], this_1.modelInstanceCreator, this_1.getModelConstructorByModelName);
1769
+ var id = item.id,
1770
+ _deleted = item._deleted;
1771
+ var instance = connectedModels.find(function (_a) {
1772
+ var instance = _a.instance;
1773
+ return instance.id === id;
1774
+ }).instance;
1775
+
1776
+ if (_deleted) {
1777
+ // create the delete statements right away
1778
+ var deleteStatement = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["deleteByIdStatement"])(instance.id, tableName);
1779
+ deleteStatements.add(deleteStatement);
1780
+ result.push([item, _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["OpType"].DELETE]);
1781
+ } else {
1782
+ // query statements for the saves at first
1783
+ var queryStatement = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["queryByIdStatement"])(id, tableName);
1784
+ queryStatements.add(queryStatement); // combination of insert and update items
1785
+
1786
+ itemsToSave.push(instance);
1787
+ }
1788
+ };
1789
+
1790
+ this_1 = this;
1791
+
1792
+ try {
1793
+ for (items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
1794
+ item = items_1_1.value;
1795
+
1796
+ _loop_1(item);
1797
+ }
1798
+ } catch (e_5_1) {
1799
+ e_5 = {
1800
+ error: e_5_1
1801
+ };
1802
+ } finally {
1803
+ try {
1804
+ if (items_1_1 && !items_1_1.done && (_a = items_1["return"])) _a.call(items_1);
1805
+ } finally {
1806
+ if (e_5) throw e_5.error;
1807
+ }
1808
+ }
1809
+
1788
1810
  return [4
1789
1811
  /*yield*/
1790
- , this.db.close()];
1812
+ , this.db.batchQuery(queryStatements)];
1791
1813
 
1792
1814
  case 1:
1793
- _a.sent();
1815
+ queryResponses = _b.sent();
1816
+ queryResponses.forEach(function (response, idx) {
1817
+ if (response === undefined) {
1818
+ var insertStatement = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["modelInsertStatement"])(itemsToSave[idx], tableName);
1819
+ saveStatements.add(insertStatement);
1820
+ result.push([itemsToSave[idx], _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["OpType"].INSERT]);
1821
+ } else {
1822
+ var updateStatement = Object(_common_SQLiteUtils__WEBPACK_IMPORTED_MODULE_1__["modelUpdateStatement"])(itemsToSave[idx], tableName);
1823
+ saveStatements.add(updateStatement);
1824
+ result.push([itemsToSave[idx], _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_2__["OpType"].UPDATE]);
1825
+ }
1826
+ }); // perform all of the insert/update/delete operations in a single transaction
1794
1827
 
1795
- logger.debug('Database closed');
1796
- _a.label = 2;
1828
+ return [4
1829
+ /*yield*/
1830
+ , this.db.batchSave(saveStatements, deleteStatements)];
1797
1831
 
1798
1832
  case 2:
1833
+ // perform all of the insert/update/delete operations in a single transaction
1834
+ _b.sent();
1835
+
1799
1836
  return [2
1800
1837
  /*return*/
1801
- ];
1838
+ , result];
1802
1839
  }
1803
1840
  });
1804
1841
  });
1805
1842
  };
1806
1843
 
1807
- return SQLiteDatabase;
1844
+ return CommonSQLiteAdapter;
1808
1845
  }();
1809
1846
 
1810
- /* harmony default export */ __webpack_exports__["default"] = (SQLiteDatabase);
1847
+
1811
1848
 
1812
1849
  /***/ }),
1813
1850
 
1814
- /***/ "./lib-esm/SQLiteAdapter/SQLiteUtils.js":
1815
- /*!**********************************************!*\
1816
- !*** ./lib-esm/SQLiteAdapter/SQLiteUtils.js ***!
1817
- \**********************************************/
1818
- /*! exports provided: generateSchemaStatements, implicitAuthFieldsForModel, modelCreateTableStatement, modelInsertStatement, modelUpdateStatement, queryByIdStatement, whereClauseFromPredicate, orderByClauseFromSort, limitClauseFromPagination, queryAllStatement, queryOneStatement, deleteByIdStatement, deleteByPredicateStatement */
1851
+ /***/ "./lib-esm/common/SQLiteUtils.js":
1852
+ /*!***************************************!*\
1853
+ !*** ./lib-esm/common/SQLiteUtils.js ***!
1854
+ \***************************************/
1855
+ /*! exports provided: getSQLiteType, generateSchemaStatements, implicitAuthFieldsForModel, modelCreateTableStatement, modelInsertStatement, modelUpdateStatement, queryByIdStatement, whereClauseFromPredicate, orderByClauseFromSort, limitClauseFromPagination, queryAllStatement, queryOneStatement, deleteByIdStatement, deleteByPredicateStatement */
1819
1856
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1820
1857
 
1821
1858
  "use strict";
1822
1859
  __webpack_require__.r(__webpack_exports__);
1860
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSQLiteType", function() { return getSQLiteType; });
1823
1861
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generateSchemaStatements", function() { return generateSchemaStatements; });
1824
1862
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "implicitAuthFieldsForModel", function() { return implicitAuthFieldsForModel; });
1825
1863
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "modelCreateTableStatement", function() { return modelCreateTableStatement; });
@@ -1835,7 +1873,6 @@ __webpack_require__.r(__webpack_exports__);
1835
1873
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteByPredicateStatement", function() { return deleteByPredicateStatement; });
1836
1874
  /* harmony import */ var _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @aws-amplify/datastore */ "@aws-amplify/datastore");
1837
1875
  /* harmony import */ var _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0__);
1838
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ "./lib-esm/SQLiteAdapter/types.js");
1839
1876
  function _typeof(obj) {
1840
1877
  "@babel/helpers - typeof";
1841
1878
 
@@ -1899,7 +1936,6 @@ var __values = undefined && undefined.__values || function (o) {
1899
1936
  };
1900
1937
 
1901
1938
 
1902
-
1903
1939
  var USER = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0__["utils"].USER,
1904
1940
  isNonModelConstructor = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0__["utils"].isNonModelConstructor,
1905
1941
  isModelConstructor = _aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0__["utils"].isModelConstructor;
@@ -1953,6 +1989,33 @@ function prepareValueForDML(value) {
1953
1989
  return "" + value;
1954
1990
  }
1955
1991
 
1992
+ function getSQLiteType(scalar) {
1993
+ switch (scalar) {
1994
+ case 'Boolean':
1995
+ case 'Int':
1996
+ case 'AWSTimestamp':
1997
+ return 'INTEGER';
1998
+
1999
+ case 'ID':
2000
+ case 'String':
2001
+ case 'AWSDate':
2002
+ case 'AWSTime':
2003
+ case 'AWSDateTime':
2004
+ case 'AWSEmail':
2005
+ case 'AWSJSON':
2006
+ case 'AWSURL':
2007
+ case 'AWSPhone':
2008
+ case 'AWSIPAddress':
2009
+ return 'TEXT';
2010
+
2011
+ case 'Float':
2012
+ return 'REAL';
2013
+
2014
+ default:
2015
+ var _ = scalar;
2016
+ throw new Error("unknown type " + scalar);
2017
+ }
2018
+ }
1956
2019
  function generateSchemaStatements(schema) {
1957
2020
  return Object.keys(schema.namespaces).flatMap(function (namespaceName) {
1958
2021
  var namespace = schema.namespaces[namespaceName];
@@ -1998,7 +2061,7 @@ function modelCreateTableStatement(model, userModel) {
1998
2061
  return acc + '"id" PRIMARY KEY NOT NULL';
1999
2062
  }
2000
2063
 
2001
- var columnParam_1 = "\"" + field.name + "\" " + Object(_types__WEBPACK_IMPORTED_MODULE_1__["getSQLiteType"])(field.type);
2064
+ var columnParam_1 = "\"" + field.name + "\" " + getSQLiteType(field.type);
2002
2065
 
2003
2066
  if (field.isRequired) {
2004
2067
  columnParam_1 += ' NOT NULL';
@@ -2013,7 +2076,9 @@ function modelCreateTableStatement(model, userModel) {
2013
2076
  if (Object(_aws_amplify_datastore__WEBPACK_IMPORTED_MODULE_0__["isTargetNameAssociation"])(field.association)) {
2014
2077
  // check if this field has been explicitly defined in the model
2015
2078
  var fkDefinedInModel = Object.values(model.fields).find(function (f) {
2016
- return f.name === field.association.targetName;
2079
+ var _a;
2080
+
2081
+ return f.name === ((_a = field === null || field === void 0 ? void 0 : field.association) === null || _a === void 0 ? void 0 : _a.targetName);
2017
2082
  }); // if the FK is not explicitly defined in the model, we have to add it here
2018
2083
 
2019
2084
  if (!fkDefinedInModel) {
@@ -2090,11 +2155,41 @@ var logicalOperatorMap = {
2090
2155
  notContains: 'NOT LIKE',
2091
2156
  between: 'BETWEEN'
2092
2157
  };
2158
+ /**
2159
+ * If the given (operator, operand) indicate the need for a special `NULL` comparison,
2160
+ * that `WHERE` clause condition will be returned. If not special `NULL` handling is
2161
+ * needed, `null` will be returned, and the caller should construct the `WHERE`
2162
+ * clause component using the normal operator map(s) and parameterization.
2163
+ *
2164
+ * @param operator "beginsWith" | "contains" | "notContains" | "between"
2165
+ * | "eq" | "ne" | "le" | "lt" | "ge" | "gt"
2166
+ * @param operand any
2167
+ * @returns (string | null) The `WHERE` clause component or `null` if N/A.
2168
+ */
2169
+
2170
+ function buildSpecialNullComparison(field, operator, operand) {
2171
+ if (operand === null || operand === undefined) {
2172
+ if (operator === 'eq') {
2173
+ return "\"" + field + "\" IS NULL";
2174
+ } else if (operator === 'ne') {
2175
+ return "\"" + field + "\" IS NOT NULL";
2176
+ }
2177
+ } // no special null handling required
2178
+
2179
+
2180
+ return null;
2181
+ }
2093
2182
 
2094
2183
  var whereConditionFromPredicateObject = function whereConditionFromPredicateObject(_a) {
2095
2184
  var field = _a.field,
2096
2185
  operator = _a.operator,
2097
2186
  operand = _a.operand;
2187
+ var specialNullClause = buildSpecialNullComparison(field, operator, operand);
2188
+
2189
+ if (specialNullClause) {
2190
+ return [specialNullClause, []];
2191
+ }
2192
+
2098
2193
  var comparisonOperator = comparisonOperatorMap[operator];
2099
2194
 
2100
2195
  if (comparisonOperator) {
@@ -2299,43 +2394,17 @@ function deleteByPredicateStatement(tableName, predicate) {
2299
2394
 
2300
2395
  /***/ }),
2301
2396
 
2302
- /***/ "./lib-esm/SQLiteAdapter/types.js":
2303
- /*!****************************************!*\
2304
- !*** ./lib-esm/SQLiteAdapter/types.js ***!
2305
- \****************************************/
2306
- /*! exports provided: getSQLiteType */
2397
+ /***/ "./lib-esm/common/constants.js":
2398
+ /*!*************************************!*\
2399
+ !*** ./lib-esm/common/constants.js ***!
2400
+ \*************************************/
2401
+ /*! exports provided: DB_NAME */
2307
2402
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2308
2403
 
2309
2404
  "use strict";
2310
2405
  __webpack_require__.r(__webpack_exports__);
2311
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSQLiteType", function() { return getSQLiteType; });
2312
- function getSQLiteType(scalar) {
2313
- switch (scalar) {
2314
- case 'Boolean':
2315
- case 'Int':
2316
- case 'AWSTimestamp':
2317
- return 'INTEGER';
2318
-
2319
- case 'ID':
2320
- case 'String':
2321
- case 'AWSDate':
2322
- case 'AWSTime':
2323
- case 'AWSDateTime':
2324
- case 'AWSEmail':
2325
- case 'AWSJSON':
2326
- case 'AWSURL':
2327
- case 'AWSPhone':
2328
- case 'AWSIPAddress':
2329
- return 'TEXT';
2330
-
2331
- case 'Float':
2332
- return 'REAL';
2333
-
2334
- default:
2335
- var _ = scalar;
2336
- throw new Error("unknown type " + scalar);
2337
- }
2338
- }
2406
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DB_NAME", function() { return DB_NAME; });
2407
+ var DB_NAME = 'AmplifyDatastore';
2339
2408
 
2340
2409
  /***/ }),
2341
2410