From d25f8523fde5e74b888a932d1185c254cf7c527f Mon Sep 17 00:00:00 2001
From: Jan Semmelink <jan@uafrica.com>
Date: Thu, 11 Nov 2021 10:52:31 +0200
Subject: [PATCH] Cleanup in search

---
 search/time_series.go |  2 +-
 search/writer.go      | 24 +++++++++++++++---------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/search/time_series.go b/search/time_series.go
index 0e6d95e..152e81f 100644
--- a/search/time_series.go
+++ b/search/time_series.go
@@ -258,7 +258,7 @@ func (ts *timeSeries) Write(startTime, endTime time.Time, data interface{}) erro
 	x.Elem().Field(0).Set(reflect.ValueOf(TimeSeriesHeader{
 		StartTime:  startTime,
 		EndTime:    endTime,
-		DurationMs: int64(endTime.Sub(startTime) / time.Millisecond),
+		DurationMs: endTime.Sub(startTime).Milliseconds(),
 	}))
 	return ts.w.Write(indexName, x.Elem().Interface())
 }
diff --git a/search/writer.go b/search/writer.go
index 8b492be..5347c2b 100644
--- a/search/writer.go
+++ b/search/writer.go
@@ -10,6 +10,7 @@ import (
 	opensearch "github.com/opensearch-project/opensearch-go"
 	opensearchapi "github.com/opensearch-project/opensearch-go/opensearchapi"
 	"gitlab.com/uafrica/go-utils/errors"
+	"gitlab.com/uafrica/go-utils/logger"
 )
 
 type Writer interface {
@@ -26,21 +27,22 @@ func New(config Config) (Writer, error) {
 		timeSeriesByName: map[string]TimeSeries{},
 	}
 
-	// Initialize the client with SSL/TLS enabled.
-	var err error
-	w.client, err = opensearch.NewClient(opensearch.Config{
+	searchConfig := opensearch.Config{
 		Transport: &http.Transport{
 			TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
 		},
 		Addresses: config.Addresses,
 		Username:  config.Username,
 		Password:  config.Password,
-	})
+	}
+	// Initialize the client with SSL/TLS enabled.
+	var err error
+	w.client, err = opensearch.NewClient(searchConfig)
 	if err != nil {
 		return nil, errors.Wrapf(err, "cannot initialize opensearch connection")
 	}
 	// Print OpenSearch version information on console.
-	//fmt.Println(client.Info())
+	logger.Debugf("Search client created with config: %+v", searchConfig)
 
 	w.api = opensearchapi.New(w.client)
 	return w, nil
@@ -58,13 +60,17 @@ func (writer writer) Write(indexName string, doc interface{}) error {
 	if writer.client == nil {
 		return errors.Errorf("writer closed")
 	}
-	jsonDoc, err := json.Marshal(doc)
-	if err != nil {
-		return errors.Wrapf(err, "failed to JSON encode document")
+	jsonDocStr, ok := doc.(string)
+	if !ok {
+		jsonDoc, err := json.Marshal(doc)
+		if err != nil {
+			return errors.Wrapf(err, "failed to JSON encode document")
+		}
+		jsonDocStr = string(jsonDoc)
 	}
 	indexResponse, err := writer.api.Index(
 		indexName,
-		strings.NewReader(string(jsonDoc)),
+		strings.NewReader(jsonDocStr),
 	)
 	if err != nil {
 		return errors.Wrapf(err, "failed to index document")
-- 
GitLab