MiniQuery
约 1 分钟阅读
SQL Where like safe filter expression for ORM.
目标
- 类似 SQL 的 Where 语法
- 学习成本低
- 语法友好直观 - 对比 GraphQL 和 Mongo
- 提供安全的查询 - 抽取值作为 binding 参数,避免注入
- 尽量泛化关联关系的处理
- 例如
profile.name = "wener"- profile 可能为外部关联可能为 JSON 字段
- 例如
Raodmap
- 利用 schema 预先校验
- 例如
profile.name = "wener"- 如果实现支持获取 Scheme,那么可以在查询之前提前检测是否可以执行
- 例如
- 实现 ACL 控制
- 同 schema 校验逻辑,但利用 acl 信息
- 控制可用查询 - 例如: 限制耗时高的查询
实现
miniquery 语法层松散,具体实现会加限制,例如 column 必须在左边,哪些函数可以用等。 根据实现的库不同,不一定所有逻辑都能暴露出来。
- java-miniquery
- nutz - 最早实现,用于内部系统
- go-miniqueryGitHubwenerme/go-miniquery
- gorm
- ent - entsql, entql
- js-miniqueryGitHubwenerme/js-miniquery
- sequelize
- NPM ohm-grammar-miniquery
- wenerme/wode/packages/miniqueryGitHub Filewenerme/wode/packages/miniquerySQL Where like safe filter expression for ORM. · 目标 · 类似 SQL 的 Where 语法 · 学习成本低 · 语法友好直观 - 对比 GraphQL 和 Mongo · 提供安全的查询 - 抽取值作为 binding 参数,避免注入笔记:MiniQuery
- 参考
- AIP-160 filter
- 字段名必须在左边
- AIP-160 filter
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- Filter笔记 · MiniQuery
减少接口数量 - 提升开发效率 · 增加业务灵活性 - 业务变化接口不变 · Query - Source + Selector + Filter + Sort + Pagination · Condition == Filter · JSON Path
References
GitHub3 条
- wenerme/go-miniquerygithub.com/wenerme/go-miniquery
- wenerme/js-miniquerygithub.com/wenerme/js-miniquery
- wenerme/wode/packages/miniquerygithub.com/wenerme/wode/tree/main/packages/miniquery
其他外链1 条
- google.aip.dev/160google.aip.dev/160