问题描述
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;
这与 IDataDriver 和 QueryAST 协议要求冲突:应只认标准字段如 where / orderBy / offset / limit,不再支持旧 key。
这些兼容实例多见于:
- find
- updateMany
- deleteMany
- count
影响
- 类型安全失效:
as any 绕开类型断言,实际允许错用输入被悄然吞掉
- 协议弱化:新插件和 IDE/DevTool 无法强制严格按
@objectstack/spec 结构开发
- 架构割裂:声明规范、实现场景两个生态,无法推动整体切换
修正建议
- 全部移除
filters / sort / skip / top fallback:直接报错或忽略旧 key。
- 类型 check:
as any 的地方返回类型错误直接 fail。
- 完善测试:确保只填错 key 就报错/无效。
验收标准
- CI 跑过 type check
- 单元测试以纯
QueryAST 传参,所有老 key 全失败或无效
参考 Issue #958,当前此遗留清理为阻断下游协议推进的硬性要求。
问题描述
packages/plugins/driver-sql/src/sql-driver.ts目前依然大量存在filters/sort/skip/top兼容写法,例如:这与
IDataDriver和QueryAST协议要求冲突:应只认标准字段如where/orderBy/offset/limit,不再支持旧 key。这些兼容实例多见于:
影响
as any绕开类型断言,实际允许错用输入被悄然吞掉@objectstack/spec结构开发修正建议
filters/sort/skip/topfallback:直接报错或忽略旧 key。as any的地方返回类型错误直接 fail。验收标准
QueryAST传参,所有老 key 全失败或无效参考 Issue #958,当前此遗留清理为阻断下游协议推进的硬性要求。