| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(orm): 实体继承 STI(单表继承 @TableInheritance/@ChildEntity) 基类 @Entity+@TableInheritance[判别列] 与子类 @ChildEntity[基类, 判别值] 共用一张基表, 靠判别列区分行的具体子类型(零反射,对标 TypeORM STI / JPA SINGLE_TABLE)。 - 子类型注册表 sti.cj:@ChildEntity 启动期 registerSubtype(基类型名, 判别值, 工厂)自注册; 基映射器多态 fromRow 据行内判别值 lookupSubtype 构造正确子类实例(擦除 Any 再下转基类)。 - 基映射器生成 baseColumns/baseFromRow/baseInsertParams 供子映射器委托装填基列;columns() 追加可空判别列。 - 子映射器委托基映射器处理基列 + 处理自有 @Column 列;insertParams 写判别值,列/参数顺序对齐。 - 读路径:子仓储经 discriminatorValue 过滤只见本类型行;基仓储不过滤、多态返回各子类实例, 并经 subtypeExtraColumns 把全部子类型自有列并入 SELECT 投影。 - 建表:基/子共表走幂等 syncTable(dropMissing:false);基仓储建表一次性提供整层完整 schema。 - 字段级子宏放宽父上下文:allow @Entity 或 @ChildEntity(insideParentContext),既有 @Entity 场景不变。 - 自有列恒可空(共表兄弟行该列 NULL);非 STI 实体生成物字节不变。 | 5 天前 | |
refactor: ORM 宏移出框架核心,独立 ace-orm-macros 宏包 动机:@Entity/@Id/@Column/@ManyToOne/@Transactional 是 ORM 专属,不应放在框架核心 ace-framework-macros。仓颉要求宏必须在独立 macro 包(--compile-macro)、且宏包只能 导出宏(不能含 OrmComponent 等运行时代码),故 ORM 宏不能塞进 ace-orm-component (静态运行时库),须自成 macro 包。 - 新建 ace-orm-macros(macro package):移入 5 个 ORM 宏 + sqliteType/rowGetter/dbCtor; 通用助手 stripQuotes/stripSpaces/leadingModifiers 因宏包间不能共享非宏函数而各留一份 - ace-framework-macros 移除 ORM 块(仅留 Web/DI/AOP/校验等框架核心宏) - 实体/示例改 import ace_orm_macros.*;orm-demo/task-api/ace-orm-component 依赖同步 - ORM 家族现为三包:ace-orm(运行时)/ ace-orm-macros(宏)/ ace-orm-component(组件) - 共 114 绿;orm-demo 与 task-api e2e 不变 | 11 天前 |