Cloudflare

Connect DB0 to Cloudflare D1 or PostgreSQL/MySQL using Cloudflare Hyperdrive

#Cloudflare D1

Read more in developers.cloudflare.com/d1.

Note

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",
  }),
);

Note

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

Read more in developers.cloudflare.com/hyperdrive.

Note

This connector works within Cloudflare Workers with Hyperdrive enabled.

#Usage

For this connector, you need to install pg dependency:

npm i 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.

Read more in Query parameters.

#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,
  }),
);
Read more in node-postgres documentation.

#Hyperdrive MySQL

Read more in developers.cloudflare.com/hyperdrive.

Note

This connector works within Cloudflare Workers with Hyperdrive enabled.

#Usage

For this connector, you need to install mysql2 dependency:

npm i 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,
  }),
);
Read more in github.com/sidorares/node-mysql2/blob/master/typings/mysql/lib/Connection.d.ts#L82-L329.

db0  tiny sql connector.