{"version":3,"file":"date.cjs","names":["PgDateColumnBuilder","entityKind","PgColumn"],"sources":["../../../src/pg-core/columns/date.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { PgTable } from '~/pg-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { PgColumn } from './common.ts';\nimport { PgDateColumnBuilder } from './date.common.ts';\n\nexport class PgDateBuilder extends PgDateColumnBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: string;\n}> {\n\tstatic override readonly [entityKind]: string = 'PgDateBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'object date', 'PgDate');\n\t}\n\n\t/** @internal */\n\toverride build(table: PgTable<any>) {\n\t\treturn new PgDate(table, this.config as any);\n\t}\n}\n\nexport class PgDate extends PgColumn<'object date'> {\n\tstatic override readonly [entityKind]: string = 'PgDate';\n\n\t/** @internal */\n\toverride readonly codec = 'date';\n\n\tgetSQLType(): string {\n\t\treturn 'date';\n\t}\n\n\toverride mapToDriverValue = function(value: Date | string): string {\n\t\tif (typeof value === 'string') return value;\n\t\treturn value.toISOString();\n\t};\n}\n\nexport class PgDateStringBuilder extends PgDateColumnBuilder<{\n\tdataType: 'string date';\n\tdata: string;\n\tdriverParam: string;\n}> {\n\tstatic override readonly [entityKind]: string = 'PgDateStringBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'string date', 'PgDateString');\n\t}\n\n\t/** @internal */\n\toverride build(table: PgTable<any>) {\n\t\treturn new PgDateString(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class PgDateString extends PgColumn<'string date'> {\n\tstatic override readonly [entityKind]: string = 'PgDateString';\n\n\t/** @internal */\n\toverride readonly codec = 'date:string';\n\n\tgetSQLType(): string {\n\t\treturn 'date';\n\t}\n\n\toverride mapToDriverValue = (value: Date | string): string => {\n\t\tif (typeof value === 'string') return value;\n\t\treturn value.toISOString();\n\t};\n}\n\nexport interface PgDateConfig<T extends 'date' | 'string' = 'date' | 'string'> {\n\tmode: T;\n}\n\nexport function date<TMode extends PgDateConfig['mode'] & {}>(\n\tconfig?: PgDateConfig<TMode>,\n): Equal<TMode, 'date'> extends true ? PgDateBuilder : PgDateStringBuilder;\nexport function date<TMode extends PgDateConfig['mode'] & {}>(\n\tname: string,\n\tconfig?: PgDateConfig<TMode>,\n): Equal<TMode, 'date'> extends true ? PgDateBuilder : PgDateStringBuilder;\nexport function date(a?: string | PgDateConfig, b?: PgDateConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgDateConfig>(a, b);\n\tif (config?.mode === 'date') {\n\t\treturn new PgDateBuilder(name);\n\t}\n\treturn new PgDateStringBuilder(name);\n}\n"],"mappings":";;;;;;;;AAMA,IAAa,gBAAb,cAAmCA,wDAIhC;CACF,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc;AACzB,QAAM,MAAM,eAAe,SAAS;;;CAIrC,AAAS,MAAM,OAAqB;AACnC,SAAO,IAAI,OAAO,OAAO,KAAK,OAAc;;;AAI9C,IAAa,SAAb,cAA4BC,wCAAwB;CACnD,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,aAAqB;AACpB,SAAO;;CAGR,AAAS,mBAAmB,SAAS,OAA8B;AAClE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO,MAAM,aAAa;;;AAI5B,IAAa,sBAAb,cAAyCD,wDAItC;CACF,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc;AACzB,QAAM,MAAM,eAAe,eAAe;;;CAI3C,AAAS,MAAM,OAAqB;AACnC,SAAO,IAAI,aACV,OACA,KAAK,OACL;;;AAIH,IAAa,eAAb,cAAkCC,wCAAwB;CACzD,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,aAAqB;AACpB,SAAO;;CAGR,AAAS,oBAAoB,UAAiC;AAC7D,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO,MAAM,aAAa;;;AAe5B,SAAgB,KAAK,GAA2B,GAAkB;CACjE,MAAM,EAAE,MAAM,kDAAgD,GAAG,EAAE;AACnE,KAAI,QAAQ,SAAS,OACpB,QAAO,IAAI,cAAc,KAAK;AAE/B,QAAO,IAAI,oBAAoB,KAAK"}