From 1faa789b310b176aef305ef9da3b78c5f4cfa1c7 Mon Sep 17 00:00:00 2001 From: Yuce Tekol Date: Wed, 21 Nov 2018 14:53:16 +0300 Subject: [PATCH] remove ImportRoaringRequestView type --- api.go | 11 +++++------ encoding/proto/proto.go | 27 ++++++++++----------------- handler.go | 7 +------ http/client_test.go | 8 +++----- server/handler_test.go | 8 ++++---- 5 files changed, 23 insertions(+), 38 deletions(-) diff --git a/api.go b/api.go index 27327dc23..860207014 100644 --- a/api.go +++ b/api.go @@ -285,21 +285,20 @@ func (api *API) ImportRoaring(ctx context.Context, indexName, fieldName string, return NewBadRequestError(errors.New("roaring import is only supported for set and time fields")) } - var viewName string for _, node := range nodes { node := node if node.ID == api.server.nodeID { eg.Go(func() error { var err error - for _, view := range req.Views { + for viewName, viewData := range req.Views { // must make a copy of data to operate on locally. // field.importRoaring changes data - data := make([]byte, len(view.Data)) - copy(data, view.Data) - if view.Name == "" { + data := make([]byte, len(viewData)) + copy(data, viewData) + if viewName == "" { viewName = viewStandard } else { - viewName = fmt.Sprintf("%s_%s", viewStandard, view.Name) + viewName = fmt.Sprintf("%s_%s", viewStandard, viewName) } err = field.importRoaring(data, shard, viewName, req.Clear) if err != nil { diff --git a/encoding/proto/proto.go b/encoding/proto/proto.go index 11e1cf8d2..3c7629a65 100644 --- a/encoding/proto/proto.go +++ b/encoding/proto/proto.go @@ -358,17 +358,15 @@ func encodeImportValueRequest(m *pilosa.ImportValueRequest) *internal.ImportValu } } -func encodeImportRoaringRequestView(m *pilosa.ImportRoaringRequestView) *internal.ImportRoaringRequestView { - return &internal.ImportRoaringRequestView{ - Name: m.Name, - Data: m.Data, - } -} - func encodeImportRoaringRequest(m *pilosa.ImportRoaringRequest) *internal.ImportRoaringRequest { views := make([]*internal.ImportRoaringRequestView, len(m.Views)) - for i, view := range m.Views { - views[i] = encodeImportRoaringRequestView(&view) + i := 0 + for viewName, viewData := range m.Views { + views[i] = &internal.ImportRoaringRequestView{ + Name: viewName, + Data: viewData, + } + i += 1 } return &internal.ImportRoaringRequest{ Clear: m.Clear, @@ -944,15 +942,10 @@ func decodeImportValueRequest(pb *internal.ImportValueRequest, m *pilosa.ImportV m.Values = pb.Values } -func decodeImportRoaringRequestView(pb *internal.ImportRoaringRequestView, m *pilosa.ImportRoaringRequestView) { - m.Name = pb.Name - m.Data = pb.Data -} - func decodeImportRoaringRequest(pb *internal.ImportRoaringRequest, m *pilosa.ImportRoaringRequest) { - views := make([]pilosa.ImportRoaringRequestView, len(pb.Views)) - for i, view := range pb.Views { - decodeImportRoaringRequestView(view, &views[i]) + views := map[string][]byte{} + for _, view := range pb.Views { + views[view.Name] = view.Data } m.Clear = pb.Clear m.Views = views diff --git a/handler.go b/handler.go index bcb220326..8fe51dc4c 100644 --- a/handler.go +++ b/handler.go @@ -96,14 +96,9 @@ type ImportRequest struct { Timestamps []int64 } -type ImportRoaringRequestView struct { - Name string - Data []byte -} - type ImportRoaringRequest struct { Clear bool - Views []ImportRoaringRequestView + Views map[string][]byte } type ImportResponse struct { diff --git a/http/client_test.go b/http/client_test.go index fd2b13576..fee3754df 100644 --- a/http/client_test.go +++ b/http/client_test.go @@ -988,12 +988,10 @@ func MustNewClient(host string, h *gohttp.Client) *Client { func makeImportRoaringRequest(clear bool, viewData string) *pilosa.ImportRoaringRequest { roaringData, _ := hex.DecodeString(viewData) - view := pilosa.ImportRoaringRequestView{ - Name: "", - Data: roaringData, - } return &pilosa.ImportRoaringRequest{ Clear: clear, - Views: []pilosa.ImportRoaringRequestView{view}, + Views: map[string][]byte{ + "": roaringData, + }, } } diff --git a/server/handler_test.go b/server/handler_test.go index 9d352e4bb..5ae4dd877 100644 --- a/server/handler_test.go +++ b/server/handler_test.go @@ -93,8 +93,8 @@ func TestHandler_Endpoints(t *testing.T) { roaringData, _ := hex.DecodeString("3B3001000100000900010000000100010009000100") msg := pilosa.ImportRoaringRequest{ Clear: false, - Views: []pilosa.ImportRoaringRequestView{ - {Name: "", Data: roaringData}, + Views: map[string][]byte{ + "": roaringData, }, } ser := proto.Serializer{} @@ -125,8 +125,8 @@ func TestHandler_Endpoints(t *testing.T) { roaringData, _ := hex.DecodeString("3B3001000100000900010000000100010009000100") msg := pilosa.ImportRoaringRequest{ Clear: false, - Views: []pilosa.ImportRoaringRequestView{ - {Name: "", Data: roaringData}, + Views: map[string][]byte{ + "": roaringData, }, } ser := proto.Serializer{}