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
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/zap"
|
||||
our_errors "hub_admin_backend_service/internal/errors"
|
||||
"hub_admin_backend_service/internal/repository/privilege"
|
||||
"hub_admin_backend_service/internal/tools"
|
||||
)
|
||||
@ -28,7 +30,12 @@ func NewPrivilegeExternal(deps Deps) *PrivilegeExternal {
|
||||
func (p *PrivilegeExternal) GetAllService(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()})
|
||||
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))
|
||||
}
|
||||
|
@ -32,8 +32,14 @@ func NewPrivilegeInternal(deps Deps) *PrivilegeInternal {
|
||||
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()})
|
||||
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)
|
||||
}
|
||||
|
||||
@ -114,12 +120,41 @@ func (p *PrivilegeInternal) Delete(c *fiber.Ctx) error {
|
||||
|
||||
// хаб нода getPrivilege
|
||||
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
|
||||
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
|
||||
|
@ -35,6 +35,9 @@ func (p *Privilege) GetAllPrivileges(ctx context.Context) ([]models.Privilege, e
|
||||
|
||||
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", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
@ -143,3 +146,48 @@ func (p *Privilege) Delete(ctx context.Context, id string) (models.Privilege, er
|
||||
|
||||
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