Skip to content

SqlSchema

Wraps SQL execution callbacks with request encoding and result decoding.

SqlSchema is a small adapter between Effect Schema and SQL statements. Each helper builds a function that accepts the decoded request type used by application code, encodes it before calling execute, and decodes unknown driver rows into the result schema. The helpers cover returning all rows, a non-empty row list, the first row, an optional first row, or discarding the SQL result for side-effect-only statements.

5 exports Added in v4.0.0 Source

Constructors

findAll

Added in v4.0.0 Source

Builds a query function that encodes the request and decodes all result rows, allowing an empty result set.

When to use

Use when you need to run a query that may return zero or more rows and represent an empty result as an empty array.

See

Signature

declare function findAll<Req extends Constraint, Res extends Constraint, E, R>(options: {
  readonly execute: (request: Req["Encoded"]) => Effect<readonly Array<unknown>, E, R>;
  readonly Request: Req;
  readonly Result: Res;
}): (request: Req["Type"]) => Effect<Array<Res["Type"]>, SchemaError | E, R | Req["EncodingServices"] | Res["DecodingServices"]>

findNonEmpty

Added in v4.0.0 Source

Builds a query function that encodes the request, decodes all result rows, and fails with NoSuchElementError when the result set is empty.

When to use

Use when you need to run a query that must return at least one row and treat an empty result as a failure.

See

  • findAll for queries where an empty result should return an empty array

Signature

declare function findNonEmpty<Req extends Constraint, Res extends Constraint, E, R>(options: {
  readonly execute: (request: Req["Encoded"]) => Effect<readonly Array<unknown>, E, R>;
  readonly Request: Req;
  readonly Result: Res;
}): (request: Req["Type"]) => Effect<[Res["Type"], ...Array<Res["Type"]>], NoSuchElementError | SchemaError | E, R | Req["EncodingServices"] | Res["DecodingServices"]>

findOne

Added in v4.0.0 Source

Builds a query function that encodes the request, decodes the first result row, and fails with NoSuchElementError when no rows are returned.

Signature

declare function findOne<Req extends Constraint, Res extends Constraint, E, R>(options: {
  readonly execute: (request: Req["Encoded"]) => Effect<readonly Array<unknown>, E, R>;
  readonly Request: Req;
  readonly Result: Res;
}): (request: Req["Type"]) => Effect<Res["Type"], NoSuchElementError | SchemaError | E, R | Req["EncodingServices"] | Res["DecodingServices"]>

Builds a query function that encodes the request, decodes the first result row as Option.some, and returns Option.none when no rows are returned.

Signature

declare function findOneOption<Req extends Constraint, Res extends Constraint, E, R>(options: {
  readonly execute: (request: Req["Encoded"]) => Effect<readonly Array<unknown>, E, R>;
  readonly Request: Req;
  readonly Result: Res;
}): (request: Req["Type"]) => Effect<Option<Res["Type"]>, SchemaError | E, R | Req["EncodingServices"] | Res["DecodingServices"]>

Other

Signature

declare function void<Req extends Constraint, E, R>(options: {
  readonly execute: (request: Req["Encoded"]) => Effect<unknown, E, R>;
  readonly Request: Req;
}): (request: Req["Type"]) => Effect<void, SchemaError | E, R | Req["EncodingServices"]>