backendless 6.3.2 → 6.3.3

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.
@@ -29,16 +29,18 @@ var ChangesTypes = {
29
29
  CREATED: 'created',
30
30
  UPDATED: 'updated',
31
31
  DELETED: 'deleted',
32
+ UPSERTED: 'upserted',
32
33
  BULK_CREATED: 'bulk-created',
33
34
  BULK_UPDATED: 'bulk-updated',
34
- BULK_DELETED: 'bulk-deleted'
35
+ BULK_DELETED: 'bulk-deleted',
36
+ BULK_UPSERTED: 'bulk-upserted'
35
37
  };
36
38
  var RelationsChangesTypes = {
37
39
  ADD: 'add',
38
40
  SET: 'set',
39
41
  DELETE: 'delete'
40
42
  };
41
- var SingleChangesTypes = [ChangesTypes.CREATED, ChangesTypes.UPDATED, ChangesTypes.DELETED];
43
+ var SingleChangesTypes = [ChangesTypes.CREATED, ChangesTypes.UPDATED, ChangesTypes.DELETED, ChangesTypes.UPSERTED];
42
44
 
43
45
  var RTHandlers = /*#__PURE__*/function (_RTListeners) {
44
46
  (0, _inherits2["default"])(RTHandlers, _RTListeners);
@@ -81,6 +83,25 @@ var RTHandlers = /*#__PURE__*/function (_RTListeners) {
81
83
 
82
84
  this.removeCreateListeners(undefined, callback);
83
85
  }
86
+ }, {
87
+ key: "addUpsertListener",
88
+ value: function addUpsertListener(whereClause, callback, onError) {
89
+ this.addChangesListener(ChangesTypes.UPSERTED, whereClause, callback, onError);
90
+ }
91
+ }, {
92
+ key: "removeUpsertListeners",
93
+ value: function removeUpsertListeners(whereClause, callback) {
94
+ this.removeChangesListeners(ChangesTypes.UPSERTED, whereClause, callback);
95
+ }
96
+ }, {
97
+ key: "removeUpsertListener",
98
+ value: function removeUpsertListener(callback) {
99
+ if (!callback || typeof callback !== 'function') {
100
+ throw new Error('Listener Function must be passed.');
101
+ }
102
+
103
+ this.removeUpsertListeners(undefined, callback);
104
+ }
84
105
  }, {
85
106
  key: "addUpdateListener",
86
107
  value: function addUpdateListener(whereClause, callback, onError) {
@@ -176,6 +197,25 @@ var RTHandlers = /*#__PURE__*/function (_RTListeners) {
176
197
 
177
198
  this.removeBulkDeleteListeners(undefined, callback);
178
199
  }
200
+ }, {
201
+ key: "addBulkUpsertListener",
202
+ value: function addBulkUpsertListener(whereClause, callback, onError) {
203
+ this.addChangesListener(ChangesTypes.BULK_UPSERTED, whereClause, callback, onError);
204
+ }
205
+ }, {
206
+ key: "removeBulkUpsertListeners",
207
+ value: function removeBulkUpsertListeners() {
208
+ this.removeChangesListeners(ChangesTypes.BULK_UPSERTED);
209
+ }
210
+ }, {
211
+ key: "removeBulkUpsertListener",
212
+ value: function removeBulkUpsertListener(callback) {
213
+ if (!callback || typeof callback !== 'function') {
214
+ throw new Error('Listener Function must be passed.');
215
+ }
216
+
217
+ this.removeChangesListeners(ChangesTypes.BULK_UPSERTED, undefined, callback);
218
+ }
179
219
  }, {
180
220
  key: "addSetRelationListener",
181
221
  value: function addSetRelationListener(relationColumnName, parentObjects, callback, onError) {
package/es/data/store.js CHANGED
@@ -89,21 +89,23 @@ var DataStore = /*#__PURE__*/function () {
89
89
  }, {
90
90
  key: "save",
91
91
  value: function () {
92
- var _save = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(object) {
92
+ var _save = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(object, isUpsert) {
93
93
  var _this = this;
94
94
 
95
+ var url;
95
96
  return _regenerator["default"].wrap(function _callee$(_context) {
96
97
  while (1) {
97
98
  switch (_context.prev = _context.next) {
98
99
  case 0:
100
+ url = isUpsert ? this.app.urls.dataTableUpsert(this.className) : this.app.urls.dataTable(this.className);
99
101
  return _context.abrupt("return", this.app.request.put({
100
- url: this.app.urls.dataTable(this.className),
102
+ url: url,
101
103
  data: convertToServerRecord(object)
102
104
  }).then(function (result) {
103
105
  return _this.parseResponse(result);
104
106
  }));
105
107
 
106
- case 1:
108
+ case 2:
107
109
  case "end":
108
110
  return _context.stop();
109
111
  }
@@ -111,7 +113,7 @@ var DataStore = /*#__PURE__*/function () {
111
113
  }, _callee, this);
112
114
  }));
113
115
 
114
- function save(_x) {
116
+ function save(_x, _x2) {
115
117
  return _save.apply(this, arguments);
116
118
  }
117
119
 
@@ -142,7 +144,7 @@ var DataStore = /*#__PURE__*/function () {
142
144
  }, _callee2, this);
143
145
  }));
144
146
 
145
- function deepSave(_x2) {
147
+ function deepSave(_x3) {
146
148
  return _deepSave.apply(this, arguments);
147
149
  }
148
150
 
@@ -179,7 +181,7 @@ var DataStore = /*#__PURE__*/function () {
179
181
  }, _callee3, this);
180
182
  }));
