JCS-pub/client/internal/http/v1/ticktock.go

47 lines
1.1 KiB
Go

package http
import (
"net/http"
"github.com/gin-gonic/gin"
"gitlink.org.cn/cloudream/jcs-pub/client/internal/http/types"
cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
"gitlink.org.cn/cloudream/jcs-pub/common/ecode"
)
type TickTockService struct {
*Server
}
func (s *Server) TickTock() *TickTockService {
return &TickTockService{s}
}
func (s *TickTockService) ListJobs(ctx *gin.Context) {
var req cliapi.TickTockListJobs
if err := ctx.ShouldBindQuery(&req); err != nil {
ctx.JSON(http.StatusBadRequest, types.Failed(ecode.BadArgument, "%v", err))
return
}
names := s.svc.TickTock.GetJobNames()
ctx.JSON(http.StatusOK, types.OK(cliapi.TickTockListJobsResp{
Jobs: names,
}))
}
func (s *TickTockService) RunJob(ctx *gin.Context) {
var req cliapi.TickTockRunJob
if err := ctx.ShouldBindJSON(&req); err != nil {
ctx.JSON(http.StatusBadRequest, types.Failed(ecode.BadArgument, "%v", err))
return
}
if !s.svc.TickTock.RunNow(req.Name) {
ctx.JSON(http.StatusOK, types.Failed(ecode.DataNotFound, "job %s not found", req.Name))
return
}
ctx.JSON(http.StatusOK, types.OK(cliapi.TickTockRunJobResp{}))
}