mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-06 19:18:07 +02:00
85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
|
package dao
|
||
|
|
||
|
import (
|
||
|
"github.com/astaxie/beego/orm"
|
||
|
"github.com/vmware/harbor/models"
|
||
|
"github.com/vmware/harbor/utils/log"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
JobPending string = "pending"
|
||
|
JobRunning string = "running"
|
||
|
JobError string = "error"
|
||
|
JobStopped string = "stopped"
|
||
|
JobFinished string = "finished"
|
||
|
)
|
||
|
|
||
|
func AddJob(entry models.JobEntry) (int64, error) {
|
||
|
|
||
|
sql := `insert into job (job_type, status, options, parms, cron_str, creation_time, update_time) values (?,"pending",?,?,?,NOW(),NOW())`
|
||
|
o := orm.NewOrm()
|
||
|
p, err := o.Raw(sql).Prepare()
|
||
|
if err != nil {
|
||
|
return 0, err
|
||
|
}
|
||
|
r, err := p.Exec(entry.Type, entry.OptionsStr, entry.ParmsStr, entry.CronStr)
|
||
|
if err != nil {
|
||
|
return 0, err
|
||
|
}
|
||
|
id, err := r.LastInsertId()
|
||
|
return id, err
|
||
|
}
|
||
|
|
||
|
func AddJobLog(id int64, level string, message string) error {
|
||
|
sql := `insert into job_log (job_id, level, message, creation_time, update_time) values (?, ?, ?, NOW(), NOW())`
|
||
|
log.Debugf("trying to add a log for job:%d", id)
|
||
|
o := orm.NewOrm()
|
||
|
p, err := o.Raw(sql).Prepare()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
_, err = p.Exec(id, level, message)
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func UpdateJobStatus(id int64, status string) error {
|
||
|
o := orm.NewOrm()
|
||
|
sql := "update job set status=?, update_time=NOW() where job_id=?"
|
||
|
_, err := o.Raw(sql, status, id).Exec()
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func ListJobs() ([]models.JobEntry, error) {
|
||
|
o := orm.NewOrm()
|
||
|
sql := `select j.job_id, j.job_type, j.status, j.enabled, j.creation_time, j.update_time from job j`
|
||
|
var res []models.JobEntry
|
||
|
_, err := o.Raw(sql).QueryRows(&res)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return res, err
|
||
|
}
|
||
|
|
||
|
func GetJob(id int64) (*models.JobEntry, error) {
|
||
|
o := orm.NewOrm()
|
||
|
sql := `select j.job_id, j.job_type, j.status, j.enabled, j.creation_time, j.update_time from job j where j.job_id = ?`
|
||
|
var res []models.JobEntry
|
||
|
p := make([]interface{}, 1)
|
||
|
p = append(p, id)
|
||
|
n, err := o.Raw(sql, p).QueryRows(&res)
|
||
|
if n == 0 {
|
||
|
return nil, err
|
||
|
}
|
||
|
return &res[0], err
|
||
|
}
|
||
|
|
||
|
func GetJobLogs(jobID int64) ([]models.JobLog, error) {
|
||
|
o := orm.NewOrm()
|
||
|
var res []models.JobLog
|
||
|
p := make([]interface{}, 1)
|
||
|
p = append(p, jobID)
|
||
|
sql := `select l.log_id, l.job_id, l.level, l.message, l.creation_time, l.update_time from job_log l where l.job_id = ?`
|
||
|
_, err := o.Raw(sql, p).QueryRows(&res)
|
||
|
return res, err
|
||
|
}
|