{"version":3,"file":"char.cjs","names":["MySqlStringColumnBaseBuilder","entityKind","MySqlStringBaseColumn"],"sources":["../../../src/mysql-core/columns/char.ts"],"sourcesContent":["import type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { MySqlTable } from '~/mysql-core/table.ts';\nimport { type Equal, getColumnNameAndConfig, type Writable } from '~/utils.ts';\nimport { MySqlStringBaseColumn, MySqlStringColumnBaseBuilder } from './string.common.ts';\n\nexport class MySqlCharBuilder<\n\tTEnum extends [string, ...string[]],\n> extends MySqlStringColumnBaseBuilder<\n\t{\n\t\tdataType: Equal<TEnum, [string, ...string[]]> extends true ? 'string' : 'string enum';\n\t\tdata: TEnum[number];\n\t\tdriverParam: number | string;\n\t\tenumValues: TEnum;\n\t},\n\t{ enum?: TEnum; length: number; setLength: boolean }\n> {\n\tstatic override readonly [entityKind]: string = 'MySqlCharBuilder';\n\n\tconstructor(name: string, config: MySqlCharConfig<TEnum>) {\n\t\tsuper(name, config.enum?.length ? 'string enum' : 'string', 'MySqlChar');\n\t\tthis.config.length = (config.length ?? 1) as number;\n\t\tthis.config.setLength = config.length !== undefined;\n\t\tthis.config.enum = config.enum;\n\t}\n\n\t/** @internal */\n\toverride build(table: MySqlTable) {\n\t\treturn new MySqlChar(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class MySqlChar<T extends ColumnBaseConfig<'string' | 'string enum'>>\n\textends MySqlStringBaseColumn<T, { enum?: T['enumValues']; length: number; setLength: boolean }>\n{\n\tstatic override readonly [entityKind]: string = 'MySqlChar';\n\n\t/** @internal */\n\toverride readonly codec = 'char';\n\n\toverride readonly enumValues = this.config.enum;\n\n\tgetSQLType(): string {\n\t\treturn this.config.setLength ? `char(${this.length})` : `char`;\n\t}\n}\n\nexport interface MySqlCharConfig<\n\tTEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined,\n> {\n\tenum?: TEnum;\n\tlength?: number;\n}\n\nexport function char<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tconfig?: MySqlCharConfig<T | Writable<T>>,\n): MySqlCharBuilder<Writable<T>>;\nexport function char<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n>(\n\tname: string,\n\tconfig?: MySqlCharConfig<T | Writable<T>>,\n): MySqlCharBuilder<Writable<T>>;\nexport function char(a?: string | MySqlCharConfig, b: MySqlCharConfig = {}): any {\n\tconst { name, config } = getColumnNameAndConfig<MySqlCharConfig>(a, b);\n\treturn new MySqlCharBuilder(name, config as any);\n}\n"],"mappings":";;;;;;;AAMA,IAAa,mBAAb,cAEUA,sEAQR;CACD,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,QAAgC;AACzD,QAAM,MAAM,OAAO,MAAM,SAAS,gBAAgB,UAAU,YAAY;AACxE,OAAK,OAAO,SAAU,OAAO,UAAU;AACvC,OAAK,OAAO,YAAY,OAAO,WAAW;AAC1C,OAAK,OAAO,OAAO,OAAO;;;CAI3B,AAAS,MAAM,OAAmB;AACjC,SAAO,IAAI,UACV,OACA,KAAK,OACL;;;AAIH,IAAa,YAAb,cACSC,+DACT;CACC,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,AAAkB,aAAa,KAAK,OAAO;CAE3C,aAAqB;AACpB,SAAO,KAAK,OAAO,YAAY,QAAQ,KAAK,OAAO,KAAK;;;AAqB1D,SAAgB,KAAK,GAA8B,IAAqB,EAAE,EAAO;CAChF,MAAM,EAAE,MAAM,kDAAmD,GAAG,EAAE;AACtE,QAAO,IAAI,iBAAiB,MAAM,OAAc"}