UNPKG

drizzle-orm

Version:

Drizzle ORM package for SQL databases

76 lines 1.89 kB
import { entityKind } from "../../entity.js"; import { getColumnNameAndConfig } from "../../utils.js"; import { PgColumn, PgColumnBuilder } from "./common.js"; class PgPointTupleBuilder extends PgColumnBuilder { static [entityKind] = "PgPointTupleBuilder"; constructor(name) { super(name, "array", "PgPointTuple"); } /** @internal */ build(table) { return new PgPointTuple( table, this.config ); } } class PgPointTuple extends PgColumn { static [entityKind] = "PgPointTuple"; getSQLType() { return "point"; } mapFromDriverValue(value) { if (typeof value === "string") { const [x, y] = value.slice(1, -1).split(","); return [Number.parseFloat(x), Number.parseFloat(y)]; } return [value.x, value.y]; } mapToDriverValue(value) { return `(${value[0]},${value[1]})`; } } class PgPointObjectBuilder extends PgColumnBuilder { static [entityKind] = "PgPointObjectBuilder"; constructor(name) { super(name, "json", "PgPointObject"); } /** @internal */ build(table) { return new PgPointObject( table, this.config ); } } class PgPointObject extends PgColumn { static [entityKind] = "PgPointObject"; getSQLType() { return "point"; } mapFromDriverValue(value) { if (typeof value === "string") { const [x, y] = value.slice(1, -1).split(","); return { x: Number.parseFloat(x), y: Number.parseFloat(y) }; } return value; } mapToDriverValue(value) { return `(${value.x},${value.y})`; } } function point(a, b) { const { name, config } = getColumnNameAndConfig(a, b); if (!config?.mode || config.mode === "tuple") { return new PgPointTupleBuilder(name); } return new PgPointObjectBuilder(name); } export { PgPointObject, PgPointObjectBuilder, PgPointTuple, PgPointTupleBuilder, point }; //# sourceMappingURL=point.js.map