Wener Notes

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 必须在左边,哪些函数可以用等。 根据实现的库不同,不一定所有逻辑都能暴露出来。


  • 参考
    • AIP-160 filter
      • 字段名必须在左边

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • Filter
    笔记 · MiniQuery

    减少接口数量 - 提升开发效率 · 增加业务灵活性 - 业务变化接口不变 · Query - Source + Selector + Filter + Sort + Pagination · Condition == Filter · JSON Path

References

GitHub3 条
其他外链1 条
最近更新commit 11c95a7Edit

On this page