87 lines
1.6 KiB
Go
87 lines
1.6 KiB
Go
package usecase
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// Use-case boundary types. Adapters map their wire formats onto these, so the
|
|
// HTTP shape can change without touching business code.
|
|
|
|
type CreateJobInput struct {
|
|
Workload string
|
|
InputURI string
|
|
Parameters map[string]any
|
|
Chunks []ChunkInput
|
|
}
|
|
|
|
type ChunkInput struct {
|
|
ChunkIndex int
|
|
Workload string
|
|
InputURI string
|
|
InputSHA256 string
|
|
Parameters map[string]any
|
|
MaxAttempts int
|
|
}
|
|
|
|
type RegisterWorkerInput struct {
|
|
Name string
|
|
Capabilities []string
|
|
}
|
|
|
|
type ClaimTaskInput struct {
|
|
WorkerID string
|
|
Workloads []string
|
|
}
|
|
|
|
type RenewLeaseInput struct {
|
|
TaskID uuid.UUID
|
|
WorkerID string
|
|
Attempt int
|
|
}
|
|
|
|
type CompleteTaskInput struct {
|
|
TaskID uuid.UUID
|
|
WorkerID string
|
|
Attempt int
|
|
ResultArtifactID uuid.UUID
|
|
Metrics map[string]any
|
|
}
|
|
|
|
type SubmitDatasetInput struct {
|
|
Workload string
|
|
Parameters map[string]any
|
|
RowsPerShard int
|
|
// MaxRows limits how many data rows are turned into shards. Zero means the
|
|
// whole uploaded dataset; the input artifact itself remains stored intact.
|
|
MaxRows int
|
|
Filename string
|
|
ContentType string
|
|
Body io.Reader
|
|
}
|
|
|
|
type SubmitDatasetResult struct {
|
|
JobID uuid.UUID
|
|
TaskCount int
|
|
InputArtifactID uuid.UUID
|
|
}
|
|
|
|
type UploadArtifactInput struct {
|
|
TaskID uuid.UUID
|
|
WorkerID string
|
|
Attempt int
|
|
Filename string
|
|
ContentType string
|
|
Body io.Reader
|
|
}
|
|
|
|
type FailTaskInput struct {
|
|
TaskID uuid.UUID
|
|
WorkerID string
|
|
Attempt int
|
|
ErrorCode string
|
|
ErrorMessage string
|
|
Retryable bool
|
|
}
|