package controller import ( "net/http" "users_management/m/middleware" "users_management/m/model/dto/req" "users_management/m/usecase" "users_management/m/utils/common" "github.com/gin-gonic/gin" "github.com/google/uuid" ) type BackboneController struct { bu usecase.BackboneUseCase rg *gin.RouterGroup } func (bc *BackboneController) Route() { rg := bc.rg.Group("/backbone") rg.Use(middleware.AuthMiddleware()) rg.Use(middleware.CORSMiddleware()) rg.Use(middleware.RateLimitMiddleware()) { rg.GET("", bc.GetBackbone()) rg.POST("", bc.CreateBackbone()) rg.GET("/:uuid", bc.GetBackboneByID()) rg.PUT("/:uuid", bc.UpdateBackbone()) } } func NewBackboneController(bu usecase.BackboneUseCase, rg *gin.RouterGroup) *BackboneController { return &BackboneController{ bu: bu, rg: rg, } } func (bc *BackboneController) GetBackbone() gin.HandlerFunc { return func(c *gin.Context) { backbones, err := bc.bu.GetAllBackbone() if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } common.SingleResponses(c, "Success", backbones) } } func (bc *BackboneController) CreateBackbone() gin.HandlerFunc { return func(c *gin.Context) { var backboneDTO req.BackboneDTO err := c.ShouldBindJSON(&backboneDTO) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } err = bc.bu.CreateBackbone(backboneDTO) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } common.SingleResponses(c, "Backbone has been created", nil) } } func (bc *BackboneController) GetBackboneByID() gin.HandlerFunc { return func(c *gin.Context) { id := c.Param("uuid") uuid, err := uuid.Parse(id) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } backbone, err := bc.bu.GetByID(uuid) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } common.SingleResponses(c, "Success", backbone) } } func (bc *BackboneController) UpdateBackbone() gin.HandlerFunc { return func(c *gin.Context) { id := c.Param("uuid") uuid, err := uuid.Parse(id) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } var backboneDTO req.UpdateBackboneDTO err = c.ShouldBindJSON(&backboneDTO) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } err = bc.bu.UpdateBackbone(uuid, backboneDTO) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } common.SingleResponses(c, "Backbone has been updated", nil) } }