all repos — tsl @ main

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}