{"version":3,"file":"line.cjs","names":["PgColumnBuilder","entityKind","PgColumn"],"sources":["../../../src/pg-core/columns/line.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { PgTable } from '~/pg-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport class PgLineBuilder extends PgColumnBuilder<{\n\tdataType: 'array line';\n\tdata: [number, number, number];\n\tdriverParam: number | string;\n}> {\n\tstatic override readonly [entityKind]: string = 'PgLineBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'array line', 'PgLine');\n\t}\n\n\t/** @internal */\n\toverride build(table: PgTable<any>) {\n\t\treturn new PgLineTuple(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class PgLineTuple extends PgColumn<'array line'> {\n\tstatic override readonly [entityKind]: string = 'PgLine';\n\n\t/** @internal */\n\toverride readonly codec = 'line:tuple';\n\n\treadonly mode = 'tuple';\n\n\tgetSQLType(): string {\n\t\treturn 'line';\n\t}\n\n\toverride mapToDriverValue = (value: [number, number, number]): string => {\n\t\treturn `{${value[0]},${value[1]},${value[2]}}`;\n\t};\n}\n\nexport class PgLineABCBuilder extends PgColumnBuilder<{\n\tdataType: 'object line';\n\tdata: { a: number; b: number; c: number };\n\tdriverParam: string;\n}> {\n\tstatic override readonly [entityKind]: string = 'PgLineABCBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'object line', 'PgLineABC');\n\t}\n\n\t/** @internal */\n\toverride build(table: PgTable<any>) {\n\t\treturn new PgLineABC(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class PgLineABC extends PgColumn<'object line'> {\n\tstatic override readonly [entityKind]: string = 'PgLineABC';\n\n\t/** @internal */\n\toverride readonly codec = 'line';\n\n\treadonly mode = 'abc';\n\n\tgetSQLType(): string {\n\t\treturn 'line';\n\t}\n\n\toverride mapToDriverValue = (value: { a: number; b: number; c: number }): string => {\n\t\treturn `{${value.a},${value.b},${value.c}}`;\n\t};\n}\n\nexport interface PgLineTypeConfig<T extends 'tuple' | 'abc' = 'tuple' | 'abc'> {\n\tmode?: T;\n}\n\nexport function line<TMode extends PgLineTypeConfig['mode'] & {}>(\n\tconfig?: PgLineTypeConfig<TMode>,\n): Equal<TMode, 'abc'> extends true ? PgLineABCBuilder\n\t: PgLineBuilder;\nexport function line<TMode extends PgLineTypeConfig['mode'] & {}>(\n\tname: string,\n\tconfig?: PgLineTypeConfig<TMode>,\n): Equal<TMode, 'abc'> extends true ? PgLineABCBuilder\n\t: PgLineBuilder;\nexport function line(a?: string | PgLineTypeConfig, b?: PgLineTypeConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgLineTypeConfig>(a, b);\n\tif (!config?.mode || config.mode === 'tuple') {\n\t\treturn new PgLineBuilder(name);\n\t}\n\treturn new PgLineABCBuilder(name);\n}\n"],"mappings":";;;;;;;AAKA,IAAa,gBAAb,cAAmCA,+CAIhC;CACF,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc;AACzB,QAAM,MAAM,cAAc,SAAS;;;CAIpC,AAAS,MAAM,OAAqB;AACnC,SAAO,IAAI,YACV,OACA,KAAK,OACL;;;AAIH,IAAa,cAAb,cAAiCC,wCAAuB;CACvD,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,AAAS,OAAO;CAEhB,aAAqB;AACpB,SAAO;;CAGR,AAAS,oBAAoB,UAA4C;AACxE,SAAO,IAAI,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG;;;AAI9C,IAAa,mBAAb,cAAsCD,+CAInC;CACF,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc;AACzB,QAAM,MAAM,eAAe,YAAY;;;CAIxC,AAAS,MAAM,OAAqB;AACnC,SAAO,IAAI,UACV,OACA,KAAK,OACL;;;AAIH,IAAa,YAAb,cAA+BC,wCAAwB;CACtD,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,AAAS,OAAO;CAEhB,aAAqB;AACpB,SAAO;;CAGR,AAAS,oBAAoB,UAAuD;AACnF,SAAO,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;AAiB3C,SAAgB,KAAK,GAA+B,GAAsB;CACzE,MAAM,EAAE,MAAM,kDAAoD,GAAG,EAAE;AACvE,KAAI,CAAC,QAAQ,QAAQ,OAAO,SAAS,QACpC,QAAO,IAAI,cAAc,KAAK;AAE/B,QAAO,IAAI,iBAAiB,KAAK"}