@reldens/storage 0.29.0 → 0.30.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.
@@ -15,6 +15,7 @@ class BaseDriver
15
15
  this.rawModel = sc.get(props, 'rawModel', false);
16
16
  this.rawId = sc.get(props, 'id', false);
17
17
  this.rawName = sc.get(props, 'name', false);
18
+ this.select = sc.get(props, 'select', []);
18
19
  this.limit = sc.get(props, 'limit', 0);
19
20
  this.offset = sc.get(props, 'offset', 0);
20
21
  this.sortBy = sc.get(props, 'sortBy', false);
@@ -196,6 +196,9 @@ class ObjectionJsDriver extends BaseDriver
196
196
  queryBuilder(useLimit = false, useOffset = false, useSort = false)
197
197
  {
198
198
  let queryBuilder = this.rawModel.query();
199
+ if(0 < this.select.length){
200
+ queryBuilder.select(...this.select);
201
+ }
199
202
  if(useLimit && 0 !== this.limit){
200
203
  queryBuilder.limit(this.limit)
201
204
  }
@@ -232,6 +235,9 @@ class ObjectionJsDriver extends BaseDriver
232
235
  queryBuilder.whereIn(i, filter.value);
233
236
  continue;
234
237
  }
238
+ if('NOT' === filterOperator){
239
+ queryBuilder.whereNot(i, filter.value);
240
+ }
235
241
  queryBuilder.where(i, filter.operator, filter.value);
236
242
  continue;
237
243
  }
@@ -240,7 +246,7 @@ class ObjectionJsDriver extends BaseDriver
240
246
  return queryBuilder;
241
247
  }
242
248
 
243
- appendRelationsToQuery(queryBuilder, relations)
249
+ appendRelationsToQuery(queryBuilder, relations, relationsModifiers)
244
250
  {
245
251
  if(!sc.isArray(relations) || 0 === relations.length){
246
252
  relations = Object.keys(this.rawModel.relationMappings || {});
@@ -248,9 +254,40 @@ class ObjectionJsDriver extends BaseDriver
248
254
  if(0 < relations.length){
249
255
  queryBuilder.withGraphFetched('['+relations.join(',')+']');
250
256
  }
257
+ this.appendRelationsModifiers(queryBuilder, relations, relationsModifiers);
251
258
  return queryBuilder;
252
259
  }
253
260
 
261
+ appendRelationsModifiers(queryBuilder, relations, relationsModifiers)
262
+ {
263
+ if(!sc.isArray(relationsModifiers)){
264
+ return queryBuilder;
265
+ }
266
+ for (let relationModifier of relationsModifiers) {
267
+ let relationKey = sc.get(relationModifier, 'key');
268
+ if (!relationKey) {
269
+ continue;
270
+ }
271
+ if (-1 === relations.indexOf(relationKey)) {
272
+ continue;
273
+ }
274
+ let relationOrderBy = sc.get(relationModifier, 'orderBy', {});
275
+ let relationOrderByField = sc.get(relationOrderBy, 'field', {});
276
+ let relationLimit = sc.get(relationModifier, 'limit');
277
+ if(!relationOrderByField && !relationLimit){
278
+ continue;
279
+ }
280
+ queryBuilder.modifyGraph(relationKey, builder => {
281
+ if(relationOrderByField) {
282
+ builder.orderBy(relationOrderByField, sc.get(relationOrderBy, 'direction', 'desc'));
283
+ }
284
+ if(relationLimit){
285
+ builder.limit(relationLimit);
286
+ }
287
+ });
288
+ }
289
+ return queryBuilder;
290
+ }
254
291
  }
255
292
 
256
293
  module.exports.ObjectionJsDriver = ObjectionJsDriver;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reldens/storage",
3
3
  "scope": "@reldens",
4
- "version": "0.29.0",
4
+ "version": "0.30.0",
5
5
  "description": "Reldens - Storage",
6
6
  "author": "Damian A. Pastorini",
7
7
  "license": "MIT",
@@ -44,11 +44,11 @@
44
44
  "url": "https://github.com/damian-pastorini/reldens-storage/issues"
45
45
  },
46
46
  "dependencies": {
47
- "@mikro-orm/core": "^6.3.10",
48
- "@mikro-orm/mongodb": "^6.3.10",
49
- "@reldens/utils": "^0.37.0",
47
+ "@mikro-orm/core": "^6.3.13",
48
+ "@mikro-orm/mongodb": "^6.3.13",
49
+ "@reldens/utils": "^0.38.0",
50
50
  "knex": "^3.1.0",
51
51
  "mysql": "^2.18.1",
52
- "objection": "^3.1.4"
52
+ "objection": "^3.1.5"
53
53
  }
54
54
  }