first commit
This commit is contained in:
45
back/internal/handler/coffee_handler.go
Normal file
45
back/internal/handler/coffee_handler.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"awesome-back/internal/service"
|
||||
"awesome-back/pkg/errors"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type CoffeeHandler struct {
|
||||
coffeeService *service.CoffeeService
|
||||
}
|
||||
|
||||
func NewCoffeeHandler(coffeeService *service.CoffeeService) *CoffeeHandler {
|
||||
return &CoffeeHandler{coffeeService: coffeeService}
|
||||
}
|
||||
|
||||
func (h *CoffeeHandler) GetCoffees(c *gin.Context) {
|
||||
coffees, err := h.coffeeService.GetAllCoffees()
|
||||
if err != nil {
|
||||
Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
Success(c, coffees)
|
||||
}
|
||||
|
||||
func (h *CoffeeHandler) GetCoffeeByID(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
Error(c, errors.NewInvalidError("invalid coffee ID format"))
|
||||
return
|
||||
}
|
||||
|
||||
coffee, err := h.coffeeService.GetCoffeeByID(id)
|
||||
if err != nil {
|
||||
Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
Success(c, coffee)
|
||||
}
|
||||
62
back/internal/handler/order_handler.go
Normal file
62
back/internal/handler/order_handler.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"awesome-back/internal/domain/entities"
|
||||
"awesome-back/internal/service"
|
||||
"awesome-back/pkg/errors"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type OrderHandler struct {
|
||||
orderService *service.OrderService
|
||||
}
|
||||
|
||||
func NewOrderHandler(orderService *service.OrderService) *OrderHandler {
|
||||
return &OrderHandler{orderService: orderService}
|
||||
}
|
||||
|
||||
func (h *OrderHandler) GetOrders(c *gin.Context) {
|
||||
orders, err := h.orderService.GetAllOrders()
|
||||
if err != nil {
|
||||
Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
Success(c, orders)
|
||||
}
|
||||
|
||||
func (h *OrderHandler) GetOrderByID(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
Error(c, errors.NewInvalidError("invalid order ID format"))
|
||||
return
|
||||
}
|
||||
|
||||
order, err := h.orderService.GetOrderByID(id)
|
||||
if err != nil {
|
||||
Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
Success(c, order)
|
||||
}
|
||||
|
||||
func (h *OrderHandler) CreateOrder(c *gin.Context) {
|
||||
var order entities.Order
|
||||
if err := c.ShouldBindJSON(&order); err != nil {
|
||||
Error(c, errors.NewInvalidError("invalid order data"))
|
||||
return
|
||||
}
|
||||
|
||||
err := h.orderService.CreateOrder(&order)
|
||||
if err != nil {
|
||||
Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
Created(c, order)
|
||||
}
|
||||
61
back/internal/handler/pastry_handler.go
Normal file
61
back/internal/handler/pastry_handler.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"awesome-back/internal/service"
|
||||
"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)
|
||||
}
|
||||
55
back/internal/handler/response.go
Normal file
55
back/internal/handler/response.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
appErr "awesome-back/pkg/errors"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Response struct {
|
||||
Success bool `json:"success"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
func Success(c *gin.Context, data interface{}) {
|
||||
c.JSON(http.StatusOK, Response{
|
||||
Success: true,
|
||||
Data: data,
|
||||
})
|
||||
}
|
||||
|
||||
func Created(c *gin.Context, data interface{}) {
|
||||
c.JSON(http.StatusCreated, Response{
|
||||
Success: true,
|
||||
Data: data,
|
||||
})
|
||||
}
|
||||
|
||||
func Error(c *gin.Context, err error) {
|
||||
var appErr *appErr.AppError
|
||||
if errors.As(err, &appErr) {
|
||||
statusCode := appErr.Code
|
||||
if statusCode == 0 {
|
||||
statusCode = http.StatusInternalServerError
|
||||
}
|
||||
|
||||
c.JSON(statusCode, Response{
|
||||
Success: false,
|
||||
Error: appErr.Message,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Ошибка по умолчанию
|
||||
c.JSON(http.StatusInternalServerError, Response{
|
||||
Success: false,
|
||||
Error: "Internal server error",
|
||||
})
|
||||
}
|
||||
|
||||
// Аналогично для PastryHandler и OrderHandler...
|
||||
Reference in New Issue
Block a user