import * as v from "valibot"; /** * SQL オブジェクトです。 */ interface Sql { /** * SQL の文字列です。 */ readonly text: string; /** * SQL の実行時に渡すパラメーターです。 */ readonly values: readonly unknown[]; } /** * カラムとそれに対応する値のデータ型などの定義です。 * * @template TKey カラム名の JavaScript 表現です。 */ export type Column = Readonly<{ /** * カラム名の JavaScript 表現です。データベースのカラム名はスネークケースですが、 * JavaScript 表現では、キャメルケースになります。 */ key: TKey; /** * `SELECT` に埋め込むカラムを構築します。 */ build: (table?: string) => Sql; /** * 値の Valibot スキーマです。 */ schema: v.ObjectEntries[string]; }>; /** * カラムの定義です。 */ type ColumnDefinition = readonly [ /** * データベースにおけるカラム名です。 */ name: string, /** * カラムの値のデータ型です。 */ schema: v.ObjectEntries[string] | "Timestamp" ]; /** * 行データを取得するために、各列を定義します。 * * @param columnMap 列のマップです。 * @returns 各列の定義です。 */ export default function defineColumns(columnMap: { readonly [P in TKey]: ColumnDefinition; }): Column[]; export {}; //# sourceMappingURL=_define-columns.d.ts.map