{"version":3,"file":"interval.cjs","names":["CockroachColumnWithArrayBuilder","entityKind","CockroachColumn"],"sources":["../../../src/cockroach-core/columns/interval.ts"],"sourcesContent":["import type { AnyCockroachTable } from '~/cockroach-core/table.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { getColumnNameAndConfig } from '~/utils.ts';\nimport { CockroachColumn, CockroachColumnWithArrayBuilder } from './common.ts';\nimport type { Precision } from './timestamp.ts';\n\nexport class CockroachIntervalBuilder extends CockroachColumnWithArrayBuilder<{\n\tdataType: 'string interval';\n\tdata: string;\n\tdriverParam: string;\n}, { intervalConfig: IntervalConfig }> {\n\tstatic override readonly [entityKind]: string = 'CockroachIntervalBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tintervalConfig: IntervalConfig,\n\t) {\n\t\tsuper(name, 'string interval', 'CockroachInterval');\n\t\tthis.config.intervalConfig = intervalConfig;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyCockroachTable<{ name: TTableName }>,\n\t) {\n\t\treturn new CockroachInterval(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class CockroachInterval<T extends ColumnBaseConfig<'string interval'>>\n\textends CockroachColumn<T, { intervalConfig: IntervalConfig }>\n{\n\tstatic override readonly [entityKind]: string = 'CockroachInterval';\n\n\treadonly fields: IntervalConfig['fields'] = this.config.intervalConfig.fields;\n\treadonly precision: IntervalConfig['precision'] = this.config.intervalConfig.precision;\n\n\tgetSQLType(): string {\n\t\tconst fields = this.fields ? ` ${this.fields}` : '';\n\t\tconst precision = this.precision ? `(${this.precision})` : '';\n\t\treturn `interval${fields}${precision}`;\n\t}\n}\n\nexport interface IntervalConfig {\n\tfields?:\n\t\t| 'year'\n\t\t| 'month'\n\t\t| 'day'\n\t\t| 'hour'\n\t\t| 'minute'\n\t\t| 'second'\n\t\t| 'year to month'\n\t\t| 'day to hour'\n\t\t| 'day to minute'\n\t\t| 'day to second'\n\t\t| 'hour to minute'\n\t\t| 'hour to second'\n\t\t| 'minute to second';\n\tprecision?: Precision;\n}\n\nexport function interval(\n\tconfig?: IntervalConfig,\n): CockroachIntervalBuilder;\nexport function interval(\n\tname: string,\n\tconfig?: IntervalConfig,\n): CockroachIntervalBuilder;\nexport function interval(a?: string | IntervalConfig, b: IntervalConfig = {}) {\n\tconst { name, config } = getColumnNameAndConfig<IntervalConfig>(a, b);\n\treturn new CockroachIntervalBuilder(name, config);\n}\n"],"mappings":";;;;;;;AAOA,IAAa,2BAAb,cAA8CA,sEAIP;CACtC,QAA0BC,0BAAsB;CAEhD,YACC,MACA,gBACC;AACD,QAAM,MAAM,mBAAmB,oBAAoB;AACnD,OAAK,OAAO,iBAAiB;;;CAI9B,AAAS,MACR,OACC;AACD,SAAO,IAAI,kBACV,OACA,KAAK,OACL;;;AAIH,IAAa,oBAAb,cACSC,sDACT;CACC,QAA0BD,0BAAsB;CAEhD,AAAS,SAAmC,KAAK,OAAO,eAAe;CACvE,AAAS,YAAyC,KAAK,OAAO,eAAe;CAE7E,aAAqB;AAGpB,SAAO,WAFQ,KAAK,SAAS,IAAI,KAAK,WAAW,KAC/B,KAAK,YAAY,IAAI,KAAK,UAAU,KAAK;;;AA8B7D,SAAgB,SAAS,GAA6B,IAAoB,EAAE,EAAE;CAC7E,MAAM,EAAE,MAAM,kDAAkD,GAAG,EAAE;AACrE,QAAO,IAAI,yBAAyB,MAAM,OAAO"}