sql-template
v1.2.2
Published
Template string (ES6) builder for SQL.
Downloads
169
Readme
Motivation
Template string builder for SQL.
Key features
- tag based (easily extensible)
- made with love
- very simple
- drop in compatible with pg
- strongly tested with 100% code coverage
API/Usage
var SQL = require('sql-template');
pg(SQL`SELECT * FROM foo`)
{text: 'SELECT * FROM foo', values: []}
pg(SQL`SELECT * FROM foo WHERE age > ${22}`)
{text: 'SELECT * FROM foo WHERE age > $1 ', values: [22]}
Tags (transformers) list
$where$
pg(SQL`SELECT * FROM foo $where${ {name:'John doe'} }`)
{text: 'SELECT * FROM foo WHERE "name" = $1 ', values: ["John doe"]}
pg(SQL`SELECT * FROM foo $where${ {id: [1,2,3], type:'snow'} }`)
{text: 'SELECT * FROM foo WHERE "id" IN($1,$2,$3) AND "type"=$4 ', values: [1,2,3,"snow"]}
$set$
pg(SQL`UPDATE foo $set${ {joe: 22, bar: 'ok'} }`)
{text: 'UPDATE foo SET "joe"=$1,"bar"=$2', values: [22, 'ok']}
$keys$
pg(SQL`INSERT INTO foo $keys${["joe", "bar"]} VALUES (${22}, ${'ok'})}`)
{text: 'INSERT INTO foo ("joe", "bar") VALUES ($1,$2), values: [22, 'ok']}
$values$
pg(SQL`INSERT INTO foo (joe, bar) $values${ {joe: 22, bar: 'ok'} }`)
{text: 'INSERT INTO foo (joe, bar) VALUES ($1,$2), values: [22, 'ok']}
const obj = {joe: 22, bar: 'ok'};
pg(SQL`INSERT INTO foo $keys${Object.keys(obj)} $values${obj}`)
{text: 'INSERT INTO foo ("joe","bar") VALUES ($1,$2), values: [22, 'ok']}
or use the SQL.insert
static api.
$id$
pg(SQL`SELECT * FROM $id${'foo'}`)
{text: 'SELECT * FROM "foo"', values: []}
$in$
pg(SQL`SELECT * FROM foo WHERE id $in${[1,2,3]}`)
{text: `SELECT * FROM foo WHERE id IN($1,$2,$3)', values: [1,2,3]}
Note that transformers internaly use ?:
as parameter placeholder, per jsonb compliance.
Static API
SQL.insert
pq(SQL.insert('foo', {joe: 22, bar: 'ok'}))
{text: 'INSERT INTO foo ("joe","bar") VALUES ($1,$2), values: [22, 'ok']}
SQL.search_blob (search_field, expression)
Compute a smart query expression.
TODO
- Get rich or die tryin'
Shoutbox, keywords, SEO love
pg, sql, sql-string, sql-builder, ES6 template string, prepared statement, escape, "Let's have a beer & talk in Paris"