tg-knex-query-resolver
Version:
TeselaGen's Knex based query resolver
52 lines (44 loc) • 1.11 kB
JavaScript
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;
};