versia-go/internal/service/svc_impls/task_service_impl.go

52 lines
1.2 KiB
Go
Raw Normal View History

2024-08-11 03:51:22 +02:00
package svc_impls
import (
"context"
2024-08-29 00:46:32 +02:00
2024-08-28 00:25:25 +02:00
"github.com/versia-pub/versia-go/internal/service"
2024-08-29 00:46:32 +02:00
"github.com/versia-pub/versia-go/internal/task"
2024-08-11 03:51:22 +02:00
"git.devminer.xyz/devminer/unitel"
"github.com/go-logr/logr"
2024-08-28 00:25:25 +02:00
"github.com/versia-pub/versia-go/pkg/taskqueue"
2024-08-11 03:51:22 +02:00
)
var _ service.TaskService = (*TaskServiceImpl)(nil)
type TaskServiceImpl struct {
2024-08-29 00:46:32 +02:00
manager task.Manager
2024-08-11 03:51:22 +02:00
telemetry *unitel.Telemetry
log logr.Logger
}
2024-08-29 00:46:32 +02:00
func NewTaskServiceImpl(manager task.Manager, telemetry *unitel.Telemetry, log logr.Logger) *TaskServiceImpl {
2024-08-11 03:51:22 +02:00
return &TaskServiceImpl{
2024-08-29 00:46:32 +02:00
manager: manager,
2024-08-11 03:51:22 +02:00
telemetry: telemetry,
log: log,
}
}
2024-08-29 00:46:32 +02:00
func (i TaskServiceImpl) ScheduleNoteTask(ctx context.Context, type_ string, data any) error {
2024-08-20 22:43:26 +02:00
s := i.telemetry.StartSpan(ctx, "function", "svc_impls/TaskServiceImpl.ScheduleTask")
2024-08-11 03:51:22 +02:00
defer s.End()
ctx = s.Context()
t, err := taskqueue.NewTask(type_, data)
if err != nil {
i.log.Error(err, "Failed to create task", "type", type_)
return err
}
2024-08-29 00:46:32 +02:00
if err := i.manager.Notes().Submit(ctx, t); err != nil {
2024-08-11 03:51:22 +02:00
i.log.Error(err, "Failed to schedule task", "type", type_, "taskID", t.ID)
return err
}
i.log.V(2).Info("Scheduled task", "type", type_, "taskID", t.ID)
return nil
}