@reldens/storage 0.45.0 → 0.46.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/prisma/prisma-driver.js +52 -8
- package/package.json +2 -2
|
@@ -157,6 +157,42 @@ class PrismaDriver extends BaseDriver
|
|
|
157
157
|
return data;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
processFilters(filters)
|
|
161
|
+
{
|
|
162
|
+
if(!sc.isObject(filters)){
|
|
163
|
+
return filters;
|
|
164
|
+
}
|
|
165
|
+
let processedFilters = {};
|
|
166
|
+
for(let key of Object.keys(filters)){
|
|
167
|
+
let value = filters[key];
|
|
168
|
+
if(sc.hasOwn(value, 'operator') && sc.hasOwn(value, 'value')){
|
|
169
|
+
let operatorValue = value.value;
|
|
170
|
+
if('id' === key && sc.isArray(operatorValue)){
|
|
171
|
+
operatorValue = operatorValue.map(id => this.castIdValue(id));
|
|
172
|
+
}
|
|
173
|
+
if('id' === key && !sc.isArray(operatorValue)){
|
|
174
|
+
operatorValue = this.castIdValue(operatorValue);
|
|
175
|
+
}
|
|
176
|
+
processedFilters[key] = this.applyOperator(operatorValue, value.operator);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if(sc.isObject(value) && !sc.isArray(value)){
|
|
180
|
+
processedFilters[key] = this.processFilters(value);
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if('id' === key && sc.isArray(value)){
|
|
184
|
+
processedFilters[key] = value.map(id => this.castIdValue(id));
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if('id' === key){
|
|
188
|
+
processedFilters[key] = this.castIdValue(value);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
processedFilters[key] = value;
|
|
192
|
+
}
|
|
193
|
+
return processedFilters;
|
|
194
|
+
}
|
|
195
|
+
|
|
160
196
|
async create(params)
|
|
161
197
|
{
|
|
162
198
|
try {
|
|
@@ -205,8 +241,9 @@ class PrismaDriver extends BaseDriver
|
|
|
205
241
|
{
|
|
206
242
|
try {
|
|
207
243
|
let preparedData = this.prepareData(updatePatch);
|
|
244
|
+
let processedFilters = this.processFilters(filters);
|
|
208
245
|
return await this.model.updateMany({
|
|
209
|
-
where:
|
|
246
|
+
where: processedFilters,
|
|
210
247
|
data: preparedData
|
|
211
248
|
});
|
|
212
249
|
} catch(error) {
|
|
@@ -285,8 +322,9 @@ class PrismaDriver extends BaseDriver
|
|
|
285
322
|
async delete(filters = {})
|
|
286
323
|
{
|
|
287
324
|
try {
|
|
325
|
+
let processedFilters = this.processFilters(filters);
|
|
288
326
|
return await this.model.deleteMany({
|
|
289
|
-
where:
|
|
327
|
+
where: processedFilters
|
|
290
328
|
});
|
|
291
329
|
} catch(error) {
|
|
292
330
|
Logger.error('Delete error: '+error.message);
|
|
@@ -314,8 +352,9 @@ class PrismaDriver extends BaseDriver
|
|
|
314
352
|
async count(filters)
|
|
315
353
|
{
|
|
316
354
|
try {
|
|
355
|
+
let processedFilters = this.processFilters(filters);
|
|
317
356
|
return await this.model.count({
|
|
318
|
-
where:
|
|
357
|
+
where: processedFilters
|
|
319
358
|
});
|
|
320
359
|
} catch(error) {
|
|
321
360
|
Logger.error('Count error: '+error.message);
|
|
@@ -326,8 +365,9 @@ class PrismaDriver extends BaseDriver
|
|
|
326
365
|
async countWithRelations(filters, relations)
|
|
327
366
|
{
|
|
328
367
|
try {
|
|
368
|
+
let processedFilters = this.processFilters(filters);
|
|
329
369
|
let query = {
|
|
330
|
-
where:
|
|
370
|
+
where: processedFilters
|
|
331
371
|
};
|
|
332
372
|
if(sc.isArray(relations) && 0 < relations.length){
|
|
333
373
|
query.include = this.buildIncludeObject(relations);
|
|
@@ -366,8 +406,9 @@ class PrismaDriver extends BaseDriver
|
|
|
366
406
|
async load(filters)
|
|
367
407
|
{
|
|
368
408
|
try {
|
|
409
|
+
let processedFilters = this.processFilters(filters);
|
|
369
410
|
let query = this.buildQueryOptions();
|
|
370
|
-
query.where =
|
|
411
|
+
query.where = processedFilters;
|
|
371
412
|
return await this.model.findMany(query);
|
|
372
413
|
} catch(error) {
|
|
373
414
|
Logger.error('Load error: '+error.message);
|
|
@@ -378,8 +419,9 @@ class PrismaDriver extends BaseDriver
|
|
|
378
419
|
async loadWithRelations(filters, relations)
|
|
379
420
|
{
|
|
380
421
|
try {
|
|
422
|
+
let processedFilters = this.processFilters(filters);
|
|
381
423
|
let query = this.buildQueryOptions();
|
|
382
|
-
query.where =
|
|
424
|
+
query.where = processedFilters;
|
|
383
425
|
if(sc.isArray(relations) && 0 < relations.length){
|
|
384
426
|
query.include = this.buildIncludeObject(relations);
|
|
385
427
|
}
|
|
@@ -467,8 +509,9 @@ class PrismaDriver extends BaseDriver
|
|
|
467
509
|
async loadOne(filters)
|
|
468
510
|
{
|
|
469
511
|
try {
|
|
512
|
+
let processedFilters = this.processFilters(filters);
|
|
470
513
|
let query = this.buildQueryOptions(false);
|
|
471
|
-
query.where =
|
|
514
|
+
query.where = processedFilters;
|
|
472
515
|
return await this.model.findFirst(query);
|
|
473
516
|
} catch(error) {
|
|
474
517
|
Logger.error('Load one error: '+error.message);
|
|
@@ -479,8 +522,9 @@ class PrismaDriver extends BaseDriver
|
|
|
479
522
|
async loadOneWithRelations(filters, relations)
|
|
480
523
|
{
|
|
481
524
|
try {
|
|
525
|
+
let processedFilters = this.processFilters(filters);
|
|
482
526
|
let query = this.buildQueryOptions(false);
|
|
483
|
-
query.where =
|
|
527
|
+
query.where = processedFilters;
|
|
484
528
|
if(sc.isArray(relations) && 0 < relations.length){
|
|
485
529
|
query.include = this.buildIncludeObject(relations);
|
|
486
530
|
}
|
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.46.0",
|
|
5
5
|
"description": "Reldens - Storage",
|
|
6
6
|
"author": "Damian A. Pastorini",
|
|
7
7
|
"license": "MIT",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@mikro-orm/mongodb": "^6.4.15",
|
|
47
47
|
"@mikro-orm/mysql": "^6.4.15",
|
|
48
48
|
"@prisma/client": "^6.8.2",
|
|
49
|
-
"@reldens/server-utils": "^0.
|
|
49
|
+
"@reldens/server-utils": "^0.17.0",
|
|
50
50
|
"@reldens/utils": "^0.47.0",
|
|
51
51
|
"knex": "^3.1.0",
|
|
52
52
|
"mysql": "^2.18.1",
|