From e2c59d5f28569df003c9f2b58d1ac2980b4fd050 Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Wed, 18 Jun 2025 21:40:42 +0100 Subject: [PATCH] Add delete view --- internal/notes/notes.go | 5 +++++ internal/notes/views/views.go | 25 ++++++++++++++++++++----- templates/view.tmpl.html | 1 + 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/internal/notes/notes.go b/internal/notes/notes.go index d5512de..c75216a 100644 --- a/internal/notes/notes.go +++ b/internal/notes/notes.go @@ -58,3 +58,8 @@ func LoadNote(title string) (*Note, error) { } return &Note{Title: title, Body: body}, nil } + +func DeleteNote(title string) error { + filename := filepath.Join(conf.Conf.NotesDir, fmtPath(title)) + return os.Remove(filename) +} diff --git a/internal/notes/views/views.go b/internal/notes/views/views.go index de23b90..6600412 100644 --- a/internal/notes/views/views.go +++ b/internal/notes/views/views.go @@ -19,10 +19,11 @@ func GetRoutes(prefix string) *http.ServeMux { myurls = urls.URLs{ Prefix: prefix, URLs: map[string]urls.URL{ - "view": {Path: "/{note}/", Protocol: "GET", Handler: view}, - "edit": {Path: "/{note}/edit/", Protocol: "GET", Handler: edit}, - "save": {Path: "/{note}/edit/save/", Protocol: "POST", Handler: save}, - "list": {Path: "/", Protocol: "GET", Handler: list}, + "view": {Path: "/{note}/", Protocol: "GET", Handler: view}, + "delete": {Path: "/{note}/delete/", Protocol: "GET", Handler: delete}, + "edit": {Path: "/{note}/edit/", Protocol: "GET", Handler: edit}, + "save": {Path: "/{note}/edit/save/", Protocol: "POST", Handler: save}, + "list": {Path: "/", Protocol: "GET", Handler: list}, }, } return myurls.GetRouter() @@ -32,12 +33,13 @@ func view(w http.ResponseWriter, r *http.Request) { title := r.PathValue("note") note, err := notes.LoadNote(title) urlEdit := myurls.Reverse("edit", urls.Repl{"note": title}) + urlDelete := myurls.Reverse("delete", urls.Repl{"note": title}) if err != nil { http.Redirect(w, r, urlEdit, http.StatusFound) return } - context := templ.Ctx{"note": note, "urlEdit": urlEdit} + context := templ.Ctx{"note": note, "urlEdit": urlEdit, "urlDelete": urlDelete} note.Render() err = templ.RenderTemplate(w, "view.tmpl.html", context) if err != nil { @@ -64,6 +66,19 @@ func edit(w http.ResponseWriter, r *http.Request) { } } +func delete(w http.ResponseWriter, r *http.Request) { + title := r.PathValue("note") + err := notes.DeleteNote(title) + if err != nil { + log.Print(err.Error()) + http.Error(w, "Couldn't delete note", http.StatusInternalServerError) + return + } + + urlDelete := myurls.Reverse("list", urls.Repl{}) + http.Redirect(w, r, urlDelete, http.StatusFound) +} + func save(w http.ResponseWriter, r *http.Request) { title := r.PathValue("note") body := r.FormValue("body") diff --git a/templates/view.tmpl.html b/templates/view.tmpl.html index 2f58842..f52712a 100644 --- a/templates/view.tmpl.html +++ b/templates/view.tmpl.html @@ -5,6 +5,7 @@
Edit + Delete
{{end}}