TSts-grm

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 合表
  • 配置器 ctxctx.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/corespi 命名空间导出。