Skip to content

refactor(schema): getTableSchema 返回类型化行,移除 mermaid ER 图 - #14

Merged
zavier merged 1 commit into
refactor/relation-shapefrom
refactor/schema-columns
Aug 1, 2026
Merged

refactor(schema): getTableSchema 返回类型化行,移除 mermaid ER 图#14
zavier merged 1 commit into
refactor/relation-shapefrom
refactor/schema-columns

Conversation

@zavier

@zavier zavier commented Aug 1, 2026

Copy link
Copy Markdown
Owner

候选 5:getTableSchema 返回类型化行,挡住 information_schema 泄漏

变更内容

  • types.ts 新增 SchemaColumn(name/type/nullable 布尔/key/default/extra/comment)、SchemaIndex(按 INDEX_NAME 聚合:name/columns/unique)、TableSchema
  • connection/db-manager.tsgetTableSchema 在 driver 边界一次映射(IS_NULLABLE === "YES" → nullable、索引分组聚合),裸行不再出边界
  • formatting/schema-table.tsformatSchemaMarkdown 改收类型化参数,6+3 处 cast 与 idxMap 分组逻辑消失
  • 移除 mermaid ER 图(pi 不渲染图,用户只能看到源码文本):
    • /db relations er-diagram 命令及 completions、utils 注释
    • discover 的 AI 消息改为分表小节结构化文本(### 表 + - 列 (类型) 列表),更直接省 token、无 mermaid 语法噪音;MAX_TABLES 截断保留
  • commands/relations.ts / schema.ts / workspace.ts / db-tools.ts 消费点 cast 全部封口

为什么

裸 information_schema 行此前漏到 4+ 消费点,COLUMN_NAME 知识散布、cast 遍地、ER builder(命令层最逻辑密集代码)无法纯函数化且不可测。收窄后一个概念一个形状,加字段只改边界。

验证

  • npm run check(tsc)通过
  • npm test 229 通过(删 er-diagram completion 用例,schema-table 构造改类型化行)
  • npm run lint 0 errors(12 warnings 存量)
  • npm run fmt + fmt:check 通过

候选 5:getTableSchema 此前把 MySQL information_schema 裸行原样
导出,COLUMN_NAME / COLUMN_TYPE 的知识散布在 4+ 命令层站点,cast
遍地。在 driver 边界一次收窄为 SchemaColumn[]/SchemaIndex[]。

- types.ts 新增 SchemaColumn(nullable 布尔化)/ SchemaIndex(按
  INDEX_NAME 聚合)/ TableSchema;裸行不再出边界
- formatSchemaMarkdown 改收类型化参数,cast 与 idxMap 分组逻辑消失
- 移除 mermaid ER 图(pi 不渲染图,用户只能看到源码文本):
  - 删 /db relations er-diagram 命令及 completions
  - discover 的 AI 消息改为分表小节结构化文本(### 表 + 列列表),
    更直接、更省 token、无 mermaid 语法噪音
- commands/relations.ts / schema.ts / db-tools.ts 消费点 cast 全部封口
@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