micro sql template libray for pg and mysql modules
- <100 lines of code, zero dependencies 1
- typescript friendly
const sql = require("@geogeim/sqltemplate");
const { Client } = require('pg')
...
const res = await client.query(sql`delete from options where id in (${sql.join(obsoleteOptions)}) returning *`);The template recognizes the following argument types:
- undefined will throw an exception
- null values will output
NULLstring inside the text of the query
sql`${null}` == { text: 'NULL', values: []}- strings wrapped with
sql.raw()will be directly inserted into the query
sql`${sql('--\n')}` == { text: '--\n', values: []}- strings wrapped with
sql.id()are wrapped in double quotes and properly escaped
sql`${sql.id('long row name"')}` == { text: '"long row name """', values: []}- a nested template will be evaluated recursively
sql`select * from "table" where id=${1} and ${sql`status=${2}`}` ==
{ text: 'select * from "table" where "id"=$1 and "status"=$2', values: [1, 2]}- use
sql.join()to join array of values or templates into a new template
sql.join([1, sql`hello`, 2], ",") ==
{ text: '$1,hello,$2', values: [1, 2]}Footnotes
-
you can also install
pg-minifyto make the outputted queries a bit nicer, no other config needed! ↩