1
0
Fork 1
mirror of https://github.com/0x2E/fusion.git synced 2025-06-08 05:27:15 +09:00
fusion/api/item.go

86 lines
1.6 KiB
Go

package api
import (
"net/http"
"github.com/0x2e/fusion/server"
"github.com/labstack/echo/v4"
)
type itemAPI struct {
srv *server.Item
}
func newItemAPI(srv *server.Item) *itemAPI {
return &itemAPI{
srv: srv,
}
}
func (i itemAPI) List(c echo.Context) error {
var req server.ReqItemList
if err := bindAndValidate(&req, c); err != nil {
return err
}
resp, err := i.srv.List(c.Request().Context(), &req)
if err != nil {
return err
}
return c.JSON(http.StatusOK, resp)
}
func (i itemAPI) Get(c echo.Context) error {
var req server.ReqItemGet
if err := bindAndValidate(&req, c); err != nil {
return err
}
resp, err := i.srv.Get(c.Request().Context(), &req)
if err != nil {
return err
}
return c.JSON(http.StatusOK, resp)
}
func (i itemAPI) Delete(c echo.Context) error {
var req server.ReqItemDelete
if err := bindAndValidate(&req, c); err != nil {
return err
}
if err := i.srv.Delete(c.Request().Context(), &req); err != nil {
return err
}
return c.NoContent(http.StatusNoContent)
}
func (i itemAPI) UpdateUnread(c echo.Context) error {
var req server.ReqItemUpdateUnread
if err := bindAndValidate(&req, c); err != nil {
return err
}
if err := i.srv.UpdateUnread(c.Request().Context(), &req); err != nil {
return err
}
return c.NoContent(http.StatusNoContent)
}
func (i itemAPI) UpdateBookmark(c echo.Context) error {
var req server.ReqItemUpdateBookmark
if err := bindAndValidate(&req, c); err != nil {
return err
}
if err := i.srv.UpdateBookmark(c.Request().Context(), &req); err != nil {
return err
}
return c.NoContent(http.StatusNoContent)
}