Skip to content

【清理遗留】driver-sql 依然冗余支持 legacy 查询 key(filters/sort/skip/top)- 需严格遵循 IDataDriver 协议 #960

Description

@hotlong

问题描述

packages/plugins/driver-sql/src/sql-driver.ts 目前依然大量存在 filters / sort / skip / top 兼容写法,例如:

const filterCondition = query.where || (query as any).filters;
const sortArray = query.orderBy || (query as any).sort;
const offsetValue = query.offset ?? (query as any).skip;
const limitValue = query.limit ?? (query as any).top;

这与 IDataDriverQueryAST 协议要求冲突:应只认标准字段如 where / orderBy / offset / limit,不再支持旧 key。

这些兼容实例多见于:

  • find
  • updateMany
  • deleteMany
  • count

影响

  • 类型安全失效as any 绕开类型断言,实际允许错用输入被悄然吞掉
  • 协议弱化:新插件和 IDE/DevTool 无法强制严格按 @objectstack/spec 结构开发
  • 架构割裂:声明规范、实现场景两个生态,无法推动整体切换

修正建议

  1. 全部移除 filters / sort / skip / top fallback:直接报错或忽略旧 key。
  2. 类型 checkas any 的地方返回类型错误直接 fail。
  3. 完善测试:确保只填错 key 就报错/无效。

验收标准

  • CI 跑过 type check
  • 单元测试以纯 QueryAST 传参,所有老 key 全失败或无效

参考 Issue #958,当前此遗留清理为阻断下游协议推进的硬性要求。

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions