core 快速参考
@ts-grm/core 提供模型、视图、Input、DSL 的类型与运行时(不依赖数据库)。本页是前五章用到的 API 速查;每个条目标注详细页码。
model:实体声明
model(name, idKey, class, configurator?) // 普通实体(继承页)
model.abstract(name, idKey, class, configurator?) // 抽象基类(可查询,不实例化)
model.extends(superModel)(name, class, configurator?) // 继承;默认独立子表,TABLE_INHERIT 合表
- 配置器
ctx:ctx.table({ name, discriminator, discriminatorValue })、ctx.unique(...); - 常量:
TABLE_INHERIT(单表继承)、DISCRIMINATOR_VALUE_MODEL_NAME(判别值=模型名); - 详见:「核心概念 → 模型」「继承与多态」「单表继承」。
prop:属性声明
| 族 | 写法 |
|---|---|
| 整数 | i8() i16() i32() i64()(i64().asString() 超 2⁵³ 用 string) |
| 数值 | num(p, s) 定点、f32() f64() 浮点 |
| 字符串 | str(n) 定长、text() 长文本 |
| 其它标量 | bool() dt() |
| 结构 | json(schema) / jsonb(schema)(StandardSchemaV1)、embedded({...}) |
| 枚举 | enum({K:V}) / enum(...) 值列表、enumSet(...) 集合 |
| 关联 | o2o() m2o() o2m() m2m()(joinColumns/joinTable/joinEntity,见「关联」) |
| 计算 | formula.ts(...) / formula.sql(...)、calculated.collection(...)(见「公式与计算属性」) |
通用链:.nullable() 可空、关联 .mappedBy() / .orderBy() / .joinColumns({cascade})。
详见:「核心概念 → 属性与类型」「关联」「复合值」「公式」。
dto:视图与 Input
dto.view(Model, c => [...]) // 查询取形(Tree 形状)
dto.view(Model, ...).nullAsUndefined 变体 // 空值给 undefined
// input 在「变更 API」章(上游 0.0.x 设计预览)
取形符号(c 为映射上下文):
| 符号 | 含义 |
|---|---|
c.属性 / c.$allScalars[.exclude("x")] | 标量/全量标量 |
c.关联.with(c => [...]) | 嵌套取形(m2o 对象 / o2m 数组) |
c.$flat("关联").prefix("p") | 扁平化平铺 |
c.$fold("键", c => [...]) | 折叠重分组 |
c.$recursive("关联").as("别名") | 递归树 |
c.$instanceOf(子类, c => [...]) | 多态分支 |
c.字段.mapOutput(schema, fn) | 输出转换 |
详见:「快速上手 → 视图」「查询 → 取形进阶」「继承与多态」。
dsl:查询表达式工具
// 条件:and or not、native(num/str 表达式)
dsl.and(…preds) dsl.or(…) dsl.not(…)
dsl.native.num `…` dsl.native.str `…`
// 聚合:count sum min max avg
dsl.count() dsl.sum(expr) dsl.min(expr) dsl.max(expr) dsl.avg(expr)
// 子查询 / 集合运算
dsl.subQuery(Model, cb) dsl.associationModel(Model, "prop")
dsl.exists(…) dsl.notExists(…)
dsl.baseQuery(Model, cb) dsl.unionAll(…) dsl.union(…) dsl.intersect(…) dsl.except(…)
dsl.derivedModel(…) dsl.cteModel(…)(PG 方言注意见「CTE」页)
// 其它
dsl.tuple(a, b)(多列 IN) dsl.constant(v)
详见:「查询 API」全章。
元数据 / 其它导出
EntityManager.of(baseDir, paths)/combine(...)(模型发现,见「模式创建」);SqlFormula / TsFormula / Calculator(公式族);ScalarProvider/ScalarType(自定义数据类型,见「查询 → 自定义数据类型」);- 命名策略与 SPI 在
@ts-grm/core的spi命名空间导出。