mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-14 07:19:02 +00:00
Add API endpoint to pause a worker
This commit is contained in:
@@ -86,6 +86,7 @@ func New() *WebAPI {
|
||||
|
||||
api.router.POST("/worker/create", LogRequestMiddleware(api.CreateWorker))
|
||||
api.router.POST("/worker/update", LogRequestMiddleware(api.UpdateWorker))
|
||||
api.router.POST("/worker/set_paused", LogRequestMiddleware(api.WorkerSetPaused))
|
||||
api.router.GET("/worker/get/:id", LogRequestMiddleware(api.GetWorker))
|
||||
api.router.GET("/worker/stats", LogRequestMiddleware(api.GetAllWorkerStats))
|
||||
|
||||
|
||||
@@ -269,6 +269,11 @@ type UpdateWorkerRequest struct {
|
||||
Alias string `json:"alias"`
|
||||
}
|
||||
|
||||
type WorkerSetPausedRequest struct {
|
||||
Worker int64 `json:"worker"`
|
||||
Paused bool `json:"paused"`
|
||||
}
|
||||
|
||||
type CreateWorkerRequest struct {
|
||||
Alias string `json:"alias"`
|
||||
}
|
||||
|
||||
@@ -200,6 +200,14 @@ func (api *WebAPI) GetTaskFromProject(r *Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if worker.Paused {
|
||||
r.Json(JsonResponse{
|
||||
Ok: false,
|
||||
Message: "A manager has paused you",
|
||||
}, 400)
|
||||
return
|
||||
}
|
||||
|
||||
project, err := strconv.ParseInt(r.Ctx.UserValue("project").(string), 10, 64)
|
||||
if err != nil || project <= 0 {
|
||||
r.Json(JsonResponse{
|
||||
|
||||
@@ -126,6 +126,54 @@ func (api *WebAPI) UpdateWorker(r *Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func (api *WebAPI) WorkerSetPaused(r *Request) {
|
||||
|
||||
sess := api.Session.StartFasthttp(r.Ctx)
|
||||
manager := sess.Get("manager")
|
||||
|
||||
if manager == nil || !manager.(*storage.Manager).WebsiteAdmin {
|
||||
r.Json(JsonResponse{
|
||||
Ok: false,
|
||||
Message: "Unauthorized",
|
||||
}, 403)
|
||||
return
|
||||
}
|
||||
|
||||
req := &WorkerSetPausedRequest{}
|
||||
err := json.Unmarshal(r.Ctx.Request.Body(), req)
|
||||
if err != nil {
|
||||
r.Json(JsonResponse{
|
||||
Ok: false,
|
||||
Message: "Could not parse request",
|
||||
}, 400)
|
||||
return
|
||||
}
|
||||
|
||||
worker := api.Database.GetWorker(req.Worker)
|
||||
if worker == nil {
|
||||
r.Json(JsonResponse{
|
||||
Ok: false,
|
||||
Message: "Invalid worker",
|
||||
}, 400)
|
||||
return
|
||||
}
|
||||
|
||||
worker.Paused = req.Paused
|
||||
|
||||
ok := api.Database.UpdateWorker(worker)
|
||||
|
||||
if ok {
|
||||
r.OkJson(JsonResponse{
|
||||
Ok: true,
|
||||
})
|
||||
} else {
|
||||
r.OkJson(JsonResponse{
|
||||
Ok: false,
|
||||
Message: "Could not update worker",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (api *WebAPI) GetAllWorkerStats(r *Request) {
|
||||
|
||||
stats := api.Database.GetAllWorkerStats()
|
||||
|
||||
Reference in New Issue
Block a user