@reldens/storage 0.23.0 → 0.25.0

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.
@@ -71,6 +71,11 @@ class BaseDriver
71
71
  ErrorManager.error('BaseDriver updateById() not implemented.');
72
72
  }
73
73
 
74
+ upsert(params, filters)
75
+ {
76
+ ErrorManager.error('BaseDriver upsert() not implemented.');
77
+ }
78
+
74
79
  delete(filters)
75
80
  {
76
81
  ErrorManager.error('BaseDriver delete() not implemented.');
@@ -64,12 +64,33 @@ class ObjectionJsDriver extends BaseDriver
64
64
  return this.queryBuilder().patchAndFetchById(id, params);
65
65
  }
66
66
 
67
- deleteBy(filters)
67
+ async upsert(params, filters)
68
+ {
69
+ if(params.id){
70
+ let patch = Object.assign({}, params);
71
+ delete patch.id;
72
+ return this.queryBuilder().patchAndFetchById(params.id, patch).onConflict().merge();
73
+ }
74
+ if(filters){
75
+ let existent = await this.loadOne(filters);
76
+ if(existent){
77
+ return this.queryBuilder().patchAndFetchById(existent.id, params).onConflict().merge();
78
+ }
79
+ }
80
+ return this.create(params);
81
+ }
82
+
83
+ delete(filters)
68
84
  {
69
85
  let queryBuilder = this.queryBuilder(true, true, true);
70
86
  return this.appendFilters(queryBuilder, filters).delete();
71
87
  }
72
88
 
89
+ deleteBy(filters)
90
+ {
91
+ this.delete(filters);
92
+ }
93
+
73
94
  deleteById(id)
74
95
  {
75
96
  return this.queryBuilder().deleteById(id);
@@ -201,9 +222,16 @@ class ObjectionJsDriver extends BaseDriver
201
222
  }
202
223
  for(let i of filtersKeys){
203
224
  let filter = filters[i];
204
- sc.hasOwn(filter, 'operator')
205
- ? queryBuilder.where(i, filter.operator, filter.value)
206
- : queryBuilder.where(i, filter);
225
+ let filterOperator = sc.get(filter, 'operator');
226
+ if(filterOperator){
227
+ if('IN' === filterOperator){
228
+ queryBuilder.whereIn(i, filter.value);
229
+ continue;
230
+ }
231
+ queryBuilder.where(i, filter.operator, filter.value);
232
+ continue;
233
+ }
234
+ queryBuilder.where(i, filter);
207
235
  }
208
236
  return queryBuilder;
209
237
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reldens/storage",
3
3
  "scope": "@reldens",
4
- "version": "0.23.0",
4
+ "version": "0.25.0",
5
5
  "description": "Reldens - Storage",
6
6
  "author": "Damian A. Pastorini",
7
7
  "license": "MIT",
@@ -44,9 +44,9 @@
44
44
  "url": "https://github.com/damian-pastorini/reldens-storage/issues"
45
45
  },
46
46
  "dependencies": {
47
- "@mikro-orm/core": "^6.2.5",
48
- "@mikro-orm/mongodb": "^6.2.5",
49
- "@reldens/utils": "^0.32.0",
47
+ "@mikro-orm/core": "^6.2.9",
48
+ "@mikro-orm/mongodb": "^6.2.9",
49
+ "@reldens/utils": "^0.33.0",
50
50
  "knex": "^3.1.0",
51
51
  "mysql": "^2.18.1",
52
52
  "objection": "^3.1.4"