tariffs/internal/controller/privilege_internal/controller.go

147 lines
4.2 KiB
Go
Raw Normal View History

2024-05-29 13:02:06 +00:00
package privilege_internal
import (
2024-05-29 17:06:28 +00:00
"errors"
2024-05-29 13:02:06 +00:00
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
2024-05-29 17:06:28 +00:00
our_errors "hub_admin_backend_service/internal/errors"
"hub_admin_backend_service/internal/models"
"hub_admin_backend_service/internal/repository/privilege"
2024-05-29 17:27:25 +00:00
"hub_admin_backend_service/internal/tools"
2024-05-29 13:02:06 +00:00
"net/http"
)
type Deps struct {
Repo *privilege.Privilege
Logger *zap.Logger
2024-05-29 13:02:06 +00:00
}
type PrivilegeInternal struct {
repo *privilege.Privilege
logger *zap.Logger
2024-05-29 13:02:06 +00:00
}
func NewPrivilegeInternal(deps Deps) *PrivilegeInternal {
return &PrivilegeInternal{
repo: deps.Repo,
logger: deps.Logger,
}
2024-05-29 13:02:06 +00:00
}
// хаб нода getAllPrivileges
2024-05-29 13:02:06 +00:00
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)
2024-05-29 13:02:06 +00:00
}
// хаб нода registerPrivilege
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) Create(c *fiber.Ctx) error {
2024-05-29 17:06:28 +00:00
var req models.CreateUpdateReq
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
2024-05-29 17:27:25 +00:00
if !tools.Validate(req) {
2024-05-29 17:06:28 +00:00
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Missing required fields"})
}
result, err := p.repo.Create(c.Context(), req)
2024-05-29 17:06:28 +00:00
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)
2024-05-29 13:02:06 +00:00
}
// хаб нода replacePrivilege
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) Update(c *fiber.Ctx) error {
2024-05-29 17:06:28 +00:00
var req models.CreateUpdateReq
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
2024-05-29 17:27:25 +00:00
if !tools.Validate(req) {
2024-05-29 17:06:28 +00:00
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Missing required fields"})
}
result, err := p.repo.Update(c.Context(), req)
2024-05-29 17:27:25 +00:00
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)
2024-05-29 13:02:06 +00:00
}
// хаб нода removePrivilege
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) Delete(c *fiber.Ctx) error {
var req struct {
ID string `json:"privilegeId"`
}
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
if req.ID == "" {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "PrivilegeID is required"})
}
result, err := p.repo.Delete(c.Context(), req.ID)
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)
2024-05-29 13:02:06 +00:00
}
// хаб нода getPrivilege
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) GetByID(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}
// хаб нода getServicePrivileges
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) GetByService(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}
// хаб нода registerPrivileges
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) PostMany(c *fiber.Ctx) error {
2024-05-29 17:06:28 +00:00
var req models.ManyCreateUpdate
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
2024-05-29 13:02:06 +00:00
return c.SendStatus(http.StatusCreated)
}
// хаб нода replacePrivileges
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) UpdateMany(c *fiber.Ctx) error {
2024-05-29 17:06:28 +00:00
var req models.ManyCreateUpdate
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
2024-05-29 13:02:06 +00:00
return c.SendStatus(http.StatusOK)
}
// хаб нода restorePrivilege
2024-05-29 13:02:06 +00:00
func (p *PrivilegeInternal) Restore(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}