181
183
 
182
- function remove(_x3) {
184
+ function remove(_x4) {
183
185
  return _remove.apply(this, arguments);
184
186
  }
185
187
 
@@ -210,7 +212,7 @@ var DataStore = /*#__PURE__*/function () {
210
212
  }, _callee4, this);
211
213
  }));
212
214
 
213
- function find(_x4) {
215
+ function find(_x5) {
214
216
  return _find.apply(this, arguments);
215
217
  }
216
218
 
@@ -237,7 +239,7 @@ var DataStore = /*#__PURE__*/function () {
237
239
  }, _callee5, this);
238
240
  }));
239
241
 
240
- function group(_x5) {
242
+ function group(_x6) {
241
243
  return _group.apply(this, arguments);
242
244
  }
243
245
 
@@ -272,7 +274,7 @@ var DataStore = /*#__PURE__*/function () {
272
274
  }, _callee6, this);
273
275
  }));
274
276
 
275
- function countInGroup(_x6) {
277
+ function countInGroup(_x7) {
276
278
  return _countInGroup.apply(this, arguments);
277
279
  }
278
280
 
@@ -340,7 +342,7 @@ var DataStore = /*#__PURE__*/function () {
340
342
  }, _callee7, this);
341
343
  }));
342
344
 
343
- function findById(_x7, _x8) {
345
+ function findById(_x8, _x9) {
344
346
  return _findById.apply(this, arguments);
345
347
  }
346
348
 
@@ -371,7 +373,7 @@ var DataStore = /*#__PURE__*/function () {
371
373
  }, _callee8, this);
372
374
  }));
373
375
 
374
- function findFirst(_x9) {
376
+ function findFirst(_x10) {
375
377
  return _findFirst.apply(this, arguments);
376
378
  }
377
379
 
@@ -402,7 +404,7 @@ var DataStore = /*#__PURE__*/function () {
402
404
  }, _callee9, this);
403
405
  }));
404
406
 
405
- function findLast(_x10) {
407
+ function findLast(_x11) {
406
408
  return _findLast.apply(this, arguments);
407
409
  }
408
410
 
@@ -459,7 +461,7 @@ var DataStore = /*#__PURE__*/function () {
459
461
  }, _callee10, this);
460
462
  }));
461
463
 
462
- function getObjectCount(_x11) {
464
+ function getObjectCount(_x12) {
463
465
  return _getObjectCount.apply(this, arguments);
464
466
  }
465
467
 
@@ -512,7 +514,7 @@ var DataStore = /*#__PURE__*/function () {
512
514
  }, _callee11, this);
