Skip to content
Christoph Herrmann edited this page Oct 17, 2019 · 4 revisions

Sometimes it's needed to build queries dynamically depending of some conditions, e.g. select user by name:

const name = 'raa'
const page = 0

const users = await sql.query(sql`
  SELECT email FROM users
    ${sql.if(name, sql`WHERE name LIKE ${`%${name}%`}`, sql.pagination(page))}
`)

// text:
//   SELECT name, email FROM users
//     WHERE name LIKE $1
// values: ['%raa%']

or if no name is given, all users are selected supported with pagination:

const name = ''
const page = 0

const users = await sql.query(sql`
  SELECT email FROM users
    ${sql.if(name, sql`WHERE name LIKE ${`%${name}%`}`, sql.pagination(page))}
`)

// text:
//   SELECT name, email FROM users
//     LIMIT 10 OFFSET 0
// values: []

If the else case is omitted, nothing will be added in the falsy case.

Clone this wiki locally