drizzle-orm
Version:
Drizzle ORM package for SQL databases
70 lines • 1.73 kB
JavaScript
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