add logic for to conntrollers, svc privileges map and get all privileges

This commit is contained in:
Pavel 2024-05-29 18:55:17 +03:00
parent b23e8876a0
commit d80378df68
7 changed files with 75 additions and 16 deletions

@ -4,7 +4,7 @@ import (
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"hub_admin_backend_service/internal/repository/privilege"
"net/http"
"hub_admin_backend_service/internal/tools"
)
type Deps struct {
@ -24,6 +24,11 @@ func NewPrivilegeExternal(deps Deps) *PrivilegeExternal {
}
}
// хаб нода getAllPrivilegesMap
func (p *PrivilegeExternal) GetAllService(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
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(tools.ConvertPrivilegesToMap(privileges))
}

@ -5,9 +5,9 @@ import (
)
func (p *PrivilegeExternal) Register(router fiber.Router) {
router.Get("/privilege/service", p.GetAllService)
router.Get("/service", p.GetAllService)
}
func (p *PrivilegeExternal) Name() string {
return ""
return "privilege"
}

@ -24,38 +24,51 @@ func NewPrivilegeInternal(deps Deps) *PrivilegeInternal {
}
}
// хаб нода getAllPrivileges
func (p *PrivilegeInternal) Get(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
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 {
return c.SendStatus(http.StatusCreated)
}
// хаб нода replacePrivilege
func (p *PrivilegeInternal) Update(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}
// хаб нода 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 {
return c.SendStatus(http.StatusCreated)
}
// хаб нода replacePrivileges
func (p *PrivilegeInternal) UpdateMany(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}
// хаб нода restorePrivilege
func (p *PrivilegeInternal) Restore(c *fiber.Ctx) error {
return c.SendStatus(http.StatusOK)
}

@ -3,18 +3,18 @@ package privilege_internal
import "github.com/gofiber/fiber/v2"
func (p *PrivilegeInternal) Register(router fiber.Router) {
router.Get("/privilege", p.Get)
router.Post("/privilege", p.Create)
router.Put("/privilege", p.Update)
router.Delete("/privilege", p.Delete)
router.Get("/privilege/:privilegeId", p.GetByID)
router.Get("/privilege/service/:serviceKey", p.GetByService)
router.Post("/privilege/many", p.PostMany)
router.Put("/privilege/many", p.UpdateMany)
router.Post("/privilege/restore", p.Restore)
router.Get("/", p.Get)
router.Post("/", p.Create)
router.Put("/", p.Update)
router.Delete("/", p.Delete)
router.Get("/:privilegeId", p.GetByID)
router.Get("/service/:serviceKey", p.GetByService)
router.Post("/many", p.PostMany)
router.Put("/many", p.UpdateMany)
router.Post("/restore", p.Restore)
}
func (p *PrivilegeInternal) Name() string {
return ""
return "privilege"
}

@ -18,7 +18,7 @@ type Repository struct {
func NewRepository(deps RepositoryDeps) *Repository {
return &Repository{
PrivilegeRepo: privilege.NewPrivilegeRepo(privilege.Deps{
Mdb: deps.Mdb.Collection(""),
Mdb: deps.Mdb.Collection("privileges"),
Logger: deps.Logger,
}),
}

@ -1,8 +1,12 @@
package privilege
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.uber.org/zap"
"hub_admin_backend_service/internal/models"
)
type Deps struct {
@ -21,3 +25,23 @@ func NewPrivilegeRepo(deps Deps) *Privilege {
logger: deps.Logger,
}
}
func (p *Privilege) GetAllPrivileges(ctx context.Context) ([]models.Privilege, error) {
filter := bson.M{"isDeleted": false}
opts := options.Find()
cursor, err := p.mdb.Find(ctx, filter, opts)
if err != nil {
p.logger.Error("failed to find privileges", 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
}

@ -0,0 +1,17 @@
package tools
import "hub_admin_backend_service/internal/models"
func ConvertPrivilegesToMap(privileges []models.Privilege) map[string][]models.Privilege {
resultMap := make(map[string][]models.Privilege)
for _, privilege := range privileges {
svcKey := privilege.ServiceKey
if _, ok := resultMap[svcKey]; !ok {
resultMap[svcKey] = []models.Privilege{}
}
resultMap[svcKey] = append(resultMap[svcKey], privilege)
}
return resultMap
}