@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.
package/lib/base-driver.js
CHANGED
|
@@ -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.
|
|
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.
|
|
48
|
-
"@mikro-orm/mongodb": "^6.3.
|
|
49
|
-
"@reldens/utils": "^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.
|
|
52
|
+
"objection": "^3.1.5"
|
|
53
53
|
}
|
|
54
54
|
}
|