1
0
Fork 0
forked from 0x2E/fusion
fusion/api/group.go

69 lines
1.2 KiB
Go

package api
import (
"net/http"
"github.com/0x2e/fusion/server"
"github.com/labstack/echo/v4"
)
type groupAPI struct {
srv *server.Group
}
func newGroupAPI(srv *server.Group) *groupAPI {
return &groupAPI{
srv: srv,
}
}
func (f groupAPI) All(c echo.Context) error {
resp, err := f.srv.All(c.Request().Context())
if err != nil {
return err
}
return c.JSON(http.StatusOK, resp)
}
func (f groupAPI) Create(c echo.Context) error {
var req server.ReqGroupCreate
if err := bindAndValidate(&req, c); err != nil {
return err
}
resp, err := f.srv.Create(c.Request().Context(), &req)
if err != nil {
return err
}
return c.JSON(http.StatusCreated, resp)
}
func (f groupAPI) Update(c echo.Context) error {
var req server.ReqGroupUpdate
if err := bindAndValidate(&req, c); err != nil {
return err
}
err := f.srv.Update(c.Request().Context(), &req)
if err != nil {
return err
}
return c.NoContent(http.StatusNoContent)
}
func (f groupAPI) Delete(c echo.Context) error {
var req server.ReqGroupDelete
if err := bindAndValidate(&req, c); err != nil {
return err
}
if err := f.srv.Delete(c.Request().Context(), &req); err != nil {
return err
}
return c.NoContent(http.StatusNoContent)
}