
Previously, the execution.Storer interface was embedded in the Runner interface. However, this resulted in calls like runner.Add(...) to add an execution to the store which is kind of ugly. Thus, we decided to add only the required functions to the runner interface and make the execution.Storer a field of the implementation.
23 lines
677 B
Go
23 lines
677 B
Go
package execution
|
|
|
|
import (
|
|
"gitlab.hpi.de/codeocean/codemoon/poseidon/pkg/dto"
|
|
)
|
|
|
|
// ID is an identifier for an execution.
|
|
type ID string
|
|
|
|
// Storer stores executions.
|
|
type Storer interface {
|
|
// Add adds a runner to the storage.
|
|
// It overwrites the existing execution if an execution with the same id already exists.
|
|
Add(id ID, executionRequest *dto.ExecutionRequest)
|
|
|
|
// Exists returns whether the execution with the given id exists in the store.
|
|
Exists(id ID) bool
|
|
|
|
// Pop deletes the execution with the given id from the storage and returns it.
|
|
// If no such execution exists, ok is false and true otherwise.
|
|
Pop(id ID) (request *dto.ExecutionRequest, ok bool)
|
|
}
|