UNPKG

@knax/backend-utils

Version:

39 lines 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rqlParser = (knexQuery, queryObject) => { const filter = JSON.parse(queryObject.filter || '{}'); const sort = JSON.parse(queryObject.sort || '[]'); Object.keys(filter).forEach(column => { if (typeof filter[column] === 'object') { Object.keys(filter[column]).forEach(operation => { if (operation === 'like') { knexQuery = knexQuery.where(column, 'like', filter[column][operation]); } else if (operation === 'ilike') { knexQuery = knexQuery.where(column, 'ilike', filter[column][operation]); } else if (operation === 'in') { knexQuery = knexQuery.where(column, 'in', JSON.parse(filter[column][operation])); } // TODO: other operation not implemented }); } else if (column === '$or') { // TODO: not implemented } else { knexQuery = knexQuery.where(column, filter[column]); } }); const sortQuery = sort.map(sort => { if (sort.startsWith('-')) { return { column: sort.substr(1), order: 'desc' }; } else { return { column: sort, order: 'asc' }; } }); knexQuery = knexQuery.orderBy(sortQuery); return knexQuery; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnFsX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJxbF9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBYSxRQUFBLFNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7SUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBRWxELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pDLElBQUcsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM1QyxJQUFHLFNBQVMsS0FBSyxNQUFNLEVBQUU7b0JBQ3JCLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQzFFO3FCQUFNLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRTtvQkFDOUIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDM0U7cUJBQU0sSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO29CQUMzQixTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEY7Z0JBQ0Qsd0NBQXdDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTSxJQUFHLE1BQU0sS0FBSyxLQUFLLEVBQUU7WUFDeEIseUJBQXlCO1NBQzVCO2FBQU07WUFDSCxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDdkQ7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDOUIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUE7U0FDbkQ7YUFBTTtZQUNILE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQTtTQUN4QztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDIn0=