53 lines
1.1 KiB
Go
53 lines
1.1 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) {
|
|
return types.TaskStatus{
|
|
Tasks: task.Get(),
|
|
}, 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
|
|
}
|