Skip to content

Search the guides, deployment pages, and API reference.

D1Database

import { D1Database } from "@pitlane/data-table-d1";

A Database bound to Cloudflare D1.

The same shape SqliteDatabase and PostgresDatabase have: a Database subclass that supplies its own driver, so every query, persistence and migration method comes from remix/data-table unchanged.

Extends

  • Database<"sqlite">

Constructors

Constructor

new D1Database(binding, options?): D1Database;

Parameters

binding

D1Binding

options?

D1DatabaseOptions

Returns

D1Database

Overrides

Database<"sqlite">.constructor

Accessors

capabilities

Get Signature

get capabilities(): DatabaseCapabilities;

Immutable feature flags used by shared query and migration behavior.

Returns

DatabaseCapabilities

Inherited from

Database.capabilities

dialect

Get Signature

get dialect(): dialect;

Stable identifier for the SQL dialect.

Returns

dialect

Inherited from

Database.dialect

Methods

batch()

batch(statements): Promise<D1BatchResult[]>;

Runs statements together, atomically.

D1 has no transactions, so transaction() refuses. batch() is what it offers instead, and this is it without reaching for the raw binding:

import { sql } from "remix/data-table";
await db.batch([
sql`insert into post (title) values (${title})`,
sql`update counter set posts = posts + 1`,
]);

The statements are SqlStatements rather than query-builder calls, because data-table exposes no way to build an operation without running it. sql still parameterises the values.

Parameters

statements

SqlStatement[]

Returns

Promise<D1BatchResult[]>


close()

close(): Promise<void>;

Closes resources owned by this database.

Returns

Promise<void>

A promise that resolves when owned resources have been released.

Inherited from

Database.close

count()

count<table>(table, options?): Promise<number>;

Type Parameters

table

table extends AnyTable

Parameters

table

table

options?

CountOptions<table>

Returns

Promise<number>

Inherited from

Database.count

create()

Call Signature

create<table>(
table,
values,
options?): Promise<WriteResult>;
Type Parameters
table

table extends AnyTable

Parameters
table

table

values

Partial<TableRow<table>>

options?

CreateResultOptions

Returns

Promise<WriteResult>

Inherited from
Database.create

Call Signature

create<table, relations>(
table,
values,
options): Promise<{ [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }>;
Type Parameters
table

table extends AnyTable

relations

relations extends RelationMapForSourceName<TableName<table>> = { }

Parameters
table

table

values

Partial<TableRow<table>>

options

CreateRowOptions<table, relations>

Returns

Promise<{ [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }>

Inherited from
Database.create

createMany()

Call Signature

createMany<table>(
table,
values,
options?): Promise<WriteResult>;
Type Parameters
table

table extends AnyTable

Parameters
table

table

values

Partial<{ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] }>[]

options?

CreateManyResultOptions

Returns

Promise<WriteResult>

Inherited from
Database.createMany

Call Signature

createMany<table>(
table,
values,
options): Promise<{ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] }[]>;
Type Parameters
table

table extends AnyTable

Parameters
table

table

values

Partial<{ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] }>[]

options

CreateManyRowsOptions

Returns

Promise<{ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] }[]>

Inherited from
Database.createMany

delete()

delete<table>(table, value): Promise<boolean>;

Type Parameters

table

table extends AnyTable

Parameters

table

table

value

PrimaryKeyInput<table>

Returns

Promise<boolean>

Inherited from

Database.delete

deleteMany()

deleteMany<table>(table, options): Promise<WriteResult>;

Type Parameters

table

table extends AnyTable

Parameters

table

table

options

DeleteManyOptions<table>

Returns

Promise<WriteResult>

Inherited from

Database.deleteMany

exec()

Call Signature

exec(statement, values?): Promise<DataManipulationResult>;
Parameters
statement

string | SqlStatement

values?

unknown[]

Returns

Promise<DataManipulationResult>

Inherited from
Database.exec

Call Signature

exec<input>(input): Promise<QueryExecutionResult<input>>;
Type Parameters
input

input extends AnyQuery

Parameters
input

input

Returns

Promise<QueryExecutionResult<input>>

Inherited from
Database.exec

executeScript()

executeScript(sql): Promise<void>;

Executes a migration or raw multi-statement SQL script.

Parameters

sql

string

SQL script to execute.

Returns

Promise<void>

A promise that resolves when execution completes.

Inherited from

Database.executeScript

find()

