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}