woj-server/internal/api/consumer/submitUpdate.go

38 lines
922 B
Go

package consumer
import (
"context"
"encoding/json"
"fmt"
"git.0x7f.app/WOJ/woj-server/internal/e"
"git.0x7f.app/WOJ/woj-server/internal/model"
"git.0x7f.app/WOJ/woj-server/internal/service/status"
"github.com/hibiken/asynq"
"go.uber.org/zap"
)
func (h *handler) SubmitUpdate(_ context.Context, t *asynq.Task) error {
p := new(model.SubmitUpdatePayload)
if err := json.Unmarshal(t.Payload(), &p); err != nil {
return fmt.Errorf("json.Unmarshal failed: %v: %w", err, asynq.SkipRetry)
}
if p.Status != e.Success {
h.log.Warn("RunnerError", zap.Any("payload", p))
}
createData := &status.CreateData{
SubmissionID: p.SubmissionID,
ProblemVersionID: p.ProblemVersionID,
UserDir: p.UserDir,
Context: p.Context,
Point: p.Point,
}
_, eStatus := h.statusService.Create(createData)
if eStatus != e.Success {
return fmt.Errorf(eStatus.String())
}
return nil
}