#OOR 简介
oor 是一个小型 query core。
它负责:
- suffix 风格查询输入
query -> condition tree- schema 校验
- SQL / ES 语法生成
- Drizzle 单表插件
#什么时候用哪个入口
| 入口 | 适合场景 | 说明 |
|---|---|---|
oor | 只想处理 suffix / condition / schema / date | 根入口只导出抽象核心 |
oor/sqlite | 生成 SQLite 风格 SQL | 只生成语法,不连接数据库 |
oor/pg | 生成 PostgreSQL 风格 SQL | 使用 $1 这类占位符 |
oor/mysql | 生成 MySQL 风格 SQL | 使用反引号和 ? 占位符 |
oor/es | 生成 Elasticsearch query/body | 支持聚合 helpers |
oor/drizzle | 单表查询、分页、条件写入 | 建议优先用于日常 Drizzle 表操作 |
#一条主线
TypeScript
import { makeNode, schema } from 'oor'
import { querySql } from 'oor/sqlite'
import { z } from 'zod'
const query = schema({
status: z.string(),
createdAt: z.date()
})
const input = query.parse({
statusIn: ['active', 'pending'],
createdAtDay: '2026-04-08'
})
const node = makeNode(input)
const sql = querySql(input, undefined, {
map: {
status: { column: 'status', type: 'string' },
createdAt: { column: 'created_at', type: 'date' }
}
})
同一份 input,可以继续交给:
makeNodequerySql/whereSqlesBodywithTable
#结构
core:condition/suffix/schema/sql/typeadapter:pg/mysql/sqlite/esutils:date.tsdrizzle: Drizzle 插件层typeorm: 预留位