UNPKG

drizzle-orm

Version:

Drizzle ORM package for SQL databases

70 lines 1.73 kB
import { entityKind } from "../../../entity.js"; import { getColumnNameAndConfig } from "../../../utils.js"; import { PgColumn, PgColumnBuilder } from "../common.js"; import { parseEWKB } from "./utils.js"; class PgGeometryBuilder extends PgColumnBuilder { static [entityKind] = "PgGeometryBuilder"; constructor(name) { super(name, "array", "PgGeometry"); } /** @internal */ build(table) { return new PgGeometry( table, this.config ); } } class PgGeometry extends PgColumn { static [entityKind] = "PgGeometry"; getSQLType() { return "geometry(point)"; } mapFromDriverValue(value) { return parseEWKB(value); } mapToDriverValue(value) { return `point(${value[0]} ${value[1]})`; } } class PgGeometryObjectBuilder extends PgColumnBuilder { static [entityKind] = "PgGeometryObjectBuilder"; constructor(name) { super(name, "json", "PgGeometryObject"); } /** @internal */ build(table) { return new PgGeometryObject( table, this.config ); } } class PgGeometryObject extends PgColumn { static [entityKind] = "PgGeometryObject"; getSQLType() { return "geometry(point)"; } mapFromDriverValue(value) { const parsed = parseEWKB(value); return { x: parsed[0], y: parsed[1] }; } mapToDriverValue(value) { return `point(${value.x} ${value.y})`; } } function geometry(a, b) { const { name, config } = getColumnNameAndConfig(a, b); if (!config?.mode || config.mode === "tuple") { return new PgGeometryBuilder(name); } return new PgGeometryObjectBuilder(name); } export { PgGeometry, PgGeometryBuilder, PgGeometryObject, PgGeometryObjectBuilder, geometry }; //# sourceMappingURL=geometry.js.map