main.go (view raw)
1package main
2
3import (
4 "embed"
5 "fmt"
6 "net/http"
7
8 "github.com/gin-gonic/gin"
9)
10
11//go:embed static/* templates/*
12var fs embed.FS
13
14func main() {
15 router := gin.Default()
16
17 router.LoadHTMLGlob("templates/*")
18 router.StaticFS("/public", http.FS(fs))
19
20 router.GET("/", getTasksListHandler)
21 router.POST("/", upsertTaskHandler)
22
23 router.Run()
24
25}
26
27func getTasksListHandler(c *gin.Context) {
28 tasksList := getTasks()
29 tasks := tasksList.getSortedTasks()
30 c.HTML(http.StatusOK, "index.tmpl", gin.H{
31 "tasks": tasks,
32 })
33}
34
35func upsertTaskHandler(c *gin.Context) {
36 taskPayload := TaskPayload{}
37 if err := c.ShouldBind(&taskPayload); err != nil {
38 fmt.Println(err)
39 c.String(http.StatusBadRequest, "Invalid payload")
40 } else {
41 id := taskPayload.Id
42
43 if id != 0 {
44 updateTask(id, taskPayload)
45 } else {
46 addTask(taskPayload)
47 }
48 getTasksListHandler(c)
49 }
50}