Database connection with Waddler
Waddler runs SQL queries on your database via database drivers.
index.ts
import { waddler } from "waddler/duckdb-neo"
const sql = waddler({ url: process.env.DATABASE_URL });
const usersCount = await sql`select count(*) from ${sql.identifier('users')};`;
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β sql`select count(*) from ${sql.identifier('users')};` β <--- waddler query
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Κ
select count(*) from "users"; -β β
β β- [{ count: 0 }]
v β
βββββββββββββββββββββββ
β duckdb-neo β <--- database driver
βββββββββββββββββββββββ
β Κ
01101000 01100101 01111001 -β β
β β- 01110011 01110101 01110000
v β
ββββββββββββββββββββββ
β Database β
ββββββββββββββββββββββ
Under the hood, Waddler has a pool that creates a duckdb-neo
driver instance when needed.
import { DuckDBInstance } from '@duckdb/node-api';
const instance = await DuckDBInstance.create(url, {
accessMode: 'read_write', // default value
maxMemory: '512MB', // default value
threads = '4' // default value
});
const connection = await instance.connect();
// The connection can then be used to query your database
Waddler is by design natively compatible with every edge or serverless runtime, whenever youβd need access to a serverless database - weβve got you covered
Neon HTTP
Neon with websockets
Vercel Postgres
PlanetScale HTTP
Cloudflare d1
import { waddler } from "waddler/neon-http";
const sql = waddler(process.env.DATABASE_URL);
And yes, we do support runtime specific drivers like Bun SQLite or Expo SQLite:
import { waddler } from "waddler/bun-sqlite"
const sql = waddler(); // <--- will create an in-memory db
const sql = waddler("./sqlite.db");
import { waddler } from "waddler/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite";
const expo = openDatabaseSync("db.db");
const sql = waddler({ client: expo });
Database connection URL
Just in case if youβre not familiar with database connection URL concept
Local database file:
./<path-to-your-local-database-file>
MotherDuck connection string:
md:?motherduck_token=<token>
Next steps
Feel free to check out per-driver documentations
PostgreSQL drivers
Duckdb drivers
ClickHouse drivers
Gel drivers
MySQL drivers
MsSQL drivers
SQLite drivers
Native SQLite