@reldens/storage
Version:
43 lines (37 loc) • 1.09 kB
JavaScript
/**
*
* Reldens - PrismaQueryBuilder
*
*/
const { sc } = require('@reldens/utils');
class PrismaQueryBuilder
{
buildQueryOptions(options, useLimit = true)
{
let select = sc.get(options, 'select', []);
let limit = sc.get(options, 'limit', 0);
let offset = sc.get(options, 'offset', 0);
let sortBy = sc.get(options, 'sortBy', false);
let sortDirection = sc.get(options, 'sortDirection', 'ASC');
let queryOptions = {};
if(0 < select.length){
queryOptions.select = {};
for(let field of select){
queryOptions.select[field] = true;
}
}
if(useLimit && 0 !== limit){
queryOptions.take = limit;
}
if(0 !== offset){
queryOptions.skip = offset;
}
if(false !== sortBy && false !== sortDirection){
queryOptions.orderBy = {
[]: sortDirection.toLowerCase()
};
}
return queryOptions;
}
}
module.exports.PrismaQueryBuilder = PrismaQueryBuilder;