513
515
  }));
514
516
 
515
- function loadRelations(_x12, _x13) {
517
+ function loadRelations(_x13, _x14) {
516
518
  return _loadRelations.apply(this, arguments);
517
519
  }
518
520
 
@@ -536,7 +538,7 @@ var DataStore = /*#__PURE__*/function () {
536
538
  }, _callee12, this);
537
539
  }));
538
540
 
539
- function setRelation(_x14, _x15, _x16) {
541
+ function setRelation(_x15, _x16, _x17) {
540
542
  return _setRelation.apply(this, arguments);
541
543
  }
542
544
 
@@ -560,7 +562,7 @@ var DataStore = /*#__PURE__*/function () {
560
562
  }, _callee13, this);
561
563
  }));
562
564
 
563
- function addRelation(_x17, _x18, _x19) {
565
+ function addRelation(_x18, _x19, _x20) {
564
566
  return _addRelation.apply(this, arguments);
565
567
  }
566
568
 
@@ -584,7 +586,7 @@ var DataStore = /*#__PURE__*/function () {
584
586
  }, _callee14, this);
585
587
  }));
586
588
 
587
- function deleteRelation(_x20, _x21, _x22) {
589
+ function deleteRelation(_x21, _x22, _x23) {
588
590
  return _deleteRelation.apply(this, arguments);
589
591
  }
590
592
 
@@ -629,22 +631,67 @@ var DataStore = /*#__PURE__*/function () {
629
631
  }, _callee15, this);
630
632
  }));
631
633
 
632
- function bulkCreate(_x23) {
634
+ function bulkCreate(_x24) {
633
635
  return _bulkCreate.apply(this, arguments);
634
636
  }
635
637
 
636
638
  return bulkCreate;
637
639
  }()
