UNPKG

drizzle-orm

Version:

Drizzle ORM package for SQL databases

100 lines 2.92 kB
import { entityKind } from "../../entity.js"; import { getColumnNameAndConfig, textDecoder } from "../../utils.js"; import { SQLiteColumn, SQLiteColumnBuilder } from "./common.js"; class SQLiteBigIntBuilder extends SQLiteColumnBuilder { static [entityKind] = "SQLiteBigIntBuilder"; constructor(name) { super(name, "bigint", "SQLiteBigInt"); } /** @internal */ build(table) { return new SQLiteBigInt(table, this.config); } } class SQLiteBigInt extends SQLiteColumn { static [entityKind] = "SQLiteBigInt"; getSQLType() { return "blob"; } mapFromDriverValue(value) { if (typeof Buffer !== "undefined" && Buffer.from) { const buf = Buffer.isBuffer(value) ? value : value instanceof ArrayBuffer ? Buffer.from(value) : value.buffer ? Buffer.from(value.buffer, value.byteOffset, value.byteLength) : Buffer.from(value); return BigInt(buf.toString("utf8")); } return BigInt(textDecoder.decode(value)); } mapToDriverValue(value) { return Buffer.from(value.toString()); } } class SQLiteBlobJsonBuilder extends SQLiteColumnBuilder { static [entityKind] = "SQLiteBlobJsonBuilder"; constructor(name) { super(name, "json", "SQLiteBlobJson"); } /** @internal */ build(table) { return new SQLiteBlobJson( table, this.config ); } } class SQLiteBlobJson extends SQLiteColumn { static [entityKind] = "SQLiteBlobJson"; getSQLType() { return "blob"; } mapFromDriverValue(value) { if (typeof Buffer !== "undefined" && Buffer.from) { const buf = Buffer.isBuffer(value) ? value : value instanceof ArrayBuffer ? Buffer.from(value) : value.buffer ? Buffer.from(value.buffer, value.byteOffset, value.byteLength) : Buffer.from(value); return JSON.parse(buf.toString("utf8")); } return JSON.parse(textDecoder.decode(value)); } mapToDriverValue(value) { return Buffer.from(JSON.stringify(value)); } } class SQLiteBlobBufferBuilder extends SQLiteColumnBuilder { static [entityKind] = "SQLiteBlobBufferBuilder"; constructor(name) { super(name, "buffer", "SQLiteBlobBuffer"); } /** @internal */ build(table) { return new SQLiteBlobBuffer(table, this.config); } } class SQLiteBlobBuffer extends SQLiteColumn { static [entityKind] = "SQLiteBlobBuffer"; mapFromDriverValue(value) { if (Buffer.isBuffer(value)) { return value; } return Buffer.from(value); } getSQLType() { return "blob"; } } function blob(a, b) { const { name, config } = getColumnNameAndConfig(a, b); if (config?.mode === "json") { return new SQLiteBlobJsonBuilder(name); } if (config?.mode === "bigint") { return new SQLiteBigIntBuilder(name); } return new SQLiteBlobBufferBuilder(name); } export { SQLiteBigInt, SQLiteBigIntBuilder, SQLiteBlobBuffer, SQLiteBlobBufferBuilder, SQLiteBlobJson, SQLiteBlobJsonBuilder, blob }; //# sourceMappingURL=blob.js.map