From b901b31d88595447e8fe449a7ac228a400d09203 Mon Sep 17 00:00:00 2001 From: Emanuel Turis Date: Fri, 20 Oct 2023 09:59:02 +0300 Subject: [PATCH] Delete task and toggle edit state --- handler.go | 36 ++++++++++++++++++++++++++++++++ main.go | 2 ++ sqlite3.db | Bin 8192 -> 8192 bytes static/index.css | 45 ++++++++++++++++++++++++++++++++++++++++ templates/form.html | 48 ++++++++++++++++++++++++++++++++++++++++--- templates/index.html | 2 +- 6 files changed, 129 insertions(+), 4 deletions(-) diff --git a/handler.go b/handler.go index 211cfc3..deec36f 100644 --- a/handler.go +++ b/handler.go @@ -70,3 +70,39 @@ func handleToggleTask(w http.ResponseWriter, r *http.Request) { } tmpl.ExecuteTemplate(w, "CompletedCount", map[string]any{"Count": completedCount, "SwapOOB": true}) } + +func handleDeleteTask(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + log.Printf("error parsing id into int %v", err) + return + } + err = deleteTask(r.Context(), id) + if err != nil { + log.Printf("error deleting task %v", err) + } + count, err := fetchCount() + if err != nil { + log.Printf("error fetching count %v", err) + } + completedCount, err := fetchCompletedCount() + if err != nil { + log.Printf("error fetching completed count %v", err) + } + tmpl.ExecuteTemplate(w, "TotalCount", map[string]any{"Count": count, "SwapOOB": true}) + tmpl.ExecuteTemplate(w, "CompletedCount", map[string]any{"Count": completedCount, "SwapOOB": true}) +} + +func handleEditTask(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(chi.URLParam(r, "id")) + if err != nil { + log.Printf("error parsing id into int %v", err) + return + } + task, err := fetchTask(id) + if err != nil { + log.Printf("error fetching task with id %d %v", id, err) + return + } + tmpl.ExecuteTemplate(w, "Item", map[string]any{"Item": task, "Editing": true}) +} diff --git a/main.go b/main.go index 084f397..fb0173a 100644 --- a/main.go +++ b/main.go @@ -28,5 +28,7 @@ func main() { r.Get("/", handleGetTasks) r.Post("/tasks", handleCreateTask) r.Put("/tasks/{id}/toggle", handleToggleTask) + r.Delete("/tasks/{id}", handleDeleteTask) + r.Get("/tasks/{id}/edit", handleEditTask) http.ListenAndServe("localhost:3000", r) } diff --git a/sqlite3.db b/sqlite3.db index 32c61a4d4d8b02b6e4f06728a8b62a254f6c0c52..ea8eedb7f0a84abd3e76a6ef71278c1d12d5313f 100644 GIT binary patch delta 127 zcmZp0XmFSy&8Rt1#+gxbW5N=C2^RiS4E&$@pYh+|KgFMofSVNsy!a;uuujgF=XYUY uU|{f<O)UlS?P2`I@2L8|d&-icfpW@%ezmk78e>ZgFIAqK2SL; MA1f=v -

{{ .Item.Title }}

+ {{ if .Editing }} +
+
+ + + + +
+
+ {{ else }} +

{{ .Item.Title }}

+ {{ end }}
- -