AK-21/Graphite-Industrial-Intelligence
0
1import type { ColumnBuilderBaseConfig } from "../../column-builder.js";2import type { ColumnBaseConfig } from "../../column.js";3import { entityKind } from "../../entity.js";4import type { AnySQLiteTable } from "../table.js";5import { type Equal, type Writable } from "../../utils.js";6import { SQLiteColumn, SQLiteColumnBuilder } from "./common.js";7export type SQLiteTextBuilderInitial<TName extends string, TEnum extends [string, ...string[]], TLength extends number | undefined> = SQLiteTextBuilder<{8 name: TName;9 dataType: 'string';10 columnType: 'SQLiteText';11 data: TEnum[number];12 driverParam: string;13 enumValues: TEnum;14 length: TLength;15}>;16export declare class SQLiteTextBuilder<T extends ColumnBuilderBaseConfig<'string', 'SQLiteText'> & {17 length?: number | undefined;18}> extends SQLiteColumnBuilder<T, {19 length: T['length'];20 enumValues: T['enumValues'];21}, {22 length: T['length'];23}> {24 static readonly [entityKind]: string;25 constructor(name: T['name'], config: SQLiteTextConfig<'text', T['enumValues'], T['length']>);26}27export declare class SQLiteText<T extends ColumnBaseConfig<'string', 'SQLiteText'> & {28 length?: number | undefined;29}> extends SQLiteColumn<T, {30 length: T['length'];31 enumValues: T['enumValues'];32}> {33 static readonly [entityKind]: string;34 readonly enumValues: T["enumValues"];35 readonly length: T['length'];36 constructor(table: AnySQLiteTable<{37 name: T['tableName'];38 }>, config: SQLiteTextBuilder<T>['config']);39 getSQLType(): string;40}41export type SQLiteTextJsonBuilderInitial<TName extends string> = SQLiteTextJsonBuilder<{42 name: TName;43 dataType: 'json';44 columnType: 'SQLiteTextJson';45 data: unknown;46 driverParam: string;47 enumValues: undefined;48 generated: undefined;49}>;50export declare class SQLiteTextJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteTextJson'>> extends SQLiteColumnBuilder<T> {51 static readonly [entityKind]: string;52 constructor(name: T['name']);53}54export declare class SQLiteTextJson<T extends ColumnBaseConfig<'json', 'SQLiteTextJson'>> extends SQLiteColumn<T, {55 length: number | undefined;56 enumValues: T['enumValues'];57}> {58 static readonly [entityKind]: string;59 getSQLType(): string;60 mapFromDriverValue(value: string): T['data'];61 mapToDriverValue(value: T['data']): string;62}63export type SQLiteTextConfig<TMode extends 'text' | 'json' = 'text' | 'json', TEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined, TLength extends number | undefined = number | undefined> = TMode extends 'text' ? {64 mode?: TMode;65 length?: TLength;66 enum?: TEnum;67} : {68 mode?: TMode;69};70export declare function text(): SQLiteTextBuilderInitial<'', [string, ...string[]], undefined>;71export declare function text<U extends string, T extends Readonly<[U, ...U[]]>, L extends number | undefined, TMode extends 'text' | 'json' = 'text' | 'json'>(config?: SQLiteTextConfig<TMode, T | Writable<T>, L>): Equal<TMode, 'json'> extends true ? SQLiteTextJsonBuilderInitial<''> : SQLiteTextBuilderInitial<'', Writable<T>, L>;72export declare function text<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>, L extends number | undefined, TMode extends 'text' | 'json' = 'text' | 'json'>(name: TName, config?: SQLiteTextConfig<TMode, T | Writable<T>, L>): Equal<TMode, 'json'> extends true ? SQLiteTextJsonBuilderInitial<TName> : SQLiteTextBuilderInitial<TName, Writable<T>, L>;73 