package column import ( "cls-server/internal/application/column" middleware "cls-server/internal/infrastructure/middleware/auth" "cls-server/internal/interfaces" "cls-server/pkg/util/page" "net/http" "cls-server/pkg/logger" "github.com/gin-gonic/gin" ) type ColumnHandler struct { service *column.Service authMiddleware *middleware.AuthMiddleware log logger.Logger } var _ interfaces.Handler = (*ColumnHandler)(nil) func NewColumnHandler(service *column.Service, authMiddleware *middleware.AuthMiddleware, log logger.New) *ColumnHandler { return &ColumnHandler{service, authMiddleware, log("cls:interfaces:column")} } func (ch *ColumnHandler) RegisterRouters(app gin.IRouter) { columnApp := app.Group("/column") { columnApp.GET("/page", ch.list) columnApp.POST("/save", ch.save) } } func (ch *ColumnHandler) list(c *gin.Context) { p := &page.Page{} err := c.ShouldBindQuery(p) if err != nil { ch.log.Error(err.Error()) c.AbortWithStatus(http.StatusInternalServerError) return } err = ch.service.GetColumnList(p, map[string]string{ "search_like_title": c.Query("search_like_title"), }) if err != nil { c.AbortWithStatus(http.StatusInternalServerError) } else { c.AbortWithStatusJSON(http.StatusOK, p) } } func (ch *ColumnHandler) save(c *gin.Context) { dto := &column.ColumnDto{} err := c.ShouldBindJSON(dto) if err != nil { ch.log.Error(err) c.AbortWithStatus(http.StatusInternalServerError) return } err = ch.service.UpdateColumn(dto) if err != nil { c.AbortWithStatus(http.StatusInternalServerError) } else { c.AbortWithStatus(http.StatusOK) } }