diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 12d17f56c..731ae4196 100644 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -244,8 +244,7 @@ func CreateCloudbrain(cloudbrain *Cloudbrain) (err error) { return nil } -func GetRepoCloudBrainByJobID(repoID int64, jobID string) (*Cloudbrain, error) { - cb := &Cloudbrain{JobID: jobID, RepoID: repoID} +func getRepoCloudBrain(cb *Cloudbrain) (*Cloudbrain, error) { has, err := x.Get(cb) if err != nil { return nil, err @@ -255,13 +254,18 @@ func GetRepoCloudBrainByJobID(repoID int64, jobID string) (*Cloudbrain, error) { return cb, nil } +func GetRepoCloudBrainByJobID(repoID int64, jobID string) (*Cloudbrain, error) { + cb := &Cloudbrain{JobID: jobID, RepoID: repoID} + return getRepoCloudBrain(cb) +} + func GetCloudbrainByJobID(jobID string) (*Cloudbrain, error) { cb := &Cloudbrain{JobID: jobID} - has, err := x.Get(cb) - if err != nil { - return nil, err - } else if !has { - return nil, errors.New("cloudbrain task is not found") - } - return cb, nil + return getRepoCloudBrain(cb) +} + +func SetCloudbrainStatusByJobID(jobID string, status CloudbrainStatus) (err error) { + cb := &Cloudbrain{JobID: jobID, Status: string(status)} + _, err = x.Cols("status").Where("cloudbrain.job_id=?", jobID).Update(cb) + return } diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index 8a3aa067f..56d41830b 100644 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -64,6 +64,10 @@ func GetCloudbrainTask(ctx *context.APIContext) { return } + if result.JobStatus.State != string(models.JobWaiting) { + go models.SetCloudbrainStatusByJobID(result.Config.JobID, models.CloudbrainStatus(result.JobStatus.State)) + } + ctx.JSON(http.StatusOK, map[string]interface{}{ "JobID": result.Config.JobID, "JobStatus": result.JobStatus.State,