find<table, relations>(
table,
value,
options?): Promise<
| { [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<(...)>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }
| null>;

Type Parameters

table

table extends AnyTable

relations

relations extends RelationMapForSourceName<TableName<table>> = { }

Parameters

table

table

value

PrimaryKeyInput<table>

options?
with?

relations

Returns

Promise< | { [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<(...)>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] } | null>

Inherited from

Database.find

findMany()

findMany<table, relations>(table, options?): Promise<{ [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<(...)>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }[]>;

Type Parameters

table

table extends AnyTable

relations

relations extends RelationMapForSourceName<TableName<table>> = { }

Parameters

table

table

options?

FindManyOptions<table, relations>

Returns

Promise<{ [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<(...)>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }[]>

Inherited from

Database.findMany

findOne()

findOne<table, relations>(table, options): Promise<
| { [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<(...)>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }
| null>;

Type Parameters

table

table extends AnyTable

relations

relations extends RelationMapForSourceName<TableName<table>> = { }

Parameters

table

table

options

FindOneOptions<table, relations>

Returns

Promise< | { [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<(...)>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] } | null>

Inherited from

Database.findOne

hasColumn()

hasColumn(table, column): Promise<boolean>;

Reports whether a column exists on a table.

Parameters

table

TableRef

Table to inspect.

column

string

Column name to inspect.

Returns

Promise<boolean>

A promise that resolves to true when the column exists.

Inherited from

Database.hasColumn

hasTable()

hasTable(table): Promise<boolean>;

Reports whether a table exists.

Parameters

table

TableRef

Table to inspect.

Returns

Promise<boolean>

A promise that resolves to true when the table exists.

Inherited from

Database.hasTable

migrate()

migrate(migrations, options?): Promise<MigrateResult>;

Applies or reverts migrations in order.

Parameters

migrations

Migrations

Migration descriptors or registry to apply.

options?

DatabaseMigrateOptions

Migration direction, bound, dry-run, and journal configuration.

Returns

Promise<MigrateResult>

The migrations applied or reverted by this run and their SQL scripts.

Inherited from

Database.migrate

migrationStatus()

migrationStatus(migrations, options?): Promise<MigrationStatusEntry[]>;

Reports the current state of the provided migrations.

Parameters

migrations

Migrations

Migration descriptors or registry to inspect.

options?

DatabaseMigrationStatusOptions

Migration journal configuration.

Returns

Promise<MigrationStatusEntry[]>

Status entries for the provided migrations.

Inherited from

Database.migrationStatus

now()

now(): unknown;

Returns

unknown

Inherited from

Database.now

query()

query<tableName, row, primaryKey>(table): Query<QueryTableInput<tableName, row, primaryKey>, { [key in string]: QueryColumnTypeMapFromRow<tableName, row>[key] }, row, {
}, BoundQueryPhase<"all">>;

Type Parameters

tableName

tableName extends string

row

row extends Record<string, unknown>

primaryKey

primaryKey extends readonly keyof row & string[]

Parameters

table

QueryTableInput<tableName, row, primaryKey>

Returns

Query<QueryTableInput<tableName, row, primaryKey>, { [key in string]: QueryColumnTypeMapFromRow<tableName, row>[key] }, row, { }, BoundQueryPhase<"all">>

Inherited from

Database.query

reset()

reset(options): Promise<void>;

Wipes the database, applies migrations, and optionally seeds data.

Parameters

options

DatabaseResetOptions

Migrations and optional seed function used to rebuild the database.

Returns

Promise<void>

A promise that resolves when the database has been rebuilt.

Inherited from

Database.reset

transaction()

transaction<result>(callback, options?): Promise<result>;

Type Parameters

result

result

Parameters

callback

(database: Database<"sqlite">) => Promise<result>

options?

TransactionOptions

Returns

Promise<result>

Inherited from

Database.transaction

update()

update<table, relations>(
table,
value,
changes,
options?): Promise<{ [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }>;

Type Parameters

table

table extends AnyTable

relations

relations extends RelationMapForSourceName<TableName<table>> = { }

Parameters

table

table

value

PrimaryKeyInput<table>

changes

Partial<TableRow<table>>

options?

UpdateOptions<table, relations>

Returns

Promise<{ [key in string | number | symbol]: ({ [key in string]: { [column in string]: ColumnOutput<TableColumns<table>[column]> }[key] } & { [key in string | number | symbol]: { [name in string | number | symbol]: RelationResult<relations[name]> }[key] })[key] }>

Inherited from

Database.update

updateMany()

updateMany<table>(
table,
changes,
options): Promise<WriteResult>;

Type Parameters

table

table extends AnyTable

Parameters

table

table

changes

Partial<TableRow<table>>

options

UpdateManyOptions<table>

Returns

Promise<WriteResult>

Inherited from

Database.updateMany

wipe()

wipe(): Promise<void>;

Destructively recreates the configured database.

Returns

Promise<void>

A promise that resolves when the database is ready for use.

Inherited from

Database.wipe