Waddler SQL values

This guide assumes familiarity with:

sql.values lets you conveniently pass values to insert statements:

await sql`insert into [users] ([name]) values ${sql.values([["Dan"]])}`;

const values = sql.values([["Dan", "dan@acme.com", 25]]);
await sql`insert into [users] ([name], [email], [age]) values ${values}`;
insert into [users] ([name]) values (@p1);  -- params: ["Dan"]
insert into [users] ([name], [email], [age]) values (@p1, @p2, @p3); -- params: ["Dan", "dan@acme.com", 25]
const values = sql.values([
	["Dan", "dan@acme.com", 25], 
	["Oleksii", "oleksii@acme.com", 22]
]);
await sql`insert into [users] ([name], [email], [age]) values ${values}`;
insert into [users] ([name], [email], [age]) values (@p1, @p2, @p3), (@p4, @p5, @p6);
-- params: ["Dan", "dan@acme.com", 25, "Oleksii", "oleksii@acme.com", 22]

Waddler provides a convinient sql.default for SQL DEFAULT values:

const values = sql.values([["Dan", sql.default], ["Alex", sql.default]])
await sql`insert into [users] ([name], [created_at]) values ${values}`;
insert into [users] ([name], [created_at]) values (@p1, default), (@p2, default);
-- params: ["Dan", "Alex"]

Complete example with sql.identifier and sql.default:

const table = sql.identifier("users")
const columns = sql.identifier(["id", "name", "age"]);
const values = sql.values([
  [sql.default, "Oleksii", 20],
  [sql.default, "Alex", 23],
]);

await sql`insert into ${table} (${columns}) values ${values}`;
insert into [users] ([id], [name], [age]) values (default, @p1, @p2), (default, @p3, @p4);
-- params: ["Oleksii", 20, "Alex", 23]