mirror of
https://github.com/go-gitea/gitea
synced 2025-11-03 04:48:25 +00:00
feat: distribute tasks to runner
This commit is contained in:
@@ -5,6 +5,9 @@
|
||||
package bots
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"code.gitea.io/gitea/core"
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
@@ -14,6 +17,7 @@ import (
|
||||
type RunJob struct {
|
||||
ID int64
|
||||
RunID int64
|
||||
Run *Run `xorm:"-"`
|
||||
Name string
|
||||
Ready bool // ready to be executed
|
||||
Attempt int64
|
||||
@@ -36,3 +40,46 @@ func init() {
|
||||
func (RunJob) TableName() string {
|
||||
return "bots_run_job"
|
||||
}
|
||||
|
||||
// LoadAttributes load Run if not loaded
|
||||
func (job *RunJob) LoadAttributes(ctx context.Context) error {
|
||||
if job == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if job.Run == nil {
|
||||
run, err := GetRunByID(ctx, job.RunID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
job.Run = run
|
||||
}
|
||||
if err := job.Run.LoadAttributes(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ErrRunJobNotExist represents an error for bot run job not exist
|
||||
type ErrRunJobNotExist struct {
|
||||
ID int64
|
||||
}
|
||||
|
||||
func (err ErrRunJobNotExist) Error() string {
|
||||
return fmt.Sprintf("run job [%d] is not exist", err.ID)
|
||||
}
|
||||
|
||||
func GetRunJobByID(ctx context.Context, id int64) (*RunJob, error) {
|
||||
var job RunJob
|
||||
has, err := db.GetEngine(ctx).Where("id=?", id).Get(&job)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrRunNotExist{
|
||||
ID: id,
|
||||
}
|
||||
}
|
||||
|
||||
return &job, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user