(cfg ConvertConfig, q ast.Body)
| 61 | } |
| 62 | |
| 63 | func convertQuery(cfg ConvertConfig, q ast.Body) (sqltypes.BooleanNode, error) { |
| 64 | var expressions []sqltypes.BooleanNode |
| 65 | for _, e := range q { |
| 66 | exp, err := convertExpression(cfg, e) |
| 67 | if err != nil { |
| 68 | return nil, xerrors.Errorf("expression %s: %w", e.String(), err) |
| 69 | } |
| 70 | |
| 71 | expressions = append(expressions, exp) |
| 72 | } |
| 73 | |
| 74 | // All expressions in a single query are AND'd together. This means that |
| 75 | // all expressions must be true for the user to have access. |
| 76 | return sqltypes.And(sqltypes.RegoSource(q.String()), expressions...), nil |
| 77 | } |
| 78 | |
| 79 | func convertExpression(cfg ConvertConfig, e *ast.Expr) (sqltypes.BooleanNode, error) { |
| 80 | if e.IsCall() { |
no test coverage detected