A no-frills chainable/fluent interface for constructing mutable MySQL queries with data binding/escapement.
NPM: npm install queryize
In Node or another CommonJS environment:
var queryize = require('queryize');
var query = queryize().select();
var select = require('queryize').select;
var query = select();
var select = require('queryize').select;
var q = select()
.from('users', 'u')
.innerJoin('passwords', {alias: 'p', on: {'u.id':'p.user_id'}})
.where({'u.email': 'user@example.com'})
.columns('u.id', 'p.hash')
.compile();
//q.query contains SELECT u.id, p.hash FROM users u INNER JOIN passwords p ON (u.id = p.user_id) WHERE u.email = ?
//q.data contains ['user@example.com']
var queryize = require('queryize');
var q = queryize()
.insert().into('users')
.set({name: 'John Doe', email: 'user@example.com'})
.compile();
//q.query contains INSERT INTO users SET u.name = ?, u.email = ?
//q.data contains ['John Doe', 'user@example.com']
var queryize = require('queryize');
var q = queryize()
.update().table('users')
.set({name: 'John Doe', email: 'user@example.com'})
.where({'u.id':1})
.compile();
//q.query contains UPDATE users SET u.name = ?, u.email = ? WHERE u.id = ?
//q.data contains ['John Doe', 'user@example.com', 1]
var queryize = require('queryize');
var q = queryize()
.deleteFrom('users')
.where({'u.id':1})
.compile();
//q.query contains DELETE FROM users WHERE u.id = ?
//q.data contains ['John Doe', 'user@example.com', 1]
From inside the repository root, run npm install
to install the node-tap dependency.
Run npm test
to execute the complete test suite.