Skip to content

refactor(relations): 关系数据统一为 camelCase 单一形状 - #13

Merged
zavier merged 1 commit into
mainfrom
refactor/relation-shape
Aug 1, 2026
Merged

refactor(relations): 关系数据统一为 camelCase 单一形状#13
zavier merged 1 commit into
mainfrom
refactor/relation-shape

Conversation

@zavier

@zavier zavier commented Aug 1, 2026

Copy link
Copy Markdown
Owner

候选 4:关系数据两种形状收敛为一种

变更内容

  • types.ts 新增 StoredRelation(camelCase 全字段含 id/createdTime/updatedTime);ColumnRelation 派生为 Omit<StoredRelation, "id" | "createdTime" | "updatedTime">——输入是输出的子集,字段名完全一致
  • relation/store.ts 删除 RelationRowrowToRelation 在 SQLite 边界一次映射 camelCase;upsert/findByColumns/list 返回 StoredRelation;SQL 列名不动
  • relation-graph.ts / state/workspace.ts / commands/relations.ts / tools/db-tools.ts 只认一种形状(40+ 处属性访问改名)
  • RelationGraph.getDirectRelations 收为 private(仅内部 BFS 使用),测试改走公共接口
  • 行格式化四变体保持现状(TUI 对齐 / 选择器 / 确认 / LLM 输出受众不同,格式差异是需求)

为什么

同一概念此前有两种形状:snake_case RelationRow 从存储一路漏到 8+ 消费点,camelCase 只在图/命令输入侧,转换逻辑手写三处。收敛后一个概念一种形状,加字段/改名不再牵动 4+ 文件。

验证

  • npm run check(tsc)通过
  • npm test 230 通过(getDirectRelations 断言改公共接口,跨 schema 反向用 listAll 验证)
  • npm run lint 0 errors(13 warnings 存量)
  • npm run fmt + fmt:check 通过

候选 4:同一概念(表间列关联)此前有两种形状——存储返回的
snake_case RelationRow 穿过 graph/facade 漏到 8+ 消费点,转换逻辑
手写三处,调用方必须同时懂两种命名。改为 store 边界一次映射。

- types.ts 新增 StoredRelation(camelCase 全字段含 id/时间戳),
  ColumnRelation 派生为 Omit 掉持久化字段的子集——字段名完全一致
- relation/store.ts 删除 RelationRow,rowToRelation 在 SQLite 边界
  一次映射;graph/facade/commands/db-tools 只认一种形状
- RelationGraph.getDirectRelations 收为 private(仅内部 BFS 使用),
  测试改走公共接口
- 行格式化四变体保持现状(受众差异是需求,不是重复)
@zavier
zavier merged commit af601ef into main Aug 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant