Skip to content

SqliteClient.ts

Connects Effect SQL to SQLite storage inside Cloudflare Durable Objects.

This module adapts a Durable Object SqlStorage handle into both the Durable Object-specific SqliteClient service and the generic Effect SqlClient service. Use it from inside a Durable Object to run local per-object queries, repositories, migrations, transactional read/write workflows, and tests that exercise Cloudflare’s SQLite-backed storage API.

Durable Object SQLite storage is scoped to one object id, so each object instance has its own database. Callers can pass the SqlStorage handle for normal queries, or the full DurableObjectStorage when withTransaction or migrations need Cloudflare-managed transactions. This adapter serializes Effect SQL access through one connection; a transaction holds that permit for the lifetime of its scope, so keep transactions short, avoid suspending them across unrelated work, and use them when multi-statement writes must commit atomically. SqlStorage.exec returns ArrayBuffer values for SQLite blobs, which this client normalizes to Uint8Array, and SQLite does not support updateValues.

Since v4.0.0



Creates a scoped Cloudflare Durable Object SQLite client around Durable Object SQLite storage, serializing access and converting returned ArrayBuffer values to Uint8Array.

Signature

declare const make: (
options: SqliteClientConfig
) => Effect.Effect<SqliteClient, never, Scope.Scope | Reactivity.Reactivity>

Source

Since v4.0.0

Creates a layer from a concrete Durable Object SQLite client configuration, providing both SqliteClient and SqlClient.

Signature

declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient>

Source

Since v4.0.0

Creates a layer from a Config-wrapped Durable Object SQLite client configuration, providing both SqliteClient and SqlClient.

Signature

declare const layerConfig: (
config: Config.Wrap<SqliteClientConfig>
) => Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError>

Source

Since v4.0.0

Cloudflare Durable Object SQLite client service, extending SqlClient with its configuration. updateValues is not supported.

Signature

export interface SqliteClient extends Client.SqlClient {
readonly [TypeId]: TypeId
readonly config: SqliteClientConfig
/** Not supported in sqlite */
readonly updateValues: never
}

Source

Since v4.0.0

Configuration for a Cloudflare Durable Object SQLite client, including either a SqlStorage handle or the full DurableObjectStorage for transaction support, span attributes, and query/result name transforms.

Signature

export interface SqliteClientConfig {
readonly db?: SqlStorage | undefined
readonly storage?: DurableObjectStorage | undefined
readonly spanAttributes?: Record<string, unknown> | undefined
readonly transformResultNames?: ((str: string) => string) | undefined
readonly transformQueryNames?: ((str: string) => string) | undefined
}

Source

Since v4.0.0

Service tag for the Cloudflare Durable Object SQLite client service.

When to use

Use to access or provide a Durable Object SQLite client through the Effect context.

Signature

declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>

Source

Since v4.0.0

Runtime type identifier used to mark Cloudflare Durable Object SqliteClient values.

Signature

declare const TypeId: "~@effect/sql-sqlite-do/SqliteClient"

Source

Since v4.0.0

Type-level identifier used to mark Cloudflare Durable Object SqliteClient values.

Signature

type TypeId = "~@effect/sql-sqlite-do/SqliteClient"

Source

Since v4.0.0