diff --git a/go/v1beta1/storage/elasticsearch.go b/go/v1beta1/storage/elasticsearch.go index eaa7741..93e135a 100644 --- a/go/v1beta1/storage/elasticsearch.go +++ b/go/v1beta1/storage/elasticsearch.go @@ -405,7 +405,7 @@ func (es *ElasticsearchStorage) UpdateOccurrence(ctx context.Context, projectId, } fieldmask_utils.StructToStruct(m, o, occurrence) - err = es.client.Update(ctx, &esutil.UpdateRequest{ + _, err = es.client.Update(ctx, &esutil.UpdateRequest{ Index: es.occurrencesAlias(projectId), DocumentId: targetDocumentID, Message: proto.MessageV2(occurrence), diff --git a/go/v1beta1/storage/elasticsearch_test.go b/go/v1beta1/storage/elasticsearch_test.go index 0b6cd1b..8bbcd50 100644 --- a/go/v1beta1/storage/elasticsearch_test.go +++ b/go/v1beta1/storage/elasticsearch_test.go @@ -1161,7 +1161,7 @@ var _ = Describe("elasticsearch storage", func() { JustBeforeEach(func() { client.SearchReturns(expectedSearchResponse, expectedSearchError) - client.UpdateReturns(expectedUpdateError) + client.UpdateReturns(nil, expectedUpdateError) actualOccurrence, actualErr = elasticsearchStorage.UpdateOccurrence(context.Background(), expectedProjectId, expectedOccurrenceId, occurrencePatchData, fieldMask) }) diff --git a/go/v1beta1/storage/esutil/client.go b/go/v1beta1/storage/esutil/client.go index df29fd3..09ad04a 100644 --- a/go/v1beta1/storage/esutil/client.go +++ b/go/v1beta1/storage/esutil/client.go @@ -119,7 +119,7 @@ type Client interface { MultiSearch(ctx context.Context, request *MultiSearchRequest) (*EsMultiSearchResponse, error) Get(ctx context.Context, request *GetRequest) (*EsGetResponse, error) MultiGet(ctx context.Context, request *MultiGetRequest) (*EsMultiGetResponse, error) - Update(ctx context.Context, request *UpdateRequest) error + Update(ctx context.Context, request *UpdateRequest) (*EsIndexDocResponse, error) Delete(ctx context.Context, request *DeleteRequest) error } @@ -478,11 +478,11 @@ func (c *client) MultiGet(ctx context.Context, request *MultiGetRequest) (*EsMul return &response, nil } -func (c *client) Update(ctx context.Context, request *UpdateRequest) error { +func (c *client) Update(ctx context.Context, request *UpdateRequest) (*EsIndexDocResponse, error) { log := c.logger.Named("Update") str, err := protojson.MarshalOptions{EmitUnpopulated: true}.Marshal(request.Message) if err != nil { - return err + return nil, err } if request.Refresh == "" { @@ -497,20 +497,20 @@ func (c *client) Update(ctx context.Context, request *UpdateRequest) error { c.esClient.Index.WithRefresh(request.Refresh), ) if err != nil { - return err + return nil, err } if res.IsError() { - return fmt.Errorf("unexpected response from elasticsearch: %s", res.String()) + return nil, fmt.Errorf("unexpected response from elasticsearch: %s", res.String()) } esResponse := EsIndexDocResponse{} if err := DecodeResponse(res.Body, &esResponse); err != nil { - return err + return nil, err } log.Debug("elasticsearch response", zap.Any("response", esResponse)) - return nil + return &esResponse, nil } func (c *client) Delete(ctx context.Context, request *DeleteRequest) error { diff --git a/go/v1beta1/storage/esutil/client_test.go b/go/v1beta1/storage/esutil/client_test.go index 0382460..8754b45 100644 --- a/go/v1beta1/storage/esutil/client_test.go +++ b/go/v1beta1/storage/esutil/client_test.go @@ -964,7 +964,8 @@ var _ = Describe("elasticsearch client", func() { Context("Update", func() { var ( - actualErr error + actualResponse *EsIndexDocResponse + actualErr error expectedUpdateRequest *UpdateRequest expectedDocumentId string @@ -995,7 +996,7 @@ var _ = Describe("elasticsearch client", func() { }) JustBeforeEach(func() { - actualErr = client.Update(ctx, expectedUpdateRequest) + actualResponse, actualErr = client.Update(ctx, expectedUpdateRequest) }) It("should index (update) the document in ES", func() { @@ -1014,6 +1015,10 @@ var _ = Describe("elasticsearch client", func() { Expect(transport.ReceivedHttpRequests[0].URL.Query().Get("refresh")).To(Equal("true")) }) + It("should return the response from Elasticsearch", func() { + Expect(actualResponse.Id).To(Equal(expectedDocumentId)) + }) + It("should return no error", func() { Expect(actualErr).ToNot(HaveOccurred()) }) diff --git a/go/v1beta1/storage/esutil/esutilfakes/fake_client.go b/go/v1beta1/storage/esutil/esutilfakes/fake_client.go index f613604..fa439be 100644 --- a/go/v1beta1/storage/esutil/esutilfakes/fake_client.go +++ b/go/v1beta1/storage/esutil/esutilfakes/fake_client.go @@ -105,17 +105,19 @@ type FakeClient struct { result1 *esutil.SearchResponse result2 error } - UpdateStub func(context.Context, *esutil.UpdateRequest) error + UpdateStub func(context.Context, *esutil.UpdateRequest) (*esutil.EsIndexDocResponse, error) updateMutex sync.RWMutex updateArgsForCall []struct { arg1 context.Context arg2 *esutil.UpdateRequest } updateReturns struct { - result1 error + result1 *esutil.EsIndexDocResponse + result2 error } updateReturnsOnCall map[int]struct { - result1 error + result1 *esutil.EsIndexDocResponse + result2 error } invocations map[string][][]interface{} invocationsMutex sync.RWMutex @@ -573,7 +575,7 @@ func (fake *FakeClient) SearchReturnsOnCall(i int, result1 *esutil.SearchRespons }{result1, result2} } -func (fake *FakeClient) Update(arg1 context.Context, arg2 *esutil.UpdateRequest) error { +func (fake *FakeClient) Update(arg1 context.Context, arg2 *esutil.UpdateRequest) (*esutil.EsIndexDocResponse, error) { fake.updateMutex.Lock() ret, specificReturn := fake.updateReturnsOnCall[len(fake.updateArgsForCall)] fake.updateArgsForCall = append(fake.updateArgsForCall, struct { @@ -588,9 +590,9 @@ func (fake *FakeClient) Update(arg1 context.Context, arg2 *esutil.UpdateRequest) return stub(arg1, arg2) } if specificReturn { - return ret.result1 + return ret.result1, ret.result2 } - return fakeReturns.result1 + return fakeReturns.result1, fakeReturns.result2 } func (fake *FakeClient) UpdateCallCount() int { @@ -599,7 +601,7 @@ func (fake *FakeClient) UpdateCallCount() int { return len(fake.updateArgsForCall) } -func (fake *FakeClient) UpdateCalls(stub func(context.Context, *esutil.UpdateRequest) error) { +func (fake *FakeClient) UpdateCalls(stub func(context.Context, *esutil.UpdateRequest) (*esutil.EsIndexDocResponse, error)) { fake.updateMutex.Lock() defer fake.updateMutex.Unlock() fake.UpdateStub = stub @@ -612,27 +614,30 @@ func (fake *FakeClient) UpdateArgsForCall(i int) (context.Context, *esutil.Updat return argsForCall.arg1, argsForCall.arg2 } -func (fake *FakeClient) UpdateReturns(result1 error) { +func (fake *FakeClient) UpdateReturns(result1 *esutil.EsIndexDocResponse, result2 error) { fake.updateMutex.Lock() defer fake.updateMutex.Unlock() fake.UpdateStub = nil fake.updateReturns = struct { - result1 error - }{result1} + result1 *esutil.EsIndexDocResponse + result2 error + }{result1, result2} } -func (fake *FakeClient) UpdateReturnsOnCall(i int, result1 error) { +func (fake *FakeClient) UpdateReturnsOnCall(i int, result1 *esutil.EsIndexDocResponse, result2 error) { fake.updateMutex.Lock() defer fake.updateMutex.Unlock() fake.UpdateStub = nil if fake.updateReturnsOnCall == nil { fake.updateReturnsOnCall = make(map[int]struct { - result1 error + result1 *esutil.EsIndexDocResponse + result2 error }) } fake.updateReturnsOnCall[i] = struct { - result1 error - }{result1} + result1 *esutil.EsIndexDocResponse + result2 error + }{result1, result2} } func (fake *FakeClient) Invocations() map[string][][]interface{} {