{"version":3,"file":"decimal.cjs","names":["CockroachColumnWithArrayBuilder","entityKind","CockroachColumn"],"sources":["../../../src/cockroach-core/columns/decimal.ts"],"sourcesContent":["import type { AnyCockroachTable, CockroachTable } from '~/cockroach-core/table.ts';\nimport type { ColumnBuilderRuntimeConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { CockroachColumn, CockroachColumnWithArrayBuilder } from './common.ts';\n\nexport class CockroachDecimalBuilder extends CockroachColumnWithArrayBuilder<\n\t{\n\t\tdataType: 'string numeric';\n\t\tdata: string;\n\t\tdriverParam: string;\n\t},\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'CockroachDecimalBuilder';\n\n\tconstructor(name: string, precision?: number, scale?: number) {\n\t\tsuper(name, 'string numeric', 'CockroachDecimal');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyCockroachTable<{ name: TTableName }>,\n\t) {\n\t\treturn new CockroachDecimal(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class CockroachDecimal<T extends ColumnBaseConfig<'string numeric'>> extends CockroachColumn<T> {\n\tstatic override readonly [entityKind]: string = 'CockroachDecimal';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(\n\t\ttable: CockroachTable<any>,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & { precision: number | undefined; scale: number | undefined },\n\t) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue = (value: unknown): string => {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn String(value);\n\t};\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `decimal(${this.precision},${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'decimal';\n\t\t} else {\n\t\t\treturn `decimal(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport class CockroachDecimalNumberBuilder extends CockroachColumnWithArrayBuilder<\n\t{\n\t\tdataType: 'number';\n\t\tdata: number;\n\t\tdriverParam: string;\n\t},\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'CockroachDecimalNumberBuilder';\n\n\tconstructor(name: string, precision?: number, scale?: number) {\n\t\tsuper(name, 'number', 'CockroachDecimalNumber');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyCockroachTable<{ name: TTableName }>,\n\t) {\n\t\treturn new CockroachDecimalNumber(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class CockroachDecimalNumber<T extends ColumnBaseConfig<'number'>> extends CockroachColumn<T> {\n\tstatic override readonly [entityKind]: string = 'CockroachDecimalNumber';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(\n\t\ttable: CockroachTable<any>,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & { precision: number | undefined; scale: number | undefined },\n\t) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue = (value: unknown): number => {\n\t\tif (typeof value === 'number') return value;\n\n\t\treturn Number(value);\n\t};\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `decimal(${this.precision},${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'decimal';\n\t\t} else {\n\t\t\treturn `decimal(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport class CockroachDecimalBigIntBuilder extends CockroachColumnWithArrayBuilder<\n\t{\n\t\tdataType: 'bigint int64';\n\t\tdata: bigint;\n\t\tdriverParam: string;\n\t},\n\t{\n\t\tprecision: number | undefined;\n\t\tscale: number | undefined;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'CockroachDecimalBigIntBuilder';\n\n\tconstructor(name: string, precision?: number, scale?: number) {\n\t\tsuper(name, 'bigint int64', 'CockroachDecimalBigInt');\n\t\tthis.config.precision = precision;\n\t\tthis.config.scale = scale;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyCockroachTable<{ name: TTableName }>,\n\t) {\n\t\treturn new CockroachDecimalBigInt(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class CockroachDecimalBigInt<T extends ColumnBaseConfig<'bigint int64'>> extends CockroachColumn<T> {\n\tstatic override readonly [entityKind]: string = 'CockroachDecimalBigInt';\n\n\treadonly precision: number | undefined;\n\treadonly scale: number | undefined;\n\n\tconstructor(\n\t\ttable: CockroachTable<any>,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & { precision: number | undefined; scale: number | undefined },\n\t) {\n\t\tsuper(table, config);\n\t\tthis.precision = config.precision;\n\t\tthis.scale = config.scale;\n\t}\n\n\toverride mapFromDriverValue = BigInt;\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\tif (this.precision !== undefined && this.scale !== undefined) {\n\t\t\treturn `decimal(${this.precision},${this.scale})`;\n\t\t} else if (this.precision === undefined) {\n\t\t\treturn 'decimal';\n\t\t} else {\n\t\t\treturn `decimal(${this.precision})`;\n\t\t}\n\t}\n}\n\nexport type CockroachDecimalConfig<\n\tT extends 'string' | 'number' | 'bigint' = 'string' | 'number' | 'bigint',\n> =\n\t| { precision: number; scale?: number; mode?: T }\n\t| { precision?: number; scale: number; mode?: T }\n\t| { precision?: number; scale?: number; mode: T };\n\nexport function decimal<TMode extends 'string' | 'number' | 'bigint'>(\n\tconfig?: CockroachDecimalConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? CockroachDecimalNumberBuilder\n\t: Equal<TMode, 'bigint'> extends true ? CockroachDecimalBigIntBuilder\n\t: CockroachDecimalBuilder;\nexport function decimal<TMode extends 'string' | 'number' | 'bigint'>(\n\tname: string,\n\tconfig?: CockroachDecimalConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? CockroachDecimalNumberBuilder\n\t: Equal<TMode, 'bigint'> extends true ? CockroachDecimalBigIntBuilder\n\t: CockroachDecimalBuilder;\nexport function decimal(a?: string | CockroachDecimalConfig, b?: CockroachDecimalConfig) {\n\tconst { name, config } = getColumnNameAndConfig<CockroachDecimalConfig>(a, b);\n\tconst mode = config?.mode;\n\treturn mode === 'number'\n\t\t? new CockroachDecimalNumberBuilder(name, config?.precision, config?.scale)\n\t\t: mode === 'bigint'\n\t\t? new CockroachDecimalBigIntBuilder(name, config?.precision, config?.scale)\n\t\t: new CockroachDecimalBuilder(name, config?.precision, config?.scale);\n}\n\n// numeric is alias for decimal\nexport const numeric = decimal;\n"],"mappings":";;;;;;;AAOA,IAAa,0BAAb,cAA6CA,sEAU3C;CACD,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,WAAoB,OAAgB;AAC7D,QAAM,MAAM,kBAAkB,mBAAmB;AACjD,OAAK,OAAO,YAAY;AACxB,OAAK,OAAO,QAAQ;;;CAIrB,AAAS,MACR,OACC;AACD,SAAO,IAAI,iBACV,OACA,KAAK,OACL;;;AAIH,IAAa,mBAAb,cAAoFC,sDAAmB;CACtG,QAA0BD,0BAAsB;CAEhD,AAAS;CACT,AAAS;CAET,YACC,OACA,QACC;AACD,QAAM,OAAO,OAAO;AACpB,OAAK,YAAY,OAAO;AACxB,OAAK,QAAQ,OAAO;;CAGrB,AAAS,sBAAsB,UAA2B;AACzD,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,SAAO,OAAO,MAAM;;CAGrB,aAAqB;AACpB,MAAI,KAAK,cAAc,UAAa,KAAK,UAAU,OAClD,QAAO,WAAW,KAAK,UAAU,GAAG,KAAK,MAAM;WACrC,KAAK,cAAc,OAC7B,QAAO;MAEP,QAAO,WAAW,KAAK,UAAU;;;AAKpC,IAAa,gCAAb,cAAmDD,sEAUjD;CACD,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,WAAoB,OAAgB;AAC7D,QAAM,MAAM,UAAU,yBAAyB;AAC/C,OAAK,OAAO,YAAY;AACxB,OAAK,OAAO,QAAQ;;;CAIrB,AAAS,MACR,OACC;AACD,SAAO,IAAI,uBACV,OACA,KAAK,OACL;;;AAIH,IAAa,yBAAb,cAAkFC,sDAAmB;CACpG,QAA0BD,0BAAsB;CAEhD,AAAS;CACT,AAAS;CAET,YACC,OACA,QACC;AACD,QAAM,OAAO,OAAO;AACpB,OAAK,YAAY,OAAO;AACxB,OAAK,QAAQ,OAAO;;CAGrB,AAAS,sBAAsB,UAA2B;AACzD,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,SAAO,OAAO,MAAM;;CAGrB,AAAS,mBAAmB;CAE5B,aAAqB;AACpB,MAAI,KAAK,cAAc,UAAa,KAAK,UAAU,OAClD,QAAO,WAAW,KAAK,UAAU,GAAG,KAAK,MAAM;WACrC,KAAK,cAAc,OAC7B,QAAO;MAEP,QAAO,WAAW,KAAK,UAAU;;;AAKpC,IAAa,gCAAb,cAAmDD,sEAUjD;CACD,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,WAAoB,OAAgB;AAC7D,QAAM,MAAM,gBAAgB,yBAAyB;AACrD,OAAK,OAAO,YAAY;AACxB,OAAK,OAAO,QAAQ;;;CAIrB,AAAS,MACR,OACC;AACD,SAAO,IAAI,uBACV,OACA,KAAK,OACL;;;AAIH,IAAa,yBAAb,cAAwFC,sDAAmB;CAC1G,QAA0BD,0BAAsB;CAEhD,AAAS;CACT,AAAS;CAET,YACC,OACA,QACC;AACD,QAAM,OAAO,OAAO;AACpB,OAAK,YAAY,OAAO;AACxB,OAAK,QAAQ,OAAO;;CAGrB,AAAS,qBAAqB;CAE9B,AAAS,mBAAmB;CAE5B,aAAqB;AACpB,MAAI,KAAK,cAAc,UAAa,KAAK,UAAU,OAClD,QAAO,WAAW,KAAK,UAAU,GAAG,KAAK,MAAM;WACrC,KAAK,cAAc,OAC7B,QAAO;MAEP,QAAO,WAAW,KAAK,UAAU;;;AAuBpC,SAAgB,QAAQ,GAAqC,GAA4B;CACxF,MAAM,EAAE,MAAM,kDAA0D,GAAG,EAAE;CAC7E,MAAM,OAAO,QAAQ;AACrB,QAAO,SAAS,WACb,IAAI,8BAA8B,MAAM,QAAQ,WAAW,QAAQ,MAAM,GACzE,SAAS,WACT,IAAI,8BAA8B,MAAM,QAAQ,WAAW,QAAQ,MAAM,GACzE,IAAI,wBAAwB,MAAM,QAAQ,WAAW,QAAQ,MAAM;;AAIvE,MAAa,UAAU"}