{"version":3,"file":"string.cjs","names":["CockroachColumnWithArrayBuilder","entityKind","CockroachColumn"],"sources":["../../../src/cockroach-core/columns/string.ts"],"sourcesContent":["import type { AnyCockroachTable } from '~/cockroach-core/table.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Equal, getColumnNameAndConfig, type Writable } from '~/utils.ts';\nimport { CockroachColumn, CockroachColumnWithArrayBuilder } from './common.ts';\n\nexport class CockroachStringBuilder<TEnum extends [string, ...string[]]> extends CockroachColumnWithArrayBuilder<\n\t{\n\t\tdataType: Equal<TEnum, [string, ...string[]]> extends true ? 'string' : 'string enum';\n\t\tdata: TEnum[number];\n\t\tenumValues: TEnum;\n\t\tdriverParam: string;\n\t},\n\t{ enumValues: TEnum | undefined; length: number | undefined }\n> {\n\tstatic override readonly [entityKind]: string = 'CockroachStringBuilder';\n\n\tconstructor(name: string, config: CockroachStringConfig<TEnum>) {\n\t\tsuper(name, config.enum?.length ? 'string enum' : 'string', 'CockroachString');\n\t\tthis.config.enumValues = config.enum;\n\t\tthis.config.length = config.length;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyCockroachTable<{ name: TTableName }>,\n\t) {\n\t\treturn new CockroachString(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class CockroachString<\n\tT extends ColumnBaseConfig<'string' | 'string enum'>,\n> extends CockroachColumn<T, { enumValues: [string, ...string[]] | undefined }> {\n\tstatic override readonly [entityKind]: string = 'CockroachString';\n\n\toverride readonly enumValues = this.config.enumValues;\n\n\tgetSQLType(): string {\n\t\treturn this.length === undefined ? `string` : `string(${this.length})`;\n\t}\n}\n\nexport interface CockroachStringConfig<\n\tTEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined,\n> {\n\tenum?: TEnum;\n\tlength?: number | undefined;\n}\n\nexport interface CockroachTextConfig<\n\tTEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined,\n> {\n\tenum?: TEnum;\n}\n\nexport function string(): CockroachStringBuilder<[string, ...string[]]>;\nexport function string<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n>(\n\tconfig?: CockroachStringConfig<T | Writable<T>>,\n): CockroachStringBuilder<Writable<T>>;\nexport function string<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n>(\n\tname: string,\n\tconfig?: CockroachStringConfig<T | Writable<T>>,\n): CockroachStringBuilder<Writable<T>>;\nexport function string(a?: string | CockroachStringConfig, b: CockroachStringConfig = {}): any {\n\tconst { name, config } = getColumnNameAndConfig<CockroachStringConfig>(a, b);\n\treturn new CockroachStringBuilder(name, config as any);\n}\n\n// text is alias for string but without ability to add length\nexport function text(): CockroachStringBuilder<[string, ...string[]]>;\nexport function text<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n>(\n\tconfig?: CockroachTextConfig<T | Writable<T>>,\n): CockroachStringBuilder<Writable<T>>;\nexport function text<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n>(\n\tname: string,\n\tconfig?: CockroachTextConfig<T | Writable<T>>,\n): CockroachStringBuilder<Writable<T>>;\nexport function text(a?: string | CockroachStringConfig, b: CockroachStringConfig = {}): any {\n\tconst { name, config } = getColumnNameAndConfig<CockroachStringConfig>(a, b);\n\treturn new CockroachStringBuilder(name, config as any);\n}\n"],"mappings":";;;;;;;AAMA,IAAa,yBAAb,cAAiFA,sEAQ/E;CACD,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,QAAsC;AAC/D,QAAM,MAAM,OAAO,MAAM,SAAS,gBAAgB,UAAU,kBAAkB;AAC9E,OAAK,OAAO,aAAa,OAAO;AAChC,OAAK,OAAO,SAAS,OAAO;;;CAI7B,AAAS,MACR,OACC;AACD,SAAO,IAAI,gBACV,OACA,KAAK,OACL;;;AAIH,IAAa,kBAAb,cAEUC,sDAAsE;CAC/E,QAA0BD,0BAAsB;CAEhD,AAAkB,aAAa,KAAK,OAAO;CAE3C,aAAqB;AACpB,SAAO,KAAK,WAAW,SAAY,WAAW,UAAU,KAAK,OAAO;;;AA+BtE,SAAgB,OAAO,GAAoC,IAA2B,EAAE,EAAO;CAC9F,MAAM,EAAE,MAAM,kDAAyD,GAAG,EAAE;AAC5E,QAAO,IAAI,uBAAuB,MAAM,OAAc;;AAkBvD,SAAgB,KAAK,GAAoC,IAA2B,EAAE,EAAO;CAC5F,MAAM,EAAE,MAAM,kDAAyD,GAAG,EAAE;AAC5E,QAAO,IAAI,uBAAuB,MAAM,OAAc"}