add get by id and get by service key privilege methods
This commit is contained in:
parent
70fd6535f7
commit
b3a689e447
@ -1,8 +1,10 @@
|
|||||||
package privilege_external
|
package privilege_external
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
our_errors "hub_admin_backend_service/internal/errors"
|
||||||
"hub_admin_backend_service/internal/repository/privilege"
|
"hub_admin_backend_service/internal/repository/privilege"
|
||||||
"hub_admin_backend_service/internal/tools"
|
"hub_admin_backend_service/internal/tools"
|
||||||
)
|
)
|
||||||
@ -28,7 +30,12 @@ func NewPrivilegeExternal(deps Deps) *PrivilegeExternal {
|
|||||||
func (p *PrivilegeExternal) GetAllService(c *fiber.Ctx) error {
|
func (p *PrivilegeExternal) GetAllService(c *fiber.Ctx) error {
|
||||||
privileges, err := p.repo.GetAllPrivileges(c.Context())
|
privileges, err := p.repo.GetAllPrivileges(c.Context())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
switch {
|
||||||
|
case errors.Is(err, our_errors.ErrNotFound):
|
||||||
|
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Privileges not found"})
|
||||||
|
default:
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return c.Status(fiber.StatusOK).JSON(tools.ConvertPrivilegesToMap(privileges))
|
return c.Status(fiber.StatusOK).JSON(tools.ConvertPrivilegesToMap(privileges))
|
||||||
}
|
}
|
||||||
|
@ -32,8 +32,14 @@ func NewPrivilegeInternal(deps Deps) *PrivilegeInternal {
|
|||||||
func (p *PrivilegeInternal) Get(c *fiber.Ctx) error {
|
func (p *PrivilegeInternal) Get(c *fiber.Ctx) error {
|
||||||
privileges, err := p.repo.GetAllPrivileges(c.Context())
|
privileges, err := p.repo.GetAllPrivileges(c.Context())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
switch {
|
||||||
|
case errors.Is(err, our_errors.ErrNotFound):
|
||||||
|
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Privileges not found"})
|
||||||
|
default:
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.Status(fiber.StatusOK).JSON(privileges)
|
return c.Status(fiber.StatusOK).JSON(privileges)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,12 +120,41 @@ func (p *PrivilegeInternal) Delete(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
// хаб нода getPrivilege
|
// хаб нода getPrivilege
|
||||||
func (p *PrivilegeInternal) GetByID(c *fiber.Ctx) error {
|
func (p *PrivilegeInternal) GetByID(c *fiber.Ctx) error {
|
||||||
return c.SendStatus(http.StatusOK)
|
privilegeID := c.Params("privilegeId")
|
||||||
|
if privilegeID == "" {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Privilege ID is required"})
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := p.repo.GetByID(c.Context(), privilegeID)
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// хаб нода getServicePrivileges
|
// хаб нода getServicePrivileges
|
||||||
func (p *PrivilegeInternal) GetByService(c *fiber.Ctx) error {
|
func (p *PrivilegeInternal) GetByService(c *fiber.Ctx) error {
|
||||||
return c.SendStatus(http.StatusOK)
|
serviceKey := c.Params("serviceKey")
|
||||||
|
if serviceKey == "" {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Service key is required"})
|
||||||
|
}
|
||||||
|
result, err := p.repo.GetByServiceKey(c.Context(), serviceKey)
|
||||||
|
if err != nil {
|
||||||
|
switch {
|
||||||
|
case errors.Is(err, our_errors.ErrNotFound):
|
||||||
|
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Privileges not found"})
|
||||||
|
default:
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusOK).JSON(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
// хаб нода registerPrivileges
|
// хаб нода registerPrivileges
|
||||||
|
@ -35,6 +35,9 @@ func (p *Privilege) GetAllPrivileges(ctx context.Context) ([]models.Privilege, e
|
|||||||
|
|
||||||
cursor, err := p.mdb.Find(ctx, filter, opts)
|
cursor, err := p.mdb.Find(ctx, filter, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, errors.ErrNotFound
|
||||||
|
}
|
||||||
p.logger.Error("failed to find privileges", zap.Error(err))
|
p.logger.Error("failed to find privileges", zap.Error(err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -143,3 +146,48 @@ func (p *Privilege) Delete(ctx context.Context, id string) (models.Privilege, er
|
|||||||
|
|
||||||
return privilege, nil
|
return privilege, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Privilege) GetByID(ctx context.Context, id string) (models.Privilege, error) {
|
||||||
|
var privilege models.Privilege
|
||||||
|
filter := bson.M{
|
||||||
|
"privilegeId": id,
|
||||||
|
"isDeleted": false,
|
||||||
|
}
|
||||||
|
|
||||||
|
err := p.mdb.FindOne(ctx, filter).Decode(&privilege)
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return models.Privilege{}, errors.ErrNotFound
|
||||||
|
}
|
||||||
|
p.logger.Error("failed to get privilege by privilege id", zap.Error(err))
|
||||||
|
return models.Privilege{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return privilege, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Privilege) GetByServiceKey(ctx context.Context, serviceKey string) ([]models.Privilege, error) {
|
||||||
|
filter := bson.M{
|
||||||
|
"serviceKey": serviceKey,
|
||||||
|
"isDeleted": false,
|
||||||
|
}
|
||||||
|
opts := options.Find()
|
||||||
|
|
||||||
|
cursor, err := p.mdb.Find(ctx, filter, opts)
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, errors.ErrNotFound
|
||||||
|
}
|
||||||
|
p.logger.Error("failed to find privileges by service key", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer cursor.Close(ctx)
|
||||||
|
|
||||||
|
var privileges []models.Privilege
|
||||||
|
if err = cursor.All(ctx, &privileges); err != nil {
|
||||||
|
p.logger.Error("failed to decode privileges", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return privileges, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user