Database connection with Waddler
Waddler runs SQL queries on your database via database drivers.
index.ts
import { waddler } from "waddler/clickhouse"
const sql = waddler(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 β
βββββββββββββββββββββββ
β clickhouse β <--- database driver
βββββββββββββββββββββββ
β Κ
01101000 01100101 01111001 -β β
β β- 01110011 01110101 01110000
v β
ββββββββββββββββββββββ
β Database β
ββββββββββββββββββββββ
Under the hood Waddler will create a clickhouse driver instance
// above is equivalent to
import { waddler } from "waddler/clickhouse";
import { createClient } from '@clickhouse/client';
const client = createClient({
// url should have the following format: http[s]://<host>:<port>
url: '...',
});
const sql = waddler({ client });
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
https://alex:[email protected]:8443/dbname
ββββ βββββββββ βββββββββββββββββββββββββββ ββββ ββββ
Κ Κ Κ Κ Κ
role -β β β- hostname β β - database
β β - port
β- password
Next steps
Feel free to check out per-driver documentations
PostgreSQL drivers
Gel drivers
MySQL drivers
SQLite drivers
Native SQLite
ClickHouse