tariffs/internal/controller/privilege_internal/controller.go

125 lines
3.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package privilege_internal
import (
"errors"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
our_errors "hub_admin_backend_service/internal/errors"
"hub_admin_backend_service/internal/models"
"hub_admin_backend_service/internal/repository/privilege"
"hub_admin_backend_service/internal/tools"
"net/http"
)
type Deps struct {
Repo *privilege.Privilege
Logger *zap.Logger
}
type PrivilegeInternal struct {
repo *privilege.Privilege
logger *zap.Logger
}
func NewPrivilegeInternal(deps Deps) *PrivilegeInternal {
return &PrivilegeInternal{
repo: deps.Repo,
logger: deps.Logger,
}
}
// хаб нода getAllPrivileges
func (p *PrivilegeInternal) Get(c *fiber.Ctx) error {
privileges, err := p.repo.GetAllPrivileges(c.Context())
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
}
return c.Status(fiber.StatusOK).JSON(privileges)
}
// хаб нода registerPrivilege
func (p *PrivilegeInternal) Create(c *fiber.Ctx) error {
var req models.CreateUpdateReq
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
if !tools.Validate(req) {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Missing required fields"})
}
result, err := p.repo.Create(c.Context(), &req)
if err != nil {
switch {
case errors.Is(err, our_errors.ErrAlreadyExist):
return c.Status(fiber.StatusConflict).JSON(fiber.Map{"error": "Privilege already exist"})
default:
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
}
}
return c.Status(fiber.StatusOK).JSON(result)
}
// хаб нода replacePrivilege
func (p *PrivilegeInternal) Update(c *fiber.Ctx) error {
var req models.CreateUpdateReq
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
if !tools.Validate(req) {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Missing required fields"})
}
result, err := p.repo.Update(c.Context(), &req)
if err != nil {
switch {
case errors.Is(err, our_errors.ErrNotFound):
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Privilege not found"})
default:
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
}
}
return c.Status(fiber.StatusOK).JSON(result)
}
// хаб нода removePrivilege
func (p *PrivilegeInternal) Delete(c *fiber.Ctx) error {
return c.SendStatus(http.StatusNoContent)
}
// хаб нода getPrivilege
func (p *PrivilegeInternal) GetByID(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}
// хаб нода getServicePrivileges
func (p *PrivilegeInternal) GetByService(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}
// хаб нода registerPrivileges
func (p *PrivilegeInternal) PostMany(c *fiber.Ctx) error {
var req models.ManyCreateUpdate
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
return c.SendStatus(http.StatusCreated)
}
// хаб нода replacePrivileges
func (p *PrivilegeInternal) UpdateMany(c *fiber.Ctx) error {
var req models.ManyCreateUpdate
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
return c.SendStatus(http.StatusOK)
}
// хаб нода restorePrivilege
func (p *PrivilegeInternal) Restore(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}