customer/internal/interface/controller/http/currency_admin/controllers.go
Pasha 34a88a3a70
Some checks failed
Lint / Lint (push) Failing after 1m2s
rename go.mod
2024-11-18 21:44:09 +00:00

63 lines
1.7 KiB
Go

package currency_admin
import (
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"gitea.pena/PenaSide/customer/internal/errors"
"gitea.pena/PenaSide/customer/internal/interface/controller/http"
"gitea.pena/PenaSide/customer/internal/interface/repository"
"gitea.pena/PenaSide/customer/internal/models"
)
type Deps struct {
CurrencyRepo *repository.CurrencyRepository
MiddleWare *http.MiddleWare
Logger *zap.Logger
}
type CurrencyController struct {
currencyRepo *repository.CurrencyRepository
middleWare *http.MiddleWare
logger *zap.Logger
}
func NewCurrencyController(deps Deps) *CurrencyController {
return &CurrencyController{
currencyRepo: deps.CurrencyRepo,
middleWare: deps.MiddleWare,
logger: deps.Logger,
}
}
func (receiver *CurrencyController) Update(ctx *fiber.Ctx) error {
var req struct {
items []string
}
if err := ctx.BodyParser(&req); err != nil {
return receiver.middleWare.Error(ctx, fiber.StatusBadRequest, "failed to bind currencies")
}
currencies := req.items
currencyList, err := receiver.currencyRepo.ReplaceCurrencies(ctx.Context(), &models.CurrencyList{
Name: models.DefaultCurrencyListName,
Currencies: currencies,
})
if err != nil && err.Type() != errors.ErrNotFound {
return receiver.middleWare.ErrorOld(ctx, err)
}
if err != nil && err.Type() == errors.ErrNotFound {
newCurrencyList, err := receiver.currencyRepo.Insert(ctx.Context(), &models.CurrencyList{
Name: models.DefaultCurrencyListName,
Currencies: currencies,
})
if err != nil && err.Type() != errors.ErrNotFound {
return receiver.middleWare.ErrorOld(ctx, err)
}
return ctx.Status(fiber.StatusOK).JSON(newCurrencyList.Currencies)
}
return ctx.Status(fiber.StatusOK).JSON(currencyList.Currencies)
}