From 7736ca29392a230e86f43cac678932a2e95e77df Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Mon, 19 Jul 2021 16:45:59 +0800 Subject: [PATCH] fix-143 --- models/cloudbrain.go | 8 ++++++-- models/error.go | 12 ++++++++++++ routers/repo/cloudbrain.go | 15 ++++++++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 15790faa7..f9c0fb4e0 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -2,7 +2,6 @@ package models import ( "encoding/json" - "errors" "fmt" "time" "xorm.io/xorm" @@ -569,7 +568,7 @@ func getRepoCloudBrain(cb *Cloudbrain) (*Cloudbrain, error) { if err != nil { return nil, err } else if !has { - return nil, errors.New("cloudbrain task is not found") + return nil, ErrJobNotExist{} } return cb, nil } @@ -609,3 +608,8 @@ func deleteJob(e Engine, job *Cloudbrain) error { _, err := e.ID(job.ID).Delete(job) return err } + +func GetCloudbrainByName(jobName string) (*Cloudbrain, error) { + cb := &Cloudbrain{JobName: jobName} + return getRepoCloudBrain(cb) +} diff --git a/models/error.go b/models/error.go index 66bb74de0..9d1c68658 100755 --- a/models/error.go +++ b/models/error.go @@ -1987,3 +1987,15 @@ func IsErrFileChunkNotExist(err error) bool { _, ok := err.(ErrFileChunkNotExist) return ok } + +type ErrJobNotExist struct { +} + +func IsErrJobNotExist(err error) bool { + _, ok := err.(ErrJobNotExist) + return ok +} + +func (err ErrJobNotExist) Error() string { + return fmt.Sprintf("the job does not exist") +} diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 27642d7bb..1088f47d3 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -168,11 +168,24 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { ctx.RenderWithErr("jobtype error", tplCloudBrainNew, &form) return } + + _, err := models.GetCloudbrainByName(jobName) + if err == nil { + log.Error("the job name did already exist", ctx.Data["MsgID"]) + ctx.RenderWithErr("the job name did already exist", tplCloudBrainNew, &form) + return + } else { + if !models.IsErrJobNotExist(err) { + log.Error("system error, %v", err, ctx.Data["MsgID"]) + ctx.RenderWithErr("system error", tplCloudBrainNew, &form) + return + } + } repo := ctx.Repo.Repository downloadCode(repo, codePath) modelPath := setting.JobPath + jobName + cloudbrain.ModelMountPath - err := os.MkdirAll(modelPath, os.ModePerm) + err = os.MkdirAll(modelPath, os.ModePerm) if err != nil { ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) return