package controller import ( "net/http" "users_management/m/model/dto/req" "users_management/m/usecase" "users_management/m/utils/common" "github.com/gin-gonic/gin" ) type BackboneController struct { bu usecase.BackboneUseCase rg *gin.RouterGroup } func (bc *BackboneController) Route() { rg := bc.rg.Group("/backbone") rg.GET("", bc.GetBackbone()) rg.POST("", bc.CreateBackbone()) rg.GET("/:id", bc.GetBackboneByID()) } 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("id") backbone, err := bc.bu.GetByID(id) if err != nil { common.ErrorResponses(c, http.StatusBadRequest, err.Error()) return } common.SingleResponses(c, "Success", backbone) } }