UNPKG

squid

Version:

Provides SQL tagged template strings and a schema definition function.

57 lines (56 loc) 1.5 kB
import { QueryConfig } from "./config"; export interface SqlBuilder<T = any> { $type: symbol; values: T[]; buildText(nextParamID: number): string; } /** * Generate the full SQL query. */ export declare function buildSql<T>(builder: SqlBuilder<T>): QueryConfig<T>; /** * Merge the given SqlBuilders, concatenating the text values and parametrized * values. * * @example * const builder = joinSql([rawSqlBuilder("foo = "), paramSqlBuilder("bar")]) * builder.buildFragment(1) ==> { * text: "foo = $1", * values: ["bar"] * } * * @example * const builder = joinSql( * [rawSqlBuilder("foo"), paramSqlBuilder("bar")] * " = " * ) * builder.buildFragment(1) ==> { * text: "foo = $1", * values: ["bar"] * } */ export declare function joinSql<T>(builders: Array<SqlBuilder<T>>, delimiter?: string): SqlBuilder<T>; /** * Convert the given value to a SqlBuilder if it's not already. */ export declare function toSqlBuilder<T>(value: SqlBuilder<T> | T): SqlBuilder<T>; /** * A SqlBuilder that renders the given value directly. * * @example * rawSqlBuilder("hello").buildFragment(1) ==> { * text: "hello", * values: [] * } */ export declare function rawSqlBuilder(value: string): SqlBuilder<string>; /** * A SqlBuilder that marks the given value to be parametrized. * * @example * paramSqlBuilder("hello").buildFragment(1) ==> { * text: "$1", * values: ["hello"] * } */ export declare function paramSqlBuilder<T>(value: T): SqlBuilder<T>;