Core
从 suffix 输入生成 condition tree,再配合 schema 做类型约束。这一层不绑定数据库。
TypeScript Query Core
OOR 现在不是 ORM。它专注于查询输入解析、条件树、schema 校验、SQL / ES 语法生成,以及一个面向 Drizzle 的单表插件层。
import { makeNode, schema } from 'oor'
import { querySql } from 'oor/sqlite'
import { z } from 'zod'
const query = schema({
id: z.number(),
status: z.string(),
createdAt: z.date()
})
const input = query.parse({
statusIn: ['active', 'pending'],
createdAtDay: '2026-04-08',
page: 1,
size: 20
})
const node = makeNode(input)
const sql = querySql(input, undefined, {
map: {
status: { column: 'status', type: 'string' },
createdAt: { column: 'created_at', type: 'date' }
}
})从 suffix 输入生成 condition tree,再配合 schema 做类型约束。这一层不绑定数据库。
`oor/sqlite`、`oor/pg`、`oor/mysql`、`oor/es` 复用同一套 query 语义,只在方言细节上分开。
`oor/drizzle` 提供 `withTable` 与 `withDB`,适合单表查询、分页和条件写操作。
把它看成查询核心和适配层更准确。根导出只保留抽象模块,具体方言和插件走子路径,这样同一套 query 语义可以在不同项目里复用。