Waddler SQL append
This guide assumes familiarity with:
sql.append
lets you conveniently append SQL templates:
const query = sql`select * from users where id = 10`;
query.append(sql` or id = 20`);
const result = await query;
select * from users where id = 10 or id = 20;
It is an extremely useful API to build dynamic queries:
type Filter = {
key: string,
operator: "=" | "!=",
value: string,
}
const listItems = async (params: {limit: number, offset?: number, filter?: Filter }) => {
const query = sql`select * from items`;
if(filter) {
query.append(sql` where ${sql.identifier(it.key)} ${sql.raw(it.operator)} ${it.value}`)
}
query.append(sql` limit ${params.limit}`);
if(params.offset) {
query.append(sql` offset ${params.offset}`);
}
}
await listItems({ limit: 50 });
await listItems({ limit: 50, filter: { key: "name", operator: "=", value: "Item 1"}});
await listItems({ limit: 50, offset: 50, filter: { key: "name", operator: "=", value: "Item 1"}});
select * from items limit {param1:String};
-- {param1:50} params
select * from items where `name` = {param1:String} limit {param2:String};
-- {param1:"Item 1", param2:50} params
select * from items where `name` = {param1:String} limit {param2:String} offset {param3:String};
-- {param1:"Item 1", param2:50, param3:50} params