From a7dbb4ab9adc4984fb842a49f16caaeb3bb4cb1f Mon Sep 17 00:00:00 2001 From: Lyuben Penkovski <lyuben.penkovski@vereign.com> Date: Sat, 24 Sep 2022 22:33:17 +0300 Subject: [PATCH] Fix storing of policy result in cache --- internal/service/policy/service.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/internal/service/policy/service.go b/internal/service/policy/service.go index a6322285..8ff2196d 100644 --- a/internal/service/policy/service.go +++ b/internal/service/policy/service.go @@ -96,17 +96,6 @@ func (s *Service) Evaluate(ctx context.Context, req *policy.EvaluateRequest) (*p return nil, errors.New("policy evaluation result expressions are empty") } - jsonValue, err := json.Marshal(resultSet[0].Expressions[0].Value) - if err != nil { - logger.Error("error encoding result to json", zap.Error(err)) - return nil, errors.New("error encoding result to json") - } - - if err := s.cache.Set(ctx, evaluationID, "", "", jsonValue); err != nil { - logger.Error("error storing policy result in cache", zap.Error(err)) - return nil, errors.New("error storing policy result in cache") - } - // If there is only a single result from the policy evaluation and it was assigned to an empty // variable, then we'll return a custom response containing only the value of the empty variable // without any mapping. @@ -121,6 +110,17 @@ func (s *Service) Evaluate(ctx context.Context, req *policy.EvaluateRequest) (*p } } + jsonValue, err := json.Marshal(result) + if err != nil { + logger.Error("error encoding result to json", zap.Error(err)) + return nil, errors.New("error encoding result to json") + } + + if err := s.cache.Set(ctx, evaluationID, "", "", jsonValue); err != nil { + logger.Error("error storing policy result in cache", zap.Error(err)) + return nil, errors.New("error storing policy result in cache") + } + return &policy.EvaluateResult{ Result: result, ETag: evaluationID, -- GitLab