Cloudflare
Connect DB0 to Cloudflare D1 or PostgreSQL/MySQL using Cloudflare Hyperdrive
Cloudflare D1
This connector works within cloudflare workers with D1 enabled.
Usage
Use cloudflare-d1
connector:
import { createDatabase } from "db0";
import cloudflareD1 from "db0/connectors/cloudflare-d1";
const db = createDatabase(
cloudflareD1({
bindingName: "DB",
}),
);
In order for the driver to work,
globalThis.__env__.DB
value should be set.If you are using Nitro you don't need to do any extra steps.Options
bindingName
Assigned binding name.
Hyperdrive PostgreSQL
This connector works within Cloudflare Workers with Hyperdrive enabled.
Usage
For this connector, you need to install pg
dependency:
npm i pg @types/pg
yarn add pg @types/pg
pnpm i pg @types/pg
bun i pg @types/pg
deno i npm:pg @types/pg
Use cloudflare-hyperdrive-postgresql
connector:
import { createDatabase } from "db0";
import cloudflareHyperdrivePostgresql from "db0/connectors/cloudflare-hyperdrive-postgresql";
const db = createDatabase(
cloudflareHyperdrivePostgresql({
bindingName: "POSTGRESQL",
}),
);
Options
bindingName
Assigned binding name for your Hyperdrive instance.
Additional Options
You can also pass PostgreSQL client configuration options (except for user
, database
, password
, port
, host
, and connectionString
which are managed by Hyperdrive):
const db = createDatabase(
cloudflareHyperdrivePostgresql({
bindingName: "HYPERDRIVE",
// Additional PostgreSQL options
statement_timeout: 5000,
query_timeout: 10000,
}),
);
Hyperdrive MySQL
This connector works within Cloudflare Workers with Hyperdrive enabled.
Usage
For this connector, you need to install mysql2
dependency:
npm i mysql2
yarn add mysql2
pnpm i mysql2
bun i mysql2
deno i npm:mysql2
Use cloudflare-hyperdrive-mysql
connector:
import { createDatabase } from "db0";
import cloudflareHyperdriveMysql from "db0/connectors/cloudflare-hyperdrive-mysql";
const db = createDatabase(
cloudflareHyperdriveMysql({
bindingName: "MYSQL",
}),
);
Options
bindingName
Assigned binding name for your Hyperdrive instance.
Additional Options
You can also pass MySQL client configuration options (except for connection/authentication options which are managed by Hyperdrive, and disableEval
which is incompatible in Cloudflare Workers):
const db = createDatabase(
cloudflareHyperdriveMysql({
bindingName: "HYPERDRIVE",
// Additional MySQL options
connectTimeout: 10000,
queryTimeout: 5000,
}),
);