Skip to content

nfroidure/pgsqwell

pgsqwell

SQL template tag for PostgreSQL done well

GitHub license

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

Authors

License

MIT

About

SQL template tag for PostgreSQL done well

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published