package models import ( "code.gitea.io/gitea/modules/setting" "time" "code.gitea.io/gitea/modules/timeutil" ) const ( //TempJobIdPrefix = "TEMP" ) type CloudbrainTemp struct { CloudbrainID int64 `xorm:"pk"` JobName string Type int JobType string `xorm:"INDEX NOT NULL DEFAULT 'DEBUG'"` Status string `xorm:"INDEX NOT NULL DEFAULT 'TEMP'"` QueryTimes int `xorm:"INDEX NOT NULL DEFAULT 0"` CreatedUnix timeutil.TimeStamp `xorm:"INDEX"` UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` DeletedAt time.Time `xorm:"deleted"` } func InsertCloudbrainTemp(temp *CloudbrainTemp) (err error) { if _, err = x.Insert(temp); err != nil { return err } return nil } func getCloudBrainTemp(temp *CloudbrainTemp) (*CloudbrainTemp, error) { has, err := x.Get(temp) if err != nil { return nil, err } else if !has { return nil, ErrJobNotExist{} } return temp, nil } func GetCloudbrainTempByCloudbrainID(id int64) (*CloudbrainTemp, error) { temp := &CloudbrainTemp{CloudbrainID: id} return getCloudBrainTemp(temp) } func GetCloudBrainTempJobs() ([]*CloudbrainTemp, error) { jobs := make([]*CloudbrainTemp, 0, 10) return jobs, x. Where("status = ? AND query_times < ?", JobStatusTemp, setting.MaxTempQueryTimes). Limit(100). Find(&jobs) } func DeleteCloudbrainTemp(temp *CloudbrainTemp) error { return deleteCloudbrainTemp(x, temp) } func deleteCloudbrainTemp(e Engine, temp *CloudbrainTemp) error { _, err := e.Where("cloudbrain_id = ?", temp.CloudbrainID).Delete(temp) return err } func IncreaseCloudbrainTempQueryTimes(temp *CloudbrainTemp) error { times := temp.QueryTimes + 1 if times >= setting.MaxTempQueryTimes { temp.Status = string(ModelArtsTrainJobFailed) } _, err := x.Exec("update cloudbrain_temp set query_times=?, status = ? where cloudbrain_id=?", temp.QueryTimes+1, temp.Status, temp.CloudbrainID) return err }