Skip to main content Link Search Menu Expand Document (external link)

SqliteClient overview

CR-SQLite compatible Sqlite client tag and type.

This augments the base @effect/sql SqlClient with the SQLite-specific ability to loadExtension, which CR-SQLite requires to activate its functionality on a connection.

Implementations are provided by platform drivers such as @effect/sql-sqlite-node and @effect/sql-sqlite-bun, which already expose a loadExtension method. This tag allows CR-SQLite helpers to depend on the minimal capability needed across platforms.

Added in v0.1.0


Table of contents


utils

SqliteClient

Tag for a CR-SQLite compatible SQLite client.

Signature

export declare const SqliteClient: Context.Tag<SqliteClient, SqliteClient>

Added in v0.1.0

SqliteClient (interface)

Extends the generic SqlClient with SQLite’s loadExtension capability.

Signature

export interface SqliteClient extends SqlClient.SqlClient {
  /**
   * Loads a SQLite extension from a full filesystem path.
   *
   * Required to enable CR-SQLite (crsqlite) for the current connection.
   */
  readonly loadExtension: (path: string) => Effect.Effect<void, SqlError>
}

Added in v0.1.0

SqliteClientError (class)

Error raised when a base SqlClient does not support loadExtension.

Signature

export declare class SqliteClientError

Added in v0.1.0

fromSqlClient

Validates a base SqlClient supports loadExtension and narrows it to SqliteClient.

Signature

export declare const fromSqlClient: (
  sql: SqliteClient | SqlClient.SqlClient
) => Effect.Effect<
  SqliteClient,
  [YieldWrap<Effect.Effect<never, SqliteClientError, never>>] extends [never]
    ? never
    : [YieldWrap<Effect.Effect<never, SqliteClientError, never>>] extends [
          YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>
        ]
      ? E
      : never,
  [YieldWrap<Effect.Effect<never, SqliteClientError, never>>] extends [never]
    ? never
    : [YieldWrap<Effect.Effect<never, SqliteClientError, never>>] extends [
          YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>
        ]
      ? R
      : never
>

Added in v0.1.0

layer

Provides a SqliteClient instance into the environment.

Signature

export declare const layer: (sql: SqliteClient) => Layer.Layer<SqliteClient, never, never>

Added in v0.1.0

layerFromSqlClient

Lifts a base SqlClient into a SqliteClient if it exposes loadExtension.

Signature

export declare const layerFromSqlClient: (
  sql: SqlClient.SqlClient | SqliteClient
) => Layer.Layer<SqliteClient, SqliteClientError, never>

Added in v0.1.0

loadExtension

Loads a SQLite extension (e.g., CR‑SQLite) on the current connection.

Signature

export declare const loadExtension: (
  path: string
) => Effect.Effect<
  void,
  [
    | YieldWrap<Effect.Effect<never, SqliteClientError, never>>
    | YieldWrap<Effect.Effect<void, SqlError, never>>
    | YieldWrap<Context.Tag<SqlClient.SqlClient, SqlClient.SqlClient>>
  ] extends [never]
    ? never
    : [
          | YieldWrap<Effect.Effect<never, SqliteClientError, never>>
          | YieldWrap<Effect.Effect<void, SqlError, never>>
          | YieldWrap<Context.Tag<SqlClient.SqlClient, SqlClient.SqlClient>>
        ] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>]
      ? E
      : never,
  [
    | YieldWrap<Effect.Effect<never, SqliteClientError, never>>
    | YieldWrap<Effect.Effect<void, SqlError, never>>
    | YieldWrap<Context.Tag<SqlClient.SqlClient, SqlClient.SqlClient>>
  ] extends [never]
    ? never
    : [
          | YieldWrap<Effect.Effect<never, SqliteClientError, never>>
          | YieldWrap<Effect.Effect<void, SqlError, never>>
          | YieldWrap<Context.Tag<SqlClient.SqlClient, SqlClient.SqlClient>>
        ] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>]
      ? R
      : never
>

Added in v0.1.0