NAM-APJATEL-BACKEND/delivery/controller/backbone_controller.go

77 lines
1.6 KiB
Go

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)
}
}