This commit is contained in:
Emanuel Turis
2023-10-20 07:46:32 +03:00
parent ccb0c914e5
commit d1f37d7b0e
12 changed files with 607 additions and 11 deletions

72
handler.go Normal file
View File

@@ -0,0 +1,72 @@
package main
import (
"log"
"net/http"
"strconv"
"github.com/go-chi/chi/v5"
)
func handleGetTasks(w http.ResponseWriter, _ *http.Request) {
items, err := fetchTasks()
if err != nil {
log.Printf("error fetching tasks %v", err)
return
}
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)
}
data := Tasks{
Items: items,
Count: count,
CompletedCount: completedCount,
}
tmpl.ExecuteTemplate(w, "Base", data)
}
func handleCreateTask(w http.ResponseWriter, r *http.Request) {
title := r.FormValue("title")
if title == "" {
tmpl.ExecuteTemplate(w, "Form", nil)
return
}
item, err := insertTask(title)
if err != nil {
log.Printf("error inserting task %v", err)
return
}
count, err := fetchCount()
if err != nil {
log.Printf("error fetching count %v", err)
return
}
w.WriteHeader(http.StatusCreated)
tmpl.ExecuteTemplate(w, "Form", nil)
tmpl.ExecuteTemplate(w, "Item", map[string]any{"Item": item, "SwapOOB": true})
tmpl.ExecuteTemplate(w, "TotalCount", map[string]any{"Count": count, "SwapOOB": true})
}
func handleToggleTask(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 = toggleTask(id)
if err != nil {
log.Printf("error toggling task %v", err)
return
}
completedCount, err := fetchCompletedCount()
if err != nil {
log.Printf("error fetching completed count %v", err)
return
}
tmpl.ExecuteTemplate(w, "CompletedCount", map[string]any{"Count": completedCount, "SwapOOB": true})
}