62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
|
package handler
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
|
||
|
"code.linberg.su/linberg/awesome-cli/awesome-back/internal/service"
|
||
|
"code.linberg.su/linberg/awesome-cli/awesome-back/pkg/errors"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
)
|
||
|
|
||
|
type PastryHandler struct {
|
||
|
pastryService *service.PastryService
|
||
|
}
|
||
|
|
||
|
func NewPastryHandler(pastryService *service.PastryService) *PastryHandler {
|
||
|
return &PastryHandler{pastryService: pastryService}
|
||
|
}
|
||
|
|
||
|
func (h *PastryHandler) GetPastries(c *gin.Context) {
|
||
|
pastries, err := h.pastryService.GetAllPastries()
|
||
|
if err != nil {
|
||
|
Error(c, err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
Success(c, pastries)
|
||
|
}
|
||
|
|
||
|
func (h *PastryHandler) GetPastryByID(c *gin.Context) {
|
||
|
idStr := c.Param("id")
|
||
|
id, err := strconv.Atoi(idStr)
|
||
|
if err != nil {
|
||
|
Error(c, errors.NewInvalidError("invalid pastry ID format"))
|
||
|
return
|
||
|
}
|
||
|
|
||
|
pastry, err := h.pastryService.GetPastryByID(id)
|
||
|
if err != nil {
|
||
|
Error(c, err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
Success(c, pastry)
|
||
|
}
|
||
|
|
||
|
func (h *PastryHandler) GetPastriesByCategory(c *gin.Context) {
|
||
|
category := c.Param("category")
|
||
|
if category == "" {
|
||
|
Error(c, errors.NewInvalidError("category parameter is required"))
|
||
|
return
|
||
|
}
|
||
|
|
||
|
pastries, err := h.pastryService.GetPastriesByCategory(category)
|
||
|
if err != nil {
|
||
|
Error(c, err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
Success(c, pastries)
|
||
|
}
|