update: service, handlers, and db separation
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/dryrun Pipeline was successful
ci/woodpecker/push/publish-tag Pipeline was successful
ci/woodpecker/push/publish-latest Pipeline was successful

This commit is contained in:
2024-06-14 17:49:56 -04:00
parent 44feca12d2
commit 3d29dadaf3
14 changed files with 364 additions and 29 deletions

61
handlers/todoHandler.go Normal file
View File

@@ -0,0 +1,61 @@
package handlers
import (
"net/http"
"github.com/google/uuid"
"michaelthomson.dev/mthomson/go-todos-app/services"
"michaelthomson.dev/mthomson/go-todos-app/templates/partials"
)
type TodoHandler struct {
ts services.TodoService
}
func NewTodoHandler(ts services.TodoService) TodoHandler {
return TodoHandler{ts: ts}
}
func (h TodoHandler) Create(w http.ResponseWriter, r *http.Request) {
var err error
err = r.ParseForm()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
name := r.FormValue("name")
addedTodo, err := h.ts.AddTodo(name)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
err = partials.Todo(addedTodo).Render(r.Context(), w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func (h TodoHandler) Delete(w http.ResponseWriter, r *http.Request) {
var err error
id, err := uuid.Parse(r.PathValue("id"))
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = h.ts.DeleteTodoById(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}