Browse Source

allow tag name update

abhishek9686 11 tháng trước cách đây
mục cha
commit
db224ba2d9
3 tập tin đã thay đổi với 24 bổ sung1 xóa
  1. 11 1
      controllers/tags.go
  2. 12 0
      logic/tags.go
  3. 1 0
      models/tags.go

+ 11 - 1
controllers/tags.go

@@ -5,6 +5,7 @@ import (
 	"errors"
 	"net/http"
 	"net/url"
+	"strings"
 	"time"
 
 	"github.com/gorilla/mux"
@@ -104,11 +105,20 @@ func updateTag(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
-	_, err = logic.GetTag(updateTag.ID)
+	tag, err := logic.GetTag(updateTag.ID)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
+	updateTag.NewID = models.TagID(strings.TrimSpace(updateTag.NewID.String()))
+	if updateTag.NewID.String() != "" {
+		tag.ID = updateTag.NewID
+		err = logic.InsertTag(tag)
+		if err != nil {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
+			return
+		}
+	}
 	go logic.UpdateTag(updateTag)
 	logic.ReturnSuccessResponse(w, r, "updating tags")
 }

+ 12 - 0
logic/tags.go

@@ -121,6 +121,18 @@ func UpdateTag(req models.UpdateTagReq) {
 		delete(deletedTaggedHost.Tags, req.ID)
 		UpsertHost(&deletedTaggedHost)
 	}
+	go func(req models.UpdateTagReq) {
+		if req.NewID != "" {
+			tagHostsMap = GetHostsWithTag(req.ID)
+			for _, hostI := range tagHostsMap {
+				hostI := hostI
+				delete(hostI.Tags, req.ID)
+				hostI.Tags[req.NewID] = struct{}{}
+				UpsertHost(&hostI)
+			}
+		}
+	}(req)
+
 }
 
 // SortTagEntrys - Sorts slice of Tag entries by their id

+ 1 - 0
models/tags.go

@@ -27,5 +27,6 @@ type TagListResp struct {
 
 type UpdateTagReq struct {
 	Tag
+	NewID       TagID    `json:"new_id"`
 	TaggedHosts []string `json:"tagged_hosts"`
 }