From c88ad68f8d13b42e187f7e5a57ad53cdf00b5eb9 Mon Sep 17 00:00:00 2001 From: Jan Semmelink <jan@uafrica.com> Date: Thu, 11 Nov 2021 16:23:59 +0200 Subject: [PATCH] Added Delete() operation to search document store --- search/document_store.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/search/document_store.go b/search/document_store.go index a8c8bd9..bd5e4e3 100644 --- a/search/document_store.go +++ b/search/document_store.go @@ -19,6 +19,7 @@ type DocumentStore interface { Write(id string, data interface{}) error Search(query Query, limit int64) (ids []string, totalCount int, err error) Get(id string) (doc interface{}, err error) + Delete(id string) error } type documentStore struct { @@ -283,3 +284,30 @@ func (ds *documentStore) Get(id string) (doc interface{}, err error) { } return source.Interface(), nil } + +func (ds *documentStore) Delete(id string) (err error) { + if ds == nil { + return errors.Errorf("document store == nil") + } + del := opensearchapi.DeleteRequest{ + Index: ds.name, + DocumentType: "_doc", + DocumentID: id, + } + delResponse, err := del.Do(context.Background(), ds.w.client) + if err != nil { + err = errors.Wrapf(err, "failed to del document") + return + } + + switch delResponse.StatusCode { + case http.StatusOK: + case http.StatusNotFound: + case http.StatusNoContent: + default: + resBody, _ := ioutil.ReadAll(delResponse.Body) + err = errors.Errorf("Del failed with HTTP status %v: %s", delResponse.StatusCode, string(resBody)) + return + } + return nil +} -- GitLab