Skip to content
Snippets Groups Projects
runnable.go 536 B
// Copyright 2023 schukai GmbH
// SPDX-License-Identifier: AGPL-3.0

package jobqueue

import (
	"context"
)

type ResultStatus int

const (
	ResultStatusSuccess ResultStatus = iota
	ResultStatusFailed
)

type RunGenericResult interface {
	GetStatus() ResultStatus
}

type RunResult[T any] struct {
	Status ResultStatus
	Data   T
}

func (r RunResult[T]) GetStatus() ResultStatus {
	return r.Status
}

type Runnable[T any] interface {
	Run(ctx context.Context) (RunResult[T], error)
	GetType() string
	GetPersistence() RunnableImport
}