47 lines
944 B
Go
47 lines
944 B
Go
package tasks
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log/slog"
|
|
|
|
"github.com/hibiken/asynq"
|
|
)
|
|
|
|
const TypeDummy = "proxui.dummy"
|
|
|
|
type DummyPayload struct {
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
func NewDummyTask(message string) (*asynq.Task, error) {
|
|
payload, err := json.Marshal(DummyPayload{Message: message})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return asynq.NewTask(TypeDummy, payload), nil
|
|
}
|
|
|
|
type DummyHandler struct {
|
|
logger *slog.Logger
|
|
}
|
|
|
|
func NewDummyHandler(logger *slog.Logger) DummyHandler {
|
|
return DummyHandler{logger: logger}
|
|
}
|
|
|
|
func (h DummyHandler) ProcessTask(_ context.Context, task *asynq.Task) error {
|
|
var payload DummyPayload
|
|
if err := json.Unmarshal(task.Payload(), &payload); err != nil {
|
|
return fmt.Errorf("decode dummy payload: %w", err)
|
|
}
|
|
if payload.Message == "" {
|
|
return fmt.Errorf("dummy message is required")
|
|
}
|
|
|
|
h.logger.Info("processed dummy job", "message", payload.Message)
|
|
return nil
|
|
}
|