From a4b47bb79b63ab0f07ff0b6089856f2b9543572e Mon Sep 17 00:00:00 2001 From: trunglt251292 Date: Tue, 15 Mar 2022 15:00:34 +0700 Subject: [PATCH] [Add] Func delete document + index --- constants.go | 6 ++++++ elasticsearch.go | 48 +++++++++++++++++++++++++++++++++--------------- struct.go | 10 ++++++++++ 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/constants.go b/constants.go index fb397b9..81055aa 100644 --- a/constants.go +++ b/constants.go @@ -4,4 +4,10 @@ const ( SubjectSyncData = "elasticsearch/sync_data" SubjectSearch = "elasticsearch/search" SubjectUpdateDocument = "elasticsearch/update_document" + SubjectCreateIndex = "elasticsearch/create_index" + SubjectDeleteDocument = "elasticsearch/delete_document" +) + +const ( + JetStreamSearchService = "JetStreamSearchService" ) diff --git a/elasticsearch.go b/elasticsearch.go index f766a59..8a7a3ae 100644 --- a/elasticsearch.go +++ b/elasticsearch.go @@ -41,23 +41,16 @@ func NewClient(config Config) (*Client, error) { // Sync data to services ES func (c *Client) SyncData(data SyncData) (bool, error) { var ( - res Response req = RequestBody{ ApiKey: c.Config.ApiKey, Body: toBytes(data), } ) - msg, err := c.natsServer.Request(SubjectSyncData, toBytes(req)) + err := c.natsJetStream.Publish(JetStreamSearchService, SubjectSyncData, toBytes(req)) if err != nil { return false, err } - if err = json.Unmarshal(msg.Data, &res); err != nil { - return false, err - } - if res.Message != "" { - return false, errors.New(res.Message) - } - return res.Success, nil + return true, nil } // Search @@ -91,19 +84,44 @@ func (c *Client) UpdateDocument(query UpdateDataPayload) (bool, error) { ApiKey: c.Config.ApiKey, Body: toBytes(query), } - res Response ) - msg, err := c.natsServer.Request(SubjectUpdateDocument, toBytes(req)) + err := c.natsJetStream.Publish(JetStreamSearchService, SubjectUpdateDocument, toBytes(req)) if err != nil { return false, err } - if err = json.Unmarshal(msg.Data, &res); err != nil { + return true, nil +} + +// DeleteDocument +// Delete document to ES +func (c *Client) DeleteDocument(payload DeleteDataPayload) (bool, error) { + var ( + req = RequestBody{ + ApiKey: c.Config.ApiKey, + Body: toBytes(payload), + } + ) + err := c.natsJetStream.Publish(JetStreamSearchService, SubjectUpdateDocument, toBytes(req)) + if err != nil { return false, err } - if res.Message != "" { - return res.Success, errors.New(res.Message) + return true, nil +} + +// CreateIndex +// Create index to ES +func (c *Client) CreateIndex(name string) (bool, error) { + var ( + req = RequestBody{ + ApiKey: c.Config.ApiKey, + Body: toBytes(name), + } + ) + err := c.natsJetStream.Publish(JetStreamSearchService, SubjectCreateIndex, toBytes(req)) + if err != nil { + return false, err } - return res.Success, nil + return true, nil } func toBytes(data interface{}) []byte { diff --git a/struct.go b/struct.go index 97ed42f..602f8a8 100644 --- a/struct.go +++ b/struct.go @@ -33,6 +33,13 @@ type UpdateDataPayload struct { Body []byte } +// DeleteDataPayload +// Payload for delete document +type DeleteDataPayload struct { + Index string + ID string +} + // ESQuery // Query support to search document type ESQuery struct { @@ -42,6 +49,9 @@ type ESQuery struct { Keyword string ProvinceCode int Active string + IsOutOfStock string + CanIssueInvoice string + PendingInactive string Categories []string SubCategories []string IgnoreIDs []string