638
640
  }, {
639
- key: "bulkUpdate",
641
+ key: "bulkUpsert",
640
642
  value: function () {
641
- var _bulkUpdate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(condition, changes) {
643
+ var _bulkUpsert = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(objects) {
644
+ var errorMessage;
642
645
  return _regenerator["default"].wrap(function _callee16$(_context16) {
643
646
  while (1) {
644
647
  switch (_context16.prev = _context16.next) {
648
+ case 0:
649
+ errorMessage = 'Objects must be provided and must be an array of objects.';
650
+
651
+ if (!(!objects || !Array.isArray(objects) || !objects.length)) {
652
+ _context16.next = 3;
653
+ break;
654
+ }
655
+
656
+ throw new Error(errorMessage);
657
+
658
+ case 3:
659
+ objects = objects.map(function (object) {
660
+ if (!object || (0, _typeof2["default"])(object) !== 'object' || Array.isArray(object)) {
661
+ throw new Error(errorMessage);
662
+ }
663
+
664
+ return object;
665
+ });
666
+ return _context16.abrupt("return", this.app.request.put({
667
+ url: this.app.urls.dataBulkTableUpsert(this.className),
668
+ data: objects
669
+ }));
670
+
671
+ case 5:
672
+ case "end":
673
+ return _context16.stop();
674
+ }
675
+ }
676
+ }, _callee16, this);
677
+ }));
678
+
679
+ function bulkUpsert(_x25) {
680
+ return _bulkUpsert.apply(this, arguments);
681
+ }
682
+
683
+ return bulkUpsert;
684
+ }()
685
+ }, {
686
+ key: "bulkUpdate",
687
+ value: function () {
688
+ var _bulkUpdate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee17(condition, changes) {
689
+ return _regenerator["default"].wrap(function _callee17$(_context17) {
690
+ while (1) {
691
+ switch (_context17.prev = _context17.next) {
645
692
  case 0:
646
693
  if (!(!condition || typeof condition !== 'string')) {
647
- _context16.next = 2;
694
+ _context17.next = 2;
648
695
  break;
649
696
  }
650
697
 
@@ -652,14 +699,14 @@ var DataStore = /*#__PURE__*/function () {
652
699
 
653
700
  case 2:
654
701
  if (!(!changes || (0, _typeof2["default"])(changes) !== 'object' || Array.isArray(changes))) {
655
- _context16.next = 4;
702
+ _context17.next = 4;
656
703
  break;
657
704
  }
658
705
 
659
706
  throw new Error('Changes must be provided and must be an object.');
660
707
 
661
708
  case 4:
662
- return _context16.abrupt("return", this.app.request.put({
709
+ return _context17.abrupt("return", this.app.request.put({
663
710
  url: this.app.urls.dataBulkTable(this.className),
664
711
  query: {
665
712
  where: condition
@@ -669,13 +716,13 @@ var DataStore = /*#__PURE__*/function () {
669
716
 
670
717
  case 5:
671
718
  case "end":
672
- return _context16.stop();
719
+ return _context17.stop();
673
720
  }
674
721
  }
675
- }, _callee16, this);
722
+ }, _callee17, this);
676
723
  }));
677
724
 
678
- function bulkUpdate(_x24, _x25) {
725
+ function bulkUpdate(_x26, _x27) {
679
726
  return _bulkUpdate.apply(this, arguments);
680
727
  }
681
728
 
@@ -684,14 +731,14 @@ var DataStore = /*#__PURE__*/function () {
684
731
  }, {
685
732
  key: "bulkDelete",
686
733
  value: function () {
687
- var _bulkDelete = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee17(condition) {
734
+ var _bulkDelete = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee18(condition) {
688
735
  var queryData, objectIds;
689
- return _regenerator["default"].wrap(function _callee17$(_context17) {
736
+ return _regenerator["default"].wrap(function _callee18$(_context18) {
690
737
  while (1) {
691
- switch (_context17.prev = _context17.next) {
738
+ switch (_context18.prev = _context18.next) {
692
739
  case 0:
693
740
  if (!(!condition || typeof condition !== 'string' && !Array.isArray(condition))) {
694
- _context17.next = 2;
741
+ _context18.next = 2;
695
742
  break;
696
743
  }
697
744
 
@@ -715,20 +762,20 @@ var DataStore = /*#__PURE__*/function () {
715
762
  queryData.where = "objectId in (".concat(objectIds.join(','), ")");
716
763
  }
717
764
 
718
- return _context17.abrupt("return", this.app.request.post({
765
+ return _context18.abrupt("return", this.app.request.post({
719
766
  url: this.app.urls.dataBulkTableDelete(this.className),
720
767
  data: queryData
721
768
  }));
722
769
 
723
770
  case 5:
724
771
  case "end":
725
- return _context17.stop();
772
+ return _context18.stop();
726
773
  }
727
774
  }
728
- }, _callee17, this);
775
+ }, _callee18, this);
729
776
  }));
730
777
 
731
- function bulkDelete(_x26) {
778
+ function bulkDelete(_x28) {
732
779
  return _bulkDelete.apply(this, arguments);
733
780
  }
734
781
 
@@ -11,6 +11,8 @@ var OperationType = {
11
11
  UPDATE_BULK: 'UPDATE_BULK',
12
12
  DELETE: 'DELETE',
13
13
  DELETE_BULK: 'DELETE_BULK',
14
+ UPSERT: 'UPSERT',
15
+ UPSERT_BULK: 'UPSERT_BULK',
14
16
  FIND: 'FIND',
15
17
  ADD_RELATION: 'ADD_RELATION',
16
18
  SET_RELATION: 'SET_RELATION',
@@ -308,6 +308,37 @@ var UnitOfWork = /*#__PURE__*/function () {
308
308
 
309
309
  return this.addOperations(_constants.OperationType.FIND, tableName, payload);
310
310
  }
311
+ /**
312
+ * upsert(object: object): OpResult;
313
+ * upsert(tableName: string, object: object): OpResult;
314
+ * **/
315
+
316
+ }, {
317
+ key: "upsert",
318
+ value: function upsert() {
319
+ var tableName;
320
+ var changes;
321
+
322
+ if (arguments.length === 1) {
323
+ tableName = _utils["default"].getClassName(arguments.length <= 0 ? undefined : arguments[0]);
324
+ changes = arguments.length <= 0 ? undefined : arguments[0];
325
+ } else if (arguments.length === 2) {
326
+ tableName = arguments.length <= 0 ? undefined : arguments[0];
327
+ changes = arguments.length <= 1 ? undefined : arguments[1];
328
+ } else {
329
+ throw new Error('Invalid arguments');
330
+ }
331
+
332
+ if (!tableName || typeof tableName !== 'string') {
333
+ throw new Error('Invalid arguments');
334
+ }
335
+
336
+ if (!changes || (0, _typeof2["default"])(changes) !== 'object' || Array.isArray(changes)) {
337
+ throw new Error('Invalid arguments');
338
+ }
339
+
340
+ return this.addOperations(_constants.OperationType.UPSERT, tableName, changes);
341
+ }
311
342
  /**
312
343
  * create(object: object): OpResult;
313
344
  * create(tableName: string, object: object): OpResult;
@@ -436,6 +467,29 @@ var UnitOfWork = /*#__PURE__*/function () {
436
467
 
437
468
  return this.addOperations(_constants.OperationType.DELETE, tableName, object);
438
469
  }
470
+ /**
471
+ * bulkUpsert(tableName: string, objects: object[]): OpResult;
472
+ * bulkUpsert(objects: object[]): OpResult;
473
+ * **/
474
+
475
+ }, {
476
+ key: "bulkUpsert",
477
+ value: function bulkUpsert(tableName, objects) {
478
+ if (Array.isArray(tableName)) {
479
+ objects = tableName;
480
+ tableName = _utils["default"].getClassName(objects[0]);
481
+ }
482
+
483
+ if (!objects || !Array.isArray(objects)) {
484
+ throw new Error('Objects must be an array of objects.');
485
+ }
486
+
487
+ if (!tableName || typeof tableName !== 'string') {
488
+ throw new Error('Table Name must be a string.');
489
+ }
490
+
491
+ return this.addOperations(_constants.OperationType.UPSERT_BULK, tableName, objects);
492
+ }
439
493
  /**
440
494
  * bulkCreate(tableName: string, objects: object[]): OpResult;
441
495
  * bulkCreate(objects: object[]): OpResult;
@@ -63,9 +63,14 @@ var OperationJSONAdapter = {
63
63
  payload = _ref3.payload;
64
64
  return uow.update.call(uow, table, resolveOpResultValueReference(uow, payload));
65
65
  },
66
- UPDATE_BULK: function UPDATE_BULK(uow, _ref4) {
66
+ UPSERT: function UPSERT(uow, _ref4) {
67
67
  var table = _ref4.table,
68
68
  payload = _ref4.payload;
69
+ return uow.upsert.call(uow, table, resolveOpResultValueReference(uow, payload));
70
+ },
71
+ UPDATE_BULK: function UPDATE_BULK(uow, _ref5) {
72
+ var table = _ref5.table,
73
+ payload = _ref5.payload;
69
74
  var args = baseBulkArgs(uow, {
70
75
  table: table,
71
76
  payload: payload
@@ -73,55 +78,60 @@ var OperationJSONAdapter = {
73
78
  args.push(resolveOpResultValueReference(uow, payload.changes));
74
79
  return uow.bulkUpdate.apply(uow, args);
75
80
  },
76
- DELETE_BULK: function DELETE_BULK(uow, _ref5) {
77
- var table = _ref5.table,
78
- payload = _ref5.payload;
81
+ DELETE_BULK: function DELETE_BULK(uow, _ref6) {
82
+ var table = _ref6.table,
83
+ payload = _ref6.payload;
79
84
  var args = baseBulkArgs(uow, {
80
85
  table: table,
81
86
  payload: payload
82
87
  });
83
88
  return uow.bulkDelete.apply(uow, args);
84
89
  },
85
- CREATE_BULK: function CREATE_BULK(uow, _ref6) {
86
- var table = _ref6.table,
87
- payload = _ref6.payload;
88
- return uow.bulkCreate.call(uow, table, resolveOpResultValueReference(uow, payload));
89
- },
90
- SET_RELATION: function SET_RELATION(uow, _ref7) {
90
+ CREATE_BULK: function CREATE_BULK(uow, _ref7) {
91
91
  var table = _ref7.table,
92
92
  payload = _ref7.payload;
93
+ return uow.bulkCreate.call(uow, table, resolveOpResultValueReference(uow, payload));
94
+ },
95
+ UPSERT_BULK: function UPSERT_BULK(uow, _ref8) {
96
+ var table = _ref8.table,
97
+ payload = _ref8.payload;
98
+ return uow.bulkUpsert.call(uow, table, resolveOpResultValueReference(uow, payload));
99
+ },
100
+ SET_RELATION: function SET_RELATION(uow, _ref9) {
101
+ var table = _ref9.table,
102
+ payload = _ref9.payload;
93
103
  return updateRelations(uow, 'setRelation', {
94
104
  table: table,
95
105
  payload: payload
96
106
  });
97
107
  },
98
- DELETE_RELATION: function DELETE_RELATION(uow, _ref8) {
99
- var table = _ref8.table,
100
- payload = _ref8.payload;
108
+ DELETE_RELATION: function DELETE_RELATION(uow, _ref10) {
109
+ var table = _ref10.table,
110
+ payload = _ref10.payload;
101
111
  return updateRelations(uow, 'deleteRelation', {
102
112
  table: table,
103
113
  payload: payload
104
114
  });
105
115
  },
106
- ADD_RELATION: function ADD_RELATION(uow, _ref9) {
107
- var table = _ref9.table,
108
- payload = _ref9.payload;
116
+ ADD_RELATION: function ADD_RELATION(uow, _ref11) {
117
+ var table = _ref11.table,
118
+ payload = _ref11.payload;
109
119
  return updateRelations(uow, 'addToRelation', {
110
120
  table: table,
111
121
  payload: payload
112
122
  });
113
123
  },
114
- FIND: function FIND(uow, _ref10) {
115
- var table = _ref10.table,
116
- payload = _ref10.payload;
124
+ FIND: function FIND(uow, _ref12) {
125
+ var table = _ref12.table,
126
+ payload = _ref12.payload;
117
127
  return uow.addOperations(_constants.OperationType.FIND, table, payload);
118
128
  }
119
129
  };
120
130
  exports.OperationJSONAdapter = OperationJSONAdapter;
121
131
 
122
- function baseBulkArgs(uow, _ref11) {
123
- var table = _ref11.table,
124
- payload = _ref11.payload;
132
+ function baseBulkArgs(uow, _ref13) {
133
+ var table = _ref13.table,
134
+ payload = _ref13.payload;
125
135
  var args = [];
126
136
 
127
137
  if (payload.conditional) {
@@ -141,9 +151,9 @@ function baseBulkArgs(uow, _ref11) {
141
151
  return args;
142
152
  }
143
153
 
144
- function updateRelations(uow, method, _ref12) {
145
- var table = _ref12.table,
146
- payload = _ref12.payload;
154
+ function updateRelations(uow, method, _ref14) {
155
+ var table = _ref14.table,
156
+ payload = _ref14.payload;
147
157
  var args = [table];
148
158
 
149
159
  if (typeof payload.parentObject === 'string') {
package/es/urls.js CHANGED
@@ -142,6 +142,11 @@ var Urls = /*#__PURE__*/function () {
142
142
  value: function dataTable(tableName) {
143
143
  return "".concat(this.data(), "/").concat(tableName);
144
144
  }
145
+ }, {
146
+ key: "dataTableUpsert",
147
+ value: function dataTableUpsert(tableName) {
148
+ return "".concat(this.data(), "/").concat(tableName, "/upsert");
149
+ }
145
150
  }, {
146
151
  key: "dataTableDeepSave",
147
152
  value: function dataTableDeepSave(tableName) {
@@ -182,6 +187,11 @@ var Urls = /*#__PURE__*/function () {
182
187
  value: function dataBulkTable(tableName) {
183
188
  return "".concat(this.data(), "/bulk/").concat(tableName);
184
189
  }
190
+ }, {
191
+ key: "dataBulkTableUpsert",
192
+ value: function dataBulkTableUpsert(tableName) {
193
+ return "".concat(this.data(), "/bulkupsert/").concat(tableName);
194
+ }
185
195
  }, {
186
196
  key: "dataBulkTableDelete",
187
197
  value: function dataBulkTableDelete(tableName) {
@@ -29,16 +29,18 @@ var ChangesTypes = {
29
29
  CREATED: 'created',
30
30
  UPDATED: 'updated',
31
31
  DELETED: 'deleted',
32
+ UPSERTED: 'upserted',
32
33
  BULK_CREATED: 'bulk-created',
33
34
  BULK_UPDATED: 'bulk-updated',
34
- BULK_DELETED: 'bulk-deleted'
35
+ BULK_DELETED: 'bulk-deleted',
36
+ BULK_UPSERTED: 'bulk-upserted'
35
37
  };
36
38
  var RelationsChangesTypes = {
37
39
  ADD: 'add',
38
40
  SET: 'set',
39
41
  DELETE: 'delete'
40
42
  };
41
- var SingleChangesTypes = [ChangesTypes.CREATED, ChangesTypes.UPDATED, ChangesTypes.DELETED];
43
+ var SingleChangesTypes = [ChangesTypes.CREATED, ChangesTypes.UPDATED, ChangesTypes.DELETED, ChangesTypes.UPSERTED];
42
44
 
43
45
  var RTHandlers = /*#__PURE__*/function (_RTListeners) {
44
46
  (0, _inherits2["default"])(RTHandlers, _RTListeners);
@@ -81,6 +83,25 @@ var RTHandlers = /*#__PURE__*/function (_RTListeners) {
81
83
 
82
84
  this.removeCreateListeners(undefined, callback);
83
85
  }
86
+ }, {
87
+ key: "addUpsertListener",
88
+ value: function addUpsertListener(whereClause, callback, onError) {
89
+ this.addChangesListener(ChangesTypes.UPSERTED, whereClause, callback, onError);
90
+ }
91
+ }, {
92
+ key: "removeUpsertListeners",
93
+ value: function removeUpsertListeners(whereClause, callback) {
94
+ this.removeChangesListeners(ChangesTypes.UPSERTED, whereClause, callback);
95
+ }
96
+ }, {
97
+ key: "removeUpsertListener",
98
+ value: function removeUpsertListener(callback) {
99
+ if (!callback || typeof callback !== 'function') {
100
+ throw new Error('Listener Function must be passed.');
101
+ }
102
+
103
+ this.removeUpsertListeners(undefined, callback);
104
+ }
84
105
  }, {
85
106
  key: "addUpdateListener",
86
107
  value: function addUpdateListener(whereClause, callback, onError) {
@@ -176,6 +197,25 @@ var RTHandlers = /*#__PURE__*/function (_RTListeners) {
176
197
 
177
198
  this.removeBulkDeleteListeners(undefined, callback);
178
199
  }
200
+ }, {
201
+ key: "addBulkUpsertListener",
202
+ value: function addBulkUpsertListener(whereClause, callback, onError) {
203
+ this.addChangesListener(ChangesTypes.BULK_UPSERTED, whereClause, callback, onError);
204
+ }
205
+ }, {
206
+ key: "removeBulkUpsertListeners",
207
+ value: function removeBulkUpsertListeners() {
208
+ this.removeChangesListeners(ChangesTypes.BULK_UPSERTED);
209
+ }
210
+ }, {
211
+ key: "removeBulkUpsertListener",
212
+ value: function removeBulkUpsertListener(callback) {
213
+ if (!callback || typeof callback !== 'function') {
214
+ throw new Error('Listener Function must be passed.');
215
+ }
216
+
217
+ this.removeChangesListeners(ChangesTypes.BULK_UPSERTED, undefined, callback);
218
+ }
179
219
  }, {
180
220
  key: "addSetRelationListener",
181
221
  value: function addSetRelationListener(relationColumnName, parentObjects, callback, onError) {