From 4472041b212f3d9717040d12508fd6fbd2263de3 Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Sat, 8 Apr 2023 05:17:09 +0100 Subject: [PATCH] fixup! Avoid unnecessary copying of the whole struct. --- query.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/query.go b/query.go index ce8725b..ba6d4dd 100644 --- a/query.go +++ b/query.go @@ -79,11 +79,11 @@ func (c *BaseClient) Query(queryContent string, queryVariables interface{}, quer // Check for library specific headers if len(queryHeaders) > 0 { - queryHeadersModified := cacheBaseClient.parseQueryHeaders(queryHeaders) + queryHeadersModified, cache_enabled := cacheBaseClient.parseQueryHeaders(queryHeaders) // compare if there are any changes if !reflect.DeepEqual(queryHeadersModified, queryHeaders) { - if cacheBaseClient.cache.enabled != c.cache.enabled && cacheBaseClient.cache.enabled { + if queryHeadersModified["gqlcache"] != nil && c.cache.enabled != cache_enabled { cacheBaseClient.Logger.Debug(cacheBaseClient, "Switching cache on as per single-request header") cbc := reflect.ValueOf(*c).Interface().(BaseClient) cacheBaseClient := &cbc @@ -148,11 +148,12 @@ func (c *BaseClient) decodeResponse(jsonData []byte) any { } } -func (c *BaseClient) parseQueryHeaders(queryHeaders map[string]interface{}) (returnHeaders map[string]interface{}) { +func (c *BaseClient) parseQueryHeaders(queryHeaders map[string]interface{}) (returnHeaders map[string]interface{}, cache_enabled bool) { returnHeaders = make(map[string]interface{}) for k, v := range queryHeaders { if k == "gqlcache" { c.cache.enabled, _ = strconv.ParseBool(fmt.Sprintf("%v", v)) + cache_enabled = true continue } if k == "gqlretries" { @@ -161,5 +162,5 @@ func (c *BaseClient) parseQueryHeaders(queryHeaders map[string]interface{}) (ret } returnHeaders[k] = v } - return returnHeaders + return returnHeaders, cache_enabled }