Skip to content
marstone edited this page Dec 8, 2022 · 14 revisions

Abstract

users(filter: { name: {eq: $name } }) {
  name 
}

Structure

  • 正规式定义
    Filter := FilterMap
    FilterMap := <Field, OperatorMap> | <_ORs, [Filter]>
    OperatorMap := <Operator, ParameterName>
  • 类型描述
Filter: {
  {Field}: {
     {Operator} : $Parameter 
  },
  _ORs: [Filter]
}
  • Field 之间、Field_ORs 之间,是 AND 关系
  • _ORs 里各个 Filter 之间,是 OR 关系
  • _ORs 大小写敏感。

Fields:字段

  • 和类型中字段名相同

Operators & Parameters

操作符 含义 参数
eq 等于 同Field类型
neq 不等于 同Field类型
like 匹配 String,包括%部分
ieq 大小写不敏感相等 String
in 包括 List
nin 不包含 List
gt 大于 Number
lt 小于 Number
gte 大于等于 Number
lte 小于等于 Number
bt Between,相当于gte & lte [Number,Number]

其他说明

  • 多个Filter之间是 "与" 的关系
  • 限定某些字段和某些值的匹配关系,举例:
    • name: { eq: "小明" }, // name 字段等于“小明”
  • 函数使用,纯概念,尚未实现
    • dept: { in: closure("计算机系",-INF)} // dept 字段在计算机系所在部门树的节点的祖先路径上
  • 参数可以使用一些和用户三元组有关的内置变量,这包括:
    • $ACCOUNT:当前用户账号,参考Principal
    • $OPENID:当前用户openid
    • $USERCODES:当前用户的usercode列表
    • $DEPTS:当前用户有权限的部门列表 (待议)
    • $BIZES: 当前用户有权限的业务列表 (待议)
    • $DEPT_BIZES:当前用户有权限的(部门:业务)组合列表 (待议)
    • $CLIENT_ID: 当前应用 client_id
Clone this wiki locally