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)) } }