UNPKG

tg-knex-query-resolver

Version:

TeselaGen's Knex based query resolver

78 lines (62 loc) 2.16 kB
//Client Side const QueryBuilder = require('tg-client-query-builder'); const fse = require('fs-extra'); const path = require('path'); //Server Side const parseQuery = require('../query-parser'); const resolveQuery = require('../query-resolver'); const sqlFormatter = require('sql-formatter'); const log = require('../log'); var qb = new QueryBuilder(); var qry = qb.filter('Author') .whereAll({ firstName: "Adam", lastName: "Thomas" }, { city: "Carmel" }, { id: qb.related("Post.Author_id") .whereAll({ likes: qb.greaterThan(10) }), Group_id: qb.related("Group.id") .whereAll({ groupType: qb.inList(['admin', 'supervisor']) }) }, { id: qb.related("AuthorRole.Author_id") .whereAll({ Role_id: qb.related("Role.id") .whereAll({ name: 'Super-Author' }) }) }, { AuthorType_code: qb.notRelated("AuthorType.code") .whereAll({ name: 'Retired' }, { name: 'Deceased' }) }) .andWhereAny({ state: 'IN', country: 'USA' }, { zipCode: '46032' }, { age: qb.greaterThan(30) }); var qryJson = qry.toJSON(); log(qryJson); var parsedQuery = parseQuery(qryJson); log(parsedQuery); var knex = require('knex')({ client: 'pg' }); var qb = resolveQuery(knex, parsedQuery); var sql = qb.toSQL(); log(sql); var sqlStr = qb.toString(); log(sqlFormatter.format(sqlStr)); fse.outputFileSync(path.join(__dirname, 'example1.txt'), sqlStr);