---
title: "@pitlane/data-table-d1"
description: "A Cloudflare D1 driver for Remix 3's `data-table`."
url: "https://pitlane.tools/package/data-table-d1/"
---

# @pitlane/data-table-d1

A Cloudflare D1 driver for Remix 3's `data-table`.

D1 is SQLite, so the SQL is SQLite's, but the execution model is not: statements are prepared and awaited over an RPC binding, and the transaction verbs are rejected outright. `@remix-run/data-table-sqlite` builds on a synchronous client and cannot bridge that gap, so this package pairs the SQLite SQL compiler with a driver written against D1's async API.

## See

[Cloudflare D1 guide](https://pitlane.tools/guides/cloudflare-d1.md)

## Classes

- [D1Database](https://pitlane.tools/package/data-table-d1/class/D1Database.md). A `Database` bound to Cloudflare D1.
- [D1DatabaseDriver](https://pitlane.tools/package/data-table-d1/class/D1DatabaseDriver.md). A `DatabaseDriver` backed by a Cloudflare D1 binding.

## Interfaces

- [D1BatchResult](https://pitlane.tools/package/data-table-d1/interface/D1BatchResult.md). What one statement in a [D1DatabaseDriver.batch](https://pitlane.tools/package/data-table-d1/class/D1DatabaseDriver.md#batch) produced.
- [D1Binding](https://pitlane.tools/package/data-table-d1/interface/D1Binding.md). The slice of Cloudflare's D1 API this driver uses.
- [D1DatabaseOptions](https://pitlane.tools/package/data-table-d1/interface/D1DatabaseOptions.md). The options [createD1Database](https://pitlane.tools/package/data-table-d1/function/createD1Database.md) accepts: `remix/data-table`'s `DatabaseOptions`, plus D1's statement observer and transaction mode.
- [D1DriverOptions](https://pitlane.tools/package/data-table-d1/interface/D1DriverOptions.md). The options [D1DatabaseDriver](https://pitlane.tools/package/data-table-d1/class/D1DatabaseDriver.md) accepts: the D1-specific half of [D1DatabaseOptions](https://pitlane.tools/package/data-table-d1/interface/D1DatabaseOptions.md), which [createD1Database](https://pitlane.tools/package/data-table-d1/function/createD1Database.md) passes through.
- [D1Meta](https://pitlane.tools/package/data-table-d1/interface/D1Meta.md). What D1 reports about one statement it ran.
- [D1PreparedStatement](https://pitlane.tools/package/data-table-d1/interface/D1PreparedStatement.md). A statement [D1Binding.prepare](https://pitlane.tools/package/data-table-d1/interface/D1Binding.md#prepare) returns, before it runs.
- [D1Result](https://pitlane.tools/package/data-table-d1/interface/D1Result.md). What one statement produced: its rows, empty for a write, and D1's metadata.
- [D1StatementReport](https://pitlane.tools/package/data-table-d1/interface/D1StatementReport.md). What one executed statement cost, as D1 reported it.

## Type Aliases

- [D1StatementObserver](https://pitlane.tools/package/data-table-d1/type/D1StatementObserver.md). Called after each statement the driver executes.
- [D1TransactionMode](https://pitlane.tools/package/data-table-d1/type/D1TransactionMode.md). How the driver answers a `transaction()` call.

## Functions

- [createD1Database](https://pitlane.tools/package/data-table-d1/function/createD1Database.md). Wraps a D1 binding in a `Database`.
