2024-09-09 03:32:10 +05:00

53 lines
1.2 KiB
Go

package widget
import (
"context"
"github.com/labstack/echo/v4"
"log/slog"
"strconv"
)
type requestModel struct {
UserId int `json:"userId" validate:"required"`
}
type responseModel struct {
WidgetId int `json:"widgetId"`
}
type Creator interface {
Create(ctx context.Context, userId int) (int, error)
}
// Create @Description Create widget
//
// @Tags Widget
// @Accept json
// @Produce json
// @Param RegisterData body requestModel true "Create widget"
// @Success 200 {object} responseModel
// @Router /api/widget/create [post]
func Create(service Creator, log *slog.Logger) echo.HandlerFunc {
return func(request echo.Context) error {
ctx := context.Background()
var widgetData requestModel
if err := request.Bind(&widgetData); err != nil {
slog.Error(err.Error())
return echo.NewHTTPError(400, err.Error())
}
err := request.Validate(&widgetData)
if err != nil {
slog.Error(err.Error())
return echo.NewHTTPError(400, err.Error())
}
id, err := service.Create(ctx, widgetData.UserId)
if err != nil {
slog.Error(err.Error())
return request.JSON(422, err)
}
return request.String(200, strconv.FormatUint(uint64(id), 10))
}
}