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 ({param1:String}); -- params: {param1: "Dan"}
insert into `users` (`name`, `email`, `age`) 
values ({param1:String}, {param2:String}, {param3:String}); -- params: {param1: "Dan", param2: "dan@acme.com", param3: 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 ({param1:String}, {param2:String}, {param3:String}), ({param4:String}, {param5:String}, {param6:String});
-- params: { param1: "Dan", param2: "dan@acme.com", param3: 25, param4: "Oleksii", param5: "oleksii@acme.com", param6: 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 ({param1:String}, default), ({param2:String}, default);
-- params: { param1: "Dan", param2: "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, {param1:String}, {param2:String}), (default, {param3:String}, {param4:String});
-- params: { param1: "Oleksii", param2: 20, param3: "Alex", param4: 23 }