sg/internal/result/presenter/query_result.go (52 lines of code) (raw):

package presenter import ( "github.com/Azure/ShieldGuard/sg/internal/engine" "github.com/Azure/ShieldGuard/sg/internal/policy" "github.com/Azure/ShieldGuard/sg/internal/result" "github.com/Azure/ShieldGuard/sg/internal/utils" ) type policyRuleObj struct { Name string `json:"name" yaml:"name"` DocLink string `json:"doc_link,omitempty" yaml:"doc_link,omitempty"` } func asPolicyRuleObj(rule policy.Rule, docLink string) policyRuleObj { return policyRuleObj{ Name: rule.Name, DocLink: docLink, } } type resultObj struct { Query string `json:"query" yaml:"query"` Rule policyRuleObj `json:"rule" yaml:"rule"` Message string `json:"message" yaml:"message"` Metadata map[string]interface{} `json:"metadata,omitempty" yaml:"metadata,omitempty"` } func asResultObj(result result.Result) resultObj { return resultObj{ Query: result.Query, Rule: asPolicyRuleObj(result.Rule, result.RuleDocLink), Message: result.Message, Metadata: result.Metadata, } } type queryResultsObj struct { Filename string `json:"filename" yaml:"filename"` Namespace string `json:"namespace" yaml:"namespace"` Success int `json:"success" yaml:"success"` Failures []resultObj `json:"failures" yaml:"failures"` Warnings []resultObj `json:"warnings" yaml:"warnings"` Exceptions []resultObj `json:"exceptions" yaml:"exceptions"` } func asQueryResultsObj(queryResult result.QueryResults) queryResultsObj { return queryResultsObj{ Filename: queryResult.Source.Name(), Namespace: engine.PackageMain, Success: queryResult.Successes, Failures: utils.Map(queryResult.Failures, asResultObj), Warnings: utils.Map(queryResult.Warnings, asResultObj), Exceptions: utils.Map(queryResult.Exceptions, asResultObj), } } func asQueryResultsObjList(queryResultsList []result.QueryResults) []queryResultsObj { return utils.Map(queryResultsList, asQueryResultsObj) }