budgeteer/server/budget.go

34 lines
718 B
Go

package server
import (
"net/http"
"github.com/labstack/echo/v4"
)
type newBudgetInformation struct {
Name string `json:"name"`
}
func (h *Handler) newBudget(c echo.Context) error {
var newBudget newBudgetInformation
if err := c.BindJSON(&newBudget); err != nil {
return echo.NewHTTPError(http.StatusNotAcceptable, err)
return
}
if newBudget.Name == "" {
c.AbortWithStatusJSON(http.StatusBadRequest, ErrorResponse{"budget name is required"})
return
}
userID := MustGetToken(c).GetID()
budget, err := h.Service.NewBudget(c.Request().Context(), newBudget.Name, userID)
if err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, err)
return
}
c.JSON(http.StatusOK, budget)
}