38 lines
949 B
Go
38 lines
949 B
Go
package consumer
|
|
|
|
import (
|
|
"context"
|
|
"git.0x7f.app/WOJ/woj-server/internal/misc/log"
|
|
"git.0x7f.app/WOJ/woj-server/internal/service/problem"
|
|
"git.0x7f.app/WOJ/woj-server/internal/service/status"
|
|
"git.0x7f.app/WOJ/woj-server/internal/service/task"
|
|
"github.com/hibiken/asynq"
|
|
"github.com/samber/do"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var _ Handler = (*handler)(nil)
|
|
|
|
type Handler interface {
|
|
ProblemUpdate(_ context.Context, t *asynq.Task) error
|
|
SubmitUpdate(_ context.Context, t *asynq.Task) error
|
|
}
|
|
|
|
type handler struct {
|
|
log *zap.Logger
|
|
problemService problem.Service
|
|
statusService status.Service
|
|
taskService task.Service
|
|
}
|
|
|
|
func NewConsumer(i *do.Injector) Handler {
|
|
hnd := &handler{
|
|
log: do.MustInvoke[log.Service](i).GetLogger("api.consumer"),
|
|
problemService: do.MustInvoke[problem.Service](i),
|
|
statusService: do.MustInvoke[status.Service](i),
|
|
taskService: do.MustInvoke[task.Service](i),
|
|
}
|
|
|
|
return hnd
|
|
}
|