Skip to content

Statement

37 exports Added in v1.0.0 Source

Compiler

Compiler interface

Added in v1.0.0 Source

Signature

interface Compiler {
  readonly compile: (statement: Fragment, withoutTransform: boolean) => readonly [string, readonly Array<unknown>];
  readonly dialect: Dialect;
  readonly withoutTransform: Compiler;
}

makeCompiler

Added in v1.0.0 Source

Signature

declare const makeCompiler: <C extends Custom<any, any, any, any> = any>(options: {
  readonly dialect: Dialect;
  readonly onCustom: (
    type: C,
    placeholder: (u: unknown) => string,
    withoutTransform: boolean,
  ) => readonly [sql: string, params: ReadonlyArray<unknown>];
  readonly onIdentifier: (value: string, withoutTransform: boolean) => string;
  readonly onInsert?: (
    columns: ReadonlyArray<string>,
    placeholders: string,
    values: ReadonlyArray<ReadonlyArray<unknown>>,
    returning: readonly [sql: string, params: ReadonlyArray<unknown>] | undefined,
  ) => readonly [sql: string, binds: ReadonlyArray<unknown>];
  readonly onRecordUpdate: (
    placeholders: string,
    alias: string,
    columns: string,
    values: ReadonlyArray<ReadonlyArray<unknown>>,
    returning: readonly [sql: string, params: ReadonlyArray<unknown>] | undefined,
  ) => readonly [sql: string, params: ReadonlyArray<unknown>];
  readonly onRecordUpdateSingle?: (
    columns: ReadonlyArray<string>,
    values: ReadonlyArray<unknown>,
    returning: readonly [sql: string, params: ReadonlyArray<unknown>] | undefined,
  ) => readonly [sql: string, params: ReadonlyArray<unknown>];
  readonly placeholder: (index: number, value: unknown) => string;
}) => Compiler;

Signature

declare const makeCompilerSqlite: (transform?: (_: string) => string) => Compiler;

Constructor

and

Added in v1.0.0 Source

Signature

declare const and: (clauses: ReadonlyArray<string | Fragment>) => Fragment;

csv

Added in v1.0.0 Source

Signature

declare const csv: {
  (values: readonly Array<string | Fragment>): Fragment;
  (prefix: string, values: readonly Array<string | Fragment>): Fragment;
}

custom

Added in v1.0.0 Source

Signature

declare const custom: <C extends Custom<any, any, any, any>>(
  kind: C["kind"],
) => (i0: C["i0"], i1: C["i1"], i2: C["i2"]) => Fragment;

join

Added in v1.0.0 Source

Signature

declare const join: (
  literal: string,
  addParens?: boolean,
  fallback?: string,
) => (clauses: ReadonlyArray<string | Fragment>) => Fragment;

make

Added in v1.0.0 Source

Signature

declare const make: (
  acquirer: Connection.Acquirer,
  compiler: Compiler,
  spanAttributes: ReadonlyArray<readonly [string, unknown]>,
  transformRows: <A extends object>(row: ReadonlyArray<A>) => ReadonlyArray<A> | undefined,
) => Constructor;

or

Added in v1.0.0 Source

Signature

declare const or: (clauses: ReadonlyArray<string | Fragment>) => Fragment;

Signature

declare const unsafeFragment: (sql: string, params?: ReadonlyArray<unknown>) => Fragment;

Guard

isCustom

Added in v1.0.0 Source

Signature

declare const isCustom: <A extends Custom<any, any, any, any>>(
  kind: A["kind"],
) => (u: unknown) => u is A;

isFragment

Added in v1.0.0 Source

Signature

declare const isFragment: (u: unknown) => u is Fragment;

Model

ArrayHelper interface

Added in v1.0.0 Source

Signature

interface ArrayHelper {
  readonly _tag: "ArrayHelper";
  readonly value: readonly Array<unknown>;
}

Constructor interface

Added in v1.0.0 Source

Signature

interface Constructor {
  <A extends object = Row>(strings: TemplateStringsArray, ...args: Array<any>): Statement<A>;
  (value: string): Identifier;
  readonly and: (clauses: readonly Array<string | Fragment>) => Fragment;
  readonly csv: {
    (values: readonly Array<string | Fragment>): Fragment;
    (prefix: string, values: readonly Array<string | Fragment>): Fragment;
  };
  readonly in: {
    (value: readonly Array<unknown>): ArrayHelper;
    (column: string, value: readonly Array<unknown>): Fragment;
  };
  readonly insert: {
    (value: readonly Array<Record<string, unknown>>): RecordInsertHelper;
    (value: Record<string, unknown>): RecordInsertHelper;
  };
  readonly join: (literal: string, addParens?: boolean, fallback?: string) => (clauses: readonly Array<string | Fragment>) => Fragment;
  readonly literal: (sql: string) => Fragment;
  readonly onDialect: <A, B, C, D, E>(options: {
    readonly clickhouse: () => E;
    readonly mssql: () => D;
    readonly mysql: () => C;
    readonly pg: () => B;
    readonly sqlite: () => A;
  }) => A | B | C | D | E;
  readonly onDialectOrElse: <A, B = never, C = never, D = never, E = never, F = never>(options: {
    readonly clickhouse?: () => F;
    readonly mssql?: () => E;
    readonly mysql?: () => D;
    readonly orElse: () => A;
    readonly pg?: () => C;
    readonly sqlite?: () => B;
  }) => A | B | C | D | E | F;
  readonly or: (clauses: readonly Array<string | Fragment>) => Fragment;
  readonly unsafe: <A extends object>(sql: string, params?: readonly Array<any>) => Statement<A>;
  readonly update: <A extends Record<string, unknown>>(value: A, omit?: readonly Array<keyof A>) => RecordUpdateHelperSingle;
  readonly updateValues: (value: readonly Array<Record<string, unknown>>, alias: string) => RecordUpdateHelper;
}

