UNPKG

tg-knex-query-resolver

Version:

TeselaGen's Knex based query resolver

52 lines (44 loc) 1.11 kB
const _ = require("lodash"); module.exports = function convertSimpleFilterToFilterQuery( modelName, simpleFilter ) { if (typeof simpleFilter !== "object") throw new Error("Expected Simple Query to be object"); if (simpleFilter.__objectType === "query") return simpleFilter; var filterQuery = { type: "group", operator: "and", filters: [] }; var whereArgs = {}; _.each(simpleFilter, (filterArgs, attrName) => { if (filterArgs && filterArgs.type === 'expression') { filterArgs.field = attrName filterQuery.filters.push(filterArgs); } else if (Array.isArray(filterArgs)) { filterQuery.filters.push({ type: "expression", operator: "inList", field: attrName, args: [filterArgs] }); } else { whereArgs[attrName] = filterArgs; } }); if (Object.keys(whereArgs).length > 0) { filterQuery.filters.push({ type: "where", args: whereArgs }); } var query = { __objectType: "query", entity: modelName, type: "root", filters: [filterQuery] }; return query; };