From 31c239e4865fb03f7184b7f7d798a16698669ea0 Mon Sep 17 00:00:00 2001 From: srxr <10549030+srxr@users.noreply.github.com> Date: Sat, 27 Mar 2021 14:34:21 +0000 Subject: [PATCH] Support edit ID --- models.go | 16 +++++++++++++--- server.go | 5 +++-- templates/edit.html | 4 ++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/models.go b/models.go index da02847..e6e0f2e 100644 --- a/models.go +++ b/models.go @@ -56,10 +56,20 @@ func (u *URL) SetName(name string) error { return db.Save(&u) } -func (u *URL) update(target string) error { - u.URL = target +func (u *URL) update(id, target string) error { + url, err := parse(target) + if err != nil { + return err + } + + if err := del(u.ID); err != nil { + return err + } + + u.ID = id + u.URL = url.String() u.UpdatedAt = time.Now() - return db.Update(u) + return db.Save(u) } func del(id string) error { diff --git a/server.go b/server.go index d87d515..f920e57 100644 --- a/server.go +++ b/server.go @@ -256,6 +256,7 @@ func (s *Server) UpdateHandler() httprouter.Handle { id := p.ByName("id") target := r.FormValue("url") + newID := r.FormValue("id") if id == "" || target == "" { http.Error(w, "Bad Request", http.StatusBadRequest) return @@ -271,14 +272,14 @@ func (s *Server) UpdateHandler() httprouter.Handle { return } - err = u.update(target) + err = u.update(newID, target) if err != nil { log.Printf("error updating %s error: %v", id, err) http.Error(w, "Internal Error", http.StatusInternalServerError) return } - redirectURL := fmt.Sprintf("/u/%s", u.ID) + redirectURL := fmt.Sprintf("/u/%s", newID) http.Redirect(w, r, redirectURL, http.StatusFound) } diff --git a/templates/edit.html b/templates/edit.html index 10d51db..4ae9379 100644 --- a/templates/edit.html +++ b/templates/edit.html @@ -5,7 +5,7 @@

Your short url is: {{.ID}}

- + @@ -16,4 +16,4 @@
-{{end}} \ No newline at end of file +{{end}}