woj-server/internal/service/task/service.go
Paul Pan d42ee0ce54 feat: a big update
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>
2022-10-22 17:38:39 +08:00

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),
}
}