morffix/worker/task.go

64 lines
1.4 KiB
Go

package worker
import (
"context"
"encoding/json"
"fmt"
"git.lastassault.de/speatzle/morffix/rpc"
"git.lastassault.de/speatzle/morffix/task"
"git.lastassault.de/speatzle/morffix/types"
)
func init() {
rpcServer.RegisterMethod("task-start", taskStart)
rpcServer.RegisterMethod("task-status", taskStatus)
rpcServer.RegisterMethod("task-delete", taskDelete)
}
func taskStart(ctx context.Context, req rpc.Request) (any, error) {
var data types.TaskStart
err := json.Unmarshal(*req.Params, &data)
if err != nil {
return nil, fmt.Errorf("Unmarshal Task Start Params: %w", err)
}
err = task.StartTask(conf, data)
if err != nil {
return nil, fmt.Errorf("Starting Task: %w", err)
}
return nil, nil
}
func taskStatus(ctx context.Context, req rpc.Request) (any, error) {
var data types.TaskStatusRequest
err := json.Unmarshal(*req.Params, &data)
if err != nil {
return nil, fmt.Errorf("Unmarshal Task Status Request: %w", err)
}
t, err := task.Get(data)
if err != nil {
return nil, fmt.Errorf("Get Task Status: %w", err)
}
return types.TaskStatus{
Task: *t,
}, nil
}
func taskDelete(ctx context.Context, req rpc.Request) (any, error) {
var data int
err := json.Unmarshal(*req.Params, &data)
if err != nil {
return nil, fmt.Errorf("Unmarshal Task Delete ID: %w", err)
}
err = task.DeleteTask(data)
if err != nil {
return nil, fmt.Errorf("Deleting Task: %w", err)
}
return nil, nil
}