用于 Drizzle 的 BoxDB 适配器
Drizzle 0.45.x的同步 SQLite驱动程序. 安装 @boxdb/client, (中文(简体) ),
@boxdb/drizzle-adapter,以及 drizzle-orm。 。 。 .
npm install @boxdb/client @boxdb/drizzle-adapter drizzle-orm
import { BoxDB } from "@boxdb/client";
import { createDrizzleDatabase, migrate } from "@boxdb/drizzle-adapter";
import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
const users = sqliteTable("users", {
id: integer().primaryKey({ autoIncrement: true }).$type<bigint>(),
name: text().notNull(),
});
await using client = await BoxDB.open("data.db");
const db = createDrizzleDatabase(client, { schema: { users } });
await migrate(db, { migrationsFolder: "./drizzle" });
const rows = await db.insert(users).values({ name: "Ada" }).returning();
驱动程序支持关系查询,加入,准备 Drizzle查询,
RETURNING原子 batchDrizzle 交易回调使用 BoxDB
内部交易处理; 嵌入式调用符。 你也可以这样
将已有的 BoxDB 交易传递给 createDrizzleDatabase。 。 。 .
写入元数据和整数单元格仍为大写. 使用 integer().$type<bigint>()
用于 Drizzle 整数列。 布尔列映射到布尔和时间戳
列映射到 Date,而不转换不相关的整数单元格。 移徙
使用 INTEGER 日记,并在一次交易中应用 SQL 和日记项.
适配器借钱 $client; 关闭自己或使用 await using。 。 。 .
对于跨 Drizzle 工作的取消, 打开 BoxDB 交易, 并带有信号
并用手柄创建 Drizzle 数据库。 基本客户所有权规则
混合 Drizzle 和直接 SQL 时适用.
框数据库列
使用适配器的列构建器声明扩展类型 :
import { decimal, instant, json, uuid } from "@boxdb/drizzle-adapter";
const invoices = sqliteTable("invoices", {
id: uuid().primaryKey(),
amount: decimal({ precision: 20, scale: 2 }).notNull(),
createdAt: instant("created_at").notNull(),
details: json().$type<{ reference: string }>(),
});
decimal, (中文(简体) ), uuid, (中文(简体) ), instant, (中文(简体) ), date, (中文(简体) ), time, (中文(简体) ), dateTime 财务报告和审定财务报表 interval 使用字符串
参数和结果。 BoxDB 验证并规范所声明的值
SQL 列; 精确的小数和时间微秒存活不转换
改为 JavaScript 编号或日期。 构建者披露本地 SQL 声明
出谋划策. time("opens") 使用诸如
"09:30:00.000000" 没有日期或区域。 通过 BoxDB 迁移创建匹配列 .
json 序列化和剖析客户端中的完整文档. $type<T>()
描述应用程序类型;它不会在运行时验证该形状.
SQL NULL 遗存 null. JSON/JSONB SQL检查和编辑没有支持.