{"version":3,"file":"geometry.cjs","names":["PgColumnBuilder","entityKind","PgColumn"],"sources":["../../../../src/pg-core/columns/postgis_extension/geometry.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { PgTable } from '~/pg-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport type { PgColumnBaseConfig } from '../common.ts';\nimport { PgColumn, PgColumnBuilder } from '../common.ts';\n\nexport class PgGeometryBuilder extends PgColumnBuilder<{\n\tdataType: 'array geometry';\n\tdata: [number, number];\n\tdriverParam: string;\n}, { srid: number | undefined }> {\n\tstatic override readonly [entityKind]: string = 'PgGeometryBuilder';\n\n\tconstructor(name: string, srid?: number) {\n\t\tsuper(name, 'array geometry', 'PgGeometry');\n\t\tthis.config.srid = srid;\n\t}\n\n\t/** @internal */\n\toverride build(table: PgTable<any>) {\n\t\treturn new PgGeometry(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class PgGeometry\n\textends PgColumn<'array geometry', PgColumnBaseConfig<'array geometry'>, { srid: number | undefined }>\n{\n\tstatic override readonly [entityKind]: string = 'PgGeometry';\n\n\t/** @internal */\n\toverride readonly codec = 'geometry(point):tuple';\n\n\treadonly srid = this.config.srid;\n\treadonly mode = 'tuple';\n\n\tgetSQLType(): string {\n\t\treturn `geometry(point${this.srid === undefined ? '' : `,${this.srid}`})`;\n\t}\n\n\toverride mapToDriverValue = (value: [number, number]): string => {\n\t\treturn `point(${value[0]} ${value[1]})`;\n\t};\n}\n\nexport class PgGeometryObjectBuilder extends PgColumnBuilder<{\n\tdataType: 'object geometry';\n\tdata: { x: number; y: number };\n\tdriverParam: string;\n}, { srid?: number }> {\n\tstatic override readonly [entityKind]: string = 'PgGeometryObjectBuilder';\n\n\tconstructor(name: string, srid: number | undefined) {\n\t\tsuper(name, 'object geometry', 'PgGeometryObject');\n\t\tthis.config.srid = srid;\n\t}\n\n\t/** @internal */\n\toverride build(table: PgTable<any>) {\n\t\treturn new PgGeometryObject(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class PgGeometryObject\n\textends PgColumn<'object geometry', PgColumnBaseConfig<'object geometry'>, { srid: number | undefined }>\n{\n\tstatic override readonly [entityKind]: string = 'PgGeometryObject';\n\n\t/** @internal */\n\toverride readonly codec = 'geometry(point)';\n\n\treadonly srid = this.config.srid;\n\treadonly mode = 'object';\n\n\tgetSQLType(): string {\n\t\treturn `geometry(point${this.srid === undefined ? '' : `,${this.srid}`})`;\n\t}\n\n\toverride mapToDriverValue = (value: { x: number; y: number }): string => {\n\t\treturn `point(${value.x} ${value.y})`;\n\t};\n}\n\nexport interface PgGeometryConfig<T extends 'tuple' | 'xy' = 'tuple' | 'xy'> {\n\tmode?: T;\n\ttype?: 'point' | (string & {});\n\tsrid?: number;\n}\n\nexport function geometry<TMode extends PgGeometryConfig['mode'] & {}>(\n\tconfig?: PgGeometryConfig<TMode>,\n): Equal<TMode, 'xy'> extends true ? PgGeometryObjectBuilder : PgGeometryBuilder;\nexport function geometry<TMode extends PgGeometryConfig['mode'] & {}>(\n\tname: string,\n\tconfig?: PgGeometryConfig<TMode>,\n): Equal<TMode, 'xy'> extends true ? PgGeometryObjectBuilder : PgGeometryBuilder;\nexport function geometry(a?: string | PgGeometryConfig, b?: PgGeometryConfig) {\n\tconst { name, config } = getColumnNameAndConfig<PgGeometryConfig>(a, b);\n\tif (!config?.mode || config.mode === 'tuple') {\n\t\treturn new PgGeometryBuilder(name, config?.srid);\n\t}\n\treturn new PgGeometryObjectBuilder(name, config?.srid);\n}\n"],"mappings":";;;;;;;AAMA,IAAa,oBAAb,cAAuCA,+CAIN;CAChC,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,MAAe;AACxC,QAAM,MAAM,kBAAkB,aAAa;AAC3C,OAAK,OAAO,OAAO;;;CAIpB,AAAS,MAAM,OAAqB;AACnC,SAAO,IAAI,WACV,OACA,KAAK,OACL;;;AAIH,IAAa,aAAb,cACSC,wCACT;CACC,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,AAAS,OAAO,KAAK,OAAO;CAC5B,AAAS,OAAO;CAEhB,aAAqB;AACpB,SAAO,iBAAiB,KAAK,SAAS,SAAY,KAAK,IAAI,KAAK,OAAO;;CAGxE,AAAS,oBAAoB,UAAoC;AAChE,SAAO,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG;;;AAIvC,IAAa,0BAAb,cAA6CD,+CAIvB;CACrB,QAA0BC,0BAAsB;CAEhD,YAAY,MAAc,MAA0B;AACnD,QAAM,MAAM,mBAAmB,mBAAmB;AAClD,OAAK,OAAO,OAAO;;;CAIpB,AAAS,MAAM,OAAqB;AACnC,SAAO,IAAI,iBACV,OACA,KAAK,OACL;;;AAIH,IAAa,mBAAb,cACSC,wCACT;CACC,QAA0BD,0BAAsB;;CAGhD,AAAkB,QAAQ;CAE1B,AAAS,OAAO,KAAK,OAAO;CAC5B,AAAS,OAAO;CAEhB,aAAqB;AACpB,SAAO,iBAAiB,KAAK,SAAS,SAAY,KAAK,IAAI,KAAK,OAAO;;CAGxE,AAAS,oBAAoB,UAA4C;AACxE,SAAO,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE;;;AAiBrC,SAAgB,SAAS,GAA+B,GAAsB;CAC7E,MAAM,EAAE,MAAM,kDAAoD,GAAG,EAAE;AACvE,KAAI,CAAC,QAAQ,QAAQ,OAAO,SAAS,QACpC,QAAO,IAAI,kBAAkB,MAAM,QAAQ,KAAK;AAEjD,QAAO,IAAI,wBAAwB,MAAM,QAAQ,KAAK"}