Paul Pan
d42ee0ce54
1. merge woj-runner scripts into woj-server 2. add woj-runner app 3. refactor submission status problem ... 4. jwt middleware update Co-authored-by: cxy004 <cxy004@qq.com> Co-authored-by: wzt <w.zhongtao@qq.com>
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package task
|
|
|
|
import (
|
|
"github.com/WHUPRJ/woj-server/internal/e"
|
|
"github.com/WHUPRJ/woj-server/internal/global"
|
|
"github.com/WHUPRJ/woj-server/internal/model"
|
|
"github.com/WHUPRJ/woj-server/internal/service/runner"
|
|
"github.com/hibiken/asynq"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var _ Service = (*service)(nil)
|
|
|
|
type Service interface {
|
|
ProblemBuild(pvId uint, file string) (string, e.Status)
|
|
ProblemUpdate(status e.Status, pvId uint, ctx string) (string, e.Status)
|
|
SubmitJudge(pvid uint, storageKey string, submission model.Submission) (string, e.Status)
|
|
SubmitUpdate(status e.Status, sid uint, point int32, ctx runner.JudgeStatus) (string, e.Status)
|
|
|
|
GetTaskInfo(string, string) (*asynq.TaskInfo, e.Status)
|
|
}
|
|
|
|
type service struct {
|
|
log *zap.Logger
|
|
queue *asynq.Client
|
|
inspector *asynq.Inspector
|
|
}
|
|
|
|
func NewService(g *global.Global) Service {
|
|
redisOpt := asynq.RedisClientOpt{
|
|
Addr: g.Conf.Redis.Address,
|
|
Password: g.Conf.Redis.Password,
|
|
DB: g.Conf.Redis.QueueDb,
|
|
}
|
|
return &service{
|
|
log: g.Log,
|
|
queue: asynq.NewClient(redisOpt),
|
|
inspector: asynq.NewInspector(redisOpt),
|
|
}
|
|
}
|