From 69f59a9a160a4889aab1191f23f6b82b07dfdb35 Mon Sep 17 00:00:00 2001 From: Diptesh Choudhuri Date: Tue, 24 Jan 2023 16:31:46 +0000 Subject: [PATCH] feat(settings): handle bulk associations in db --- routes/settings.go | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/routes/settings.go b/routes/settings.go index 1f13753..35b08c8 100644 --- a/routes/settings.go +++ b/routes/settings.go @@ -365,21 +365,36 @@ func (h *SettingsHandler) actionAddLabel(w http.ResponseWriter, r *http.Request) } user := middlewares.GetPrincipal(r) - label := &models.ProjectLabel{ - UserID: user.ID, - ProjectKey: r.PostFormValue("key"), - Label: r.PostFormValue("value"), + var labels []*models.ProjectLabel + + if r.PostFormValue("num_projects") == "multiple" { + for _, key := range r.Form["keys"] { + label := &models.ProjectLabel{ + UserID: user.ID, + ProjectKey: key, + Label: r.PostFormValue("value"), + } + labels = append(labels, label) + } + } else { + label := &models.ProjectLabel{ + UserID: user.ID, + ProjectKey: r.PostFormValue("key"), + Label: r.PostFormValue("value"), + } + labels = append(labels, label) } - if !label.IsValid() { - return http.StatusBadRequest, "", "invalid input" + for _, label := range labels { + msg := "invalid input for project: " + label.ProjectKey + if !label.IsValid() { + return http.StatusBadRequest, "", msg + } + if _, err := h.projectLabelSrvc.Create(label); err != nil { + // TODO: distinguish between bad request, conflict and server error + return http.StatusBadRequest, "", msg + } } - - if _, err := h.projectLabelSrvc.Create(label); err != nil { - // TODO: distinguish between bad request, conflict and server error - return http.StatusBadRequest, "", "invalid input" - } - return http.StatusOK, "label added to project successfully", "" }