mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-12 19:32:48 -06:00
rego: aggregate ResultSet
Fixes #3281. Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
This commit is contained in:
committed by
Torin Sandall
parent
bdb3d0f658
commit
99c81cab7c
+8
-18
@@ -1924,36 +1924,26 @@ func (r *Rego) evalWasm(ctx context.Context, ectx *EvalContext) (ResultSet, erro
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
qr := topdown.QueryResult{}
|
||||
var rs ResultSet
|
||||
err = resultSet.Iter(func(term *ast.Term) error {
|
||||
obj, ok := term.Value.(ast.Object)
|
||||
if !ok {
|
||||
return fmt.Errorf("illegal result type")
|
||||
}
|
||||
|
||||
qr := topdown.QueryResult{}
|
||||
obj.Foreach(func(k, v *ast.Term) {
|
||||
kvt := ast.VarTerm(string(k.Value.(ast.String)))
|
||||
qr[kvt.Value.(ast.Var)] = v
|
||||
})
|
||||
|
||||
result, err := r.generateResult(qr, ectx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
rs = append(rs, result)
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res, err := r.generateResult(qr, ectx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rs := ResultSet{res}
|
||||
|
||||
if len(rs) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return rs, nil
|
||||
return rs, err
|
||||
}
|
||||
|
||||
func (r *Rego) generateResult(qr topdown.QueryResult, ectx *EvalContext) (Result, error) {
|
||||
|
||||
@@ -56,7 +56,7 @@ func TestPrepareAndEvalWithWasmTarget(t *testing.T) {
|
||||
t.Fatalf("Unexpected error: %s", err)
|
||||
}
|
||||
|
||||
assertPreparedEvalQueryEval(t, pq, []EvalOption{}, "[[true, true]]")
|
||||
assertPreparedEvalQueryEval(t, pq, []EvalOption{}, "[[true, true],[true, true]]")
|
||||
|
||||
pq, err = New(
|
||||
Query("foo(100)"),
|
||||
|
||||
Reference in New Issue
Block a user