TypeScript Apache-2.0

waddler

Modern SQL client

D

drizzle-team

Dernière activité 2 déc. 2025
drizzle-team/waddler

366

étoiles

11

forks

12

issues ouvertes

duckdbjavascriptmotherducknodejssqltypescript

Ce README est souvent en anglais.

Waddler 🦆

Website • Documentation • Twitter • by Drizzle Team

Waddler - is a thin SQL client wrapper with modern API inspired by postgresjs and based on ES6 Tagged Template Strings.

You don't need to learn an api for db clients; just use the sql template tag for everything

Waddler is our vision of a modern, all-in-one client for any database dialect. It doesn't perform any specific mappings to or from a database, doesn't handle complex query building, and doesn't parse queries. Waddler simply unifies communication with your database using any client you choose - whether it's a simple TCP connection or an HTTP-based DB client.

We support all the dialects and drivers that Drizzle supports

You can check a full list of clients you can use - here

import { waddler } from "waddler/node-postgres";
import { waddler } from "waddler/mysql2";
import { waddler } from "waddler/libsql";

const sql = waddler({ dbUrl: process.env.DB_URL });
const sql = waddler();

// promisified SQL template API
const result = await sql`select * from users`;

// Easy to use values param
const values = sql.values([["Dan", "dan@acme.com", 25]]);
await sql`insert into "users" ("name", "email", "age") values ${values}`;
// insert into "users" ("name", "email", "age") values ('Dan', 'dan@acme.com', 25);

// no SQL injections
await sql`select * from users where id = ${10}`; // <-- converts to $1 and [10] params
  
// waddler supports types
await sql<{ id: number, name: string }>`select * from users`;

// streaming and chunking
const stream = sql`select * from users`.stream();
for await (const row of stream) {
  console.log(row);
}

const chunked = sql`select * from users`.chunked(2);
for await (const chunk of chunked) {
  console.log(chunk);
}

You can enable logger with all the metadata coming from drivers

import { Logger } from 'waddler';
import { waddler } from 'waddler/...'; // driver specific
class MyLogger implements Logger {
  logQuery(query: string, params: unknown[], metadata?: any): void {
    // metadata will contain all the extra fields coming from the specific db driver
    console.log({ query, params, metadata });
  }
}
const db = waddler({ logger: new MyLogger() });

For more information you can check the docs

Projets similaires

Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.

TypeScriptbigquerycassandracockroachdb
Bbeekeeper-studio
23,7 k étoiles1,6 k

Microsoft SQL Server client for Node.js

JavaScriptjavascriptmssqlnodejs
Ttediousjs
2,3 k étoiles469

A type-safe TypeScript SQL query builder

TypeScriptbrowserbundatabase
Kkysely-org
14,2 k étoiles447