Custom interface

Added in v1.0.0 Source

Signature

interface Custom<T extends string = string, A = void, B = void, C = void> {
  readonly _tag: "Custom";
  readonly i0: A;
  readonly i1: B;
  readonly i2: C;
  readonly kind: T;
}

Dialect type

Added in v1.0.0 Source

Signature

type Dialect = "sqlite" | "pg" | "mysql" | "mssql" | "clickhouse";

Fragment interface

Added in v1.0.0 Source

Signature

interface Fragment {
  readonly [FragmentId]: (_: never) => typeof FragmentId;
  readonly segments: readonly Array<Segment>;
}

Helper type

Added in v1.0.0 Source

Signature

type Helper =
  | ArrayHelper
  | RecordInsertHelper
  | RecordUpdateHelper
  | RecordUpdateHelperSingle
  | Identifier
  | Custom;

Identifier interface

Added in v1.0.0 Source

Signature

interface Identifier {
  readonly _tag: "Identifier";
  readonly value: string;
}

Literal interface

Added in v1.0.0 Source

Signature

interface Literal {
  readonly _tag: "Literal";
  readonly params?: readonly Array<unknown>;
  readonly value: string;
}

Parameter interface

Added in v1.0.0 Source

Signature

interface Parameter {
  readonly _tag: "Parameter";
  readonly value: unknown;
}

PrimitiveKind type

Added in v1.0.0 Source

Signature

type PrimitiveKind =
  | "string"
  | "number"
  | "bigint"
  | "boolean"
  | "Date"
  | "null"
  | "Int8Array"
  | "Uint8Array"
  | "object";

RecordInsertHelper interface

Added in v1.0.0 Source

Signature

interface RecordInsertHelper {
  readonly _tag: "RecordInsertHelper";
  readonly returning: (sql: string | Fragment | Identifier) => RecordInsertHelper;
  readonly value: readonly Array<Record<string, unknown>>;
}

RecordUpdateHelper interface

Added in v1.0.0 Source

Signature

interface RecordUpdateHelper {
  readonly _tag: "RecordUpdateHelper";
  readonly alias: string;
  readonly returning: (sql: string | Fragment | Identifier) => RecordUpdateHelper;
  readonly value: readonly Array<Record<string, unknown>>;
}

RecordUpdateHelperSingle interface

Added in v1.0.0 Source

Signature

interface RecordUpdateHelperSingle {
  readonly _tag: "RecordUpdateHelperSingle";
  readonly omit: readonly Array<string>;
  readonly returning: (sql: string | Fragment | Identifier) => RecordUpdateHelperSingle;
  readonly value: Record<string, unknown>;
}

Segment type

Added in v1.0.0 Source

Signature

type Segment =
  | Literal
  | Identifier
  | Parameter
  | ArrayHelper
  | RecordInsertHelper
  | RecordUpdateHelper
  | RecordUpdateHelperSingle
  | Custom;

Statement

Added in v1.0.0 Source

Statement interface

Added in v1.0.0 Source

Signature

interface Statement<A> extends Fragment, Effect<ReadonlyArray<A>, SqlError>, Pipeable {
  readonly compile: (withoutTransform?: boolean) => readonly [string, readonly Array<unknown>];
  readonly raw: Effect<unknown, SqlError>;
  readonly stream: Stream<A, SqlError>;
  readonly unprepared: Effect<readonly Array<A>, SqlError>;
  readonly values: Effect<readonly Array<readonly Array<unknown>>, SqlError>;
  readonly withoutTransform: Effect<readonly Array<A>, SqlError>;
}

Other

Signature

declare const defaultEscape: (c: string) => (str: string) => string;

Signature

declare const defaultTransforms: (
  transformer: (str: string) => string,
  nested?: boolean,
) => {
  readonly array: <A extends object>(rows: ReadonlyArray<A>) => ReadonlyArray<A>;
  readonly object: (obj: Record<string, any>) => any;
  readonly value: (value: any) => any;
};

Signature

declare const primitiveKind: (value: unknown) => PrimitiveKind;

Transformer

Signature

declare const currentTransformer: FiberRef.FiberRef<Option.Option<Statement.Transformer>>;

Signature

declare const setTransformer: (f: Statement.Transformer) => Layer.Layer<never, never, never>;

Signature

declare const withTransformer: {
  (f: Transformer): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, R>;
  <A, E, R>(effect: Effect<A, E, R>, f: Transformer): Effect<A, E, R>;
};

Signature

declare const withTransformerDisabled: <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, R>;

Type Id

FragmentId

Added in v1.0.0 Source

Signature

declare const FragmentId: unique symbol;

FragmentId type

Added in v1.0.0 Source

Signature

type FragmentId = typeof FragmentId;