woj-server/internal/service/task/service.go

41 lines
1.1 KiB
Go
Raw Normal View History

2022-10-04 18:47:50 +08:00
package task
import (
"github.com/WHUPRJ/woj-server/internal/e"
2022-10-20 16:50:19 +08:00
"github.com/WHUPRJ/woj-server/internal/global"
"github.com/WHUPRJ/woj-server/internal/model"
"github.com/WHUPRJ/woj-server/internal/service/runner"
2022-10-04 18:47:50 +08:00
"github.com/hibiken/asynq"
"go.uber.org/zap"
)
var _ Service = (*service)(nil)
type Service interface {
ProblemBuild(data *model.ProblemBuildPayload) (string, e.Status)
ProblemUpdate(data *model.ProblemUpdatePayload) (string, e.Status)
SubmitJudge(data *model.SubmitJudgePayload) (string, e.Status)
SubmitUpdate(data *model.SubmitUpdatePayload, ctx runner.JudgeStatus) (string, e.Status)
GetTaskInfo(string, string) (*asynq.TaskInfo, e.Status)
2022-10-04 18:47:50 +08:00
}
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,
2022-10-13 16:32:44 +08:00
DB: g.Conf.Redis.QueueDb,
2022-10-04 18:47:50 +08:00
}
return &service{
log: g.Log,
queue: asynq.NewClient(redisOpt),
inspector: asynq.NewInspector(redisOpt),
}
}