woj-server/internal/api/runner/handler.go

46 lines
1.2 KiB
Go
Raw Normal View History

package runner
import (
"context"
"errors"
2023-07-14 21:47:11 +08:00
"git.0x7f.app/WOJ/woj-server/internal/e"
2023-07-15 16:19:49 +08:00
"git.0x7f.app/WOJ/woj-server/internal/misc/log"
2023-07-14 21:47:11 +08:00
"git.0x7f.app/WOJ/woj-server/internal/service/runner"
"git.0x7f.app/WOJ/woj-server/internal/service/storage"
"git.0x7f.app/WOJ/woj-server/internal/service/task"
"github.com/hibiken/asynq"
2023-07-15 16:19:49 +08:00
"github.com/samber/do"
"go.uber.org/zap"
)
var _ Handler = (*handler)(nil)
type Handler interface {
Build(_ context.Context, t *asynq.Task) error
Judge(_ context.Context, t *asynq.Task) error
}
type handler struct {
log *zap.Logger
runnerService runner.Service
taskService task.Service
storageService storage.Service
}
2023-07-15 16:19:49 +08:00
func NewRunner(i *do.Injector) (Handler, error) {
hnd := &handler{
2023-07-15 16:19:49 +08:00
log: do.MustInvoke[log.Service](i).GetLogger("api.runner"),
runnerService: do.MustInvoke[runner.Service](i),
taskService: do.MustInvoke[task.Service](i),
storageService: do.MustInvoke[storage.Service](i),
}
2024-01-28 21:51:16 +08:00
status := hnd.runnerService.EnsureDeps()
if status != e.Success {
2023-07-15 16:19:49 +08:00
hnd.log.Error("failed to ensure runner dependencies", zap.String("status", status.String()))
return nil, errors.New("failed to ensure dependencies")
}
return hnd, nil
}