{"version":3,"file":"datetime.cjs","names":["MsSqlDateColumnBaseBuilder","entityKind","MsSqlColumn"],"sources":["../../../src/mssql-core/columns/datetime.ts"],"sourcesContent":["import type { ColumnBuilderRuntimeConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyMsSqlTable, MsSqlTable } from '~/mssql-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { MsSqlColumn } from './common.ts';\nimport { MsSqlDateColumnBaseBuilder } from './date.common.ts';\n\nexport class MsSqlDateTimeBuilder extends MsSqlDateColumnBaseBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: string | Date;\n}, MsSqlDatetimeConfig> {\n\tstatic override readonly [entityKind]: string = 'MsSqlDateTimeBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'object date', 'MsSqlDateTime');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyMsSqlTable<{ name: TTableName }>,\n\t) {\n\t\treturn new MsSqlDateTime(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class MsSqlDateTime<T extends ColumnBaseConfig<'object date'>> extends MsSqlColumn<T> {\n\tstatic override readonly [entityKind]: string = 'MsSqlDateTime';\n\n\tconstructor(\n\t\ttable: MsSqlTable<any>,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & MsSqlDatetimeConfig,\n\t) {\n\t\tsuper(table, config);\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `datetime`;\n\t}\n}\n\nexport class MsSqlDateTimeStringBuilder extends MsSqlDateColumnBaseBuilder<{\n\tdataType: 'string datetime';\n\tdata: string;\n\tdriverParam: string | Date;\n}, MsSqlDatetimeConfig> {\n\tstatic override readonly [entityKind]: string = 'MsSqlDateTimeStringBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'string datetime', 'MsSqlDateTimeString');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyMsSqlTable<{ name: TTableName }>,\n\t) {\n\t\treturn new MsSqlDateTimeString(\n\t\t\ttable,\n\t\t\tthis.config,\n\t\t);\n\t}\n}\n\nexport class MsSqlDateTimeString<T extends ColumnBaseConfig<'string datetime'>> extends MsSqlColumn<T> {\n\tstatic override readonly [entityKind]: string = 'MsSqlDateTimeString';\n\n\tconstructor(\n\t\ttable: MsSqlTable<any>,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & MsSqlDatetimeConfig,\n\t) {\n\t\tsuper(table, config);\n\t}\n\n\tgetSQLType(): string {\n\t\treturn 'datetime';\n\t}\n\n\toverride mapFromDriverValue = (value: Date | string | null): string | null => {\n\t\treturn typeof value === 'string' ? value : value?.toISOString() ?? null;\n\t};\n}\n\nexport interface MsSqlDatetimeConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {\n\tmode?: TMode;\n}\n\nexport function datetime<TMode extends MsSqlDatetimeConfig['mode'] & {}>(\n\tconfig?: MsSqlDatetimeConfig<TMode>,\n): Equal<TMode, 'string'> extends true ? MsSqlDateTimeStringBuilder : MsSqlDateTimeBuilder;\nexport function datetime<TMode extends MsSqlDatetimeConfig['mode'] & {}>(\n\tname: string,\n\tconfig?: MsSqlDatetimeConfig<TMode>,\n): Equal<TMode, 'string'> extends true ? MsSqlDateTimeStringBuilder : MsSqlDateTimeBuilder;\nexport function datetime(a?: string | MsSqlDatetimeConfig, b?: MsSqlDatetimeConfig) {\n\tconst { name, config } = getColumnNameAndConfig<MsSqlDatetimeConfig | undefined>(a, b);\n\tif (config?.mode === 'string') {\n\t\treturn new MsSqlDateTimeStringBuilder(name);\n\t}\n\treturn new MsSqlDateTimeBuilder(name);\n}\n"],"mappings":";;;;;;;;AAQA,IAAa,uBAAb,cAA0CA,kEAIlB;CACvB,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc;AACzB,QAAM,MAAM,eAAe,gBAAgB;;;CAI5C,AAAS,MACR,OACC;AACD,SAAO,IAAI,cACV,OACA,KAAK,OACL;;;AAIH,IAAa,gBAAb,cAA8EC,8CAAe;CAC5F,QAA0BD,0BAAsB;CAEhD,YACC,OACA,QACC;AACD,QAAM,OAAO,OAAO;;CAGrB,aAAqB;AACpB,SAAO;;;AAIT,IAAa,6BAAb,cAAgDD,kEAIxB;CACvB,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc;AACzB,QAAM,MAAM,mBAAmB,sBAAsB;;;CAItD,AAAS,MACR,OACC;AACD,SAAO,IAAI,oBACV,OACA,KAAK,OACL;;;AAIH,IAAa,sBAAb,cAAwFC,8CAAe;CACtG,QAA0BD,0BAAsB;CAEhD,YACC,OACA,QACC;AACD,QAAM,OAAO,OAAO;;CAGrB,aAAqB;AACpB,SAAO;;CAGR,AAAS,sBAAsB,UAA+C;AAC7E,SAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,aAAa,IAAI;;;AAerE,SAAgB,SAAS,GAAkC,GAAyB;CACnF,MAAM,EAAE,MAAM,kDAAmE,GAAG,EAAE;AACtF,KAAI,QAAQ,SAAS,SACpB,QAAO,IAAI,2BAA2B,KAAK;AAE5C,QAAO,IAAI,qBAAqB,KAAK"}