-
Data Governance Dev authored
DataDictCache 之前只在 connect/test 写入;这次新增 3 个 GET 端点让前端按需切片: - GET /api/dict/tables?db_type=&host=&port=&user=&database=&page=&page_size=&q= → 分页返回 table_summary,每项附加 field_count(前端不再算) - GET /api/dict/fields?...&tables=t1,t2&page=&page_size=&q= → 分页返回 data_dictionary(按 tables 参数过滤),每项附加 table_comment - GET /api/dict/all-table-names?...&q= → 仅返名字列表,供前端「全选 / 反选」按钮使用(不分页) 实现要点: - 全部走 DataDictCache.get_instance().get(cfg),命中即 list[a:b] 切片(微秒级) - cache miss 时现场抽一次(缺 password 抛 warning 让前端提示重连) - 多连接并存按 5 元组 (db_type, host, port, database, user) 区分 key - 排序:tables 按 table_name 字典序;fields 按 (table_name, ordinal_position) 与旧前端 filteredFields 排序保持一致 踩坑: - port=3306 默认参数必须放最末位(Python SyntaxError) - list_dict_fields 重复定义 host 别名导致 FastAPI 参数解析歧义 → 简化为单一 host 参数 - list_columns SQL 不带 table_comment,/api/dict/fields 响应里要手动从 table_summary 关联
6cb0ffa7