pgsqwell
v5.1.1
Published
SQL template tag for PostgreSQL done well
Downloads
123
Readme
pgsqwell
SQL template tag for PostgreSQL done well
Done well because:
- immutable
- separation of concerns / specialization: use the
sql
tag for valid SQL statements,sqlPart
for subparts that ain't necessarily valid
Sample usage
import sql, {
escapeSQLIdentifier,
sqlPart,
emptySQLPart,
joinSQLValues,
} from 'pgsqwell';
const limit = 10;
const query = sql`SELECT id FROM users WHERE name=${'toto'} ${
limit ? sqlPart`LIMIT ${limit}` : emptySQLPart
}`;
const query2 = sql`SELECT id FROM ${escapeSQLIdentifier('table')}`;
const query3 = sql`SELECT id FROM users WHERE id IN ${joinSQLValues([1, 2])}}`;
const mergedQuery = sql`
${query}
UNION
${query2}
UNION
${query3}
`;
Debug
To print any query built with pgsqwell
use the DEBUG=pgsqwell
environment variable:
DEBUG=pgsqwell npm t
Testing
Use pgsqwell-mock
to check you queries in your tests.
Known downsides
- if you use the vscode-sql-tagged-template-literal plugin like I do, composed SQL queries won't be validated for their SQL syntax.