main
1package sparkles
2
3import (
4 "net/http"
5
6 "github.com/xlgmokha/x/pkg/serde"
7 "gitlab.com/mokhax/sparkled/pkg/db"
8 "gitlab.com/mokhax/sparkled/pkg/domain"
9)
10
11type Controller struct {
12 db db.Repository
13}
14
15func New(db db.Repository) *Controller {
16 return &Controller{db: db}
17}
18
19func (c *Controller) MountTo(mux *http.ServeMux) {
20 mux.HandleFunc("GET /sparkles", c.Index)
21 mux.HandleFunc("POST /sparkles", c.Create)
22}
23
24func (c *Controller) Index(w http.ResponseWriter, r *http.Request) {
25 serde.ToHTTP(w, r, c.db.All())
26}
27
28func (c *Controller) Create(w http.ResponseWriter, r *http.Request) {
29 sparkle, _ := serde.FromHTTP[*domain.Sparkle](r)
30 c.db.Save(sparkle)
31 w.WriteHeader(http.StatusCreated)
32}