package db
import (
"time"
)
type JobStatus string
const (
StatusQueued JobStatus = "queued"
StatusCloning JobStatus = "cloning"
StatusImporting JobStatus = "importing"
StatusCompleted JobStatus = "completed"
StatusFailed JobStatus = "failed"
StatusAuthorizationRequired JobStatus = "authorization_required"
)
func (s JobStatus) IsTerminal() bool {
return s == StatusCompleted || s == StatusFailed || s == StatusAuthorizationRequired
}
func (s JobStatus) CanRetry() bool {
return s == StatusFailed || s == StatusAuthorizationRequired
}
type Batch struct {
ID string
OwnerDid string
RequestID string
RequestDigest string
EncryptedToken *string
CredentialExpiresAt *time.Time
CreatedAt time.Time
UpdatedAt time.Time
}
type Job struct {
ID int64
BatchID string
RepoDid string
Name string
KnotDid string
SourceURL string
Description string
Private bool
CapabilityToken *string
Status JobStatus
Attempts int
NextAttemptAt time.Time
Error *string
CreatedAt time.Time
UpdatedAt time.Time
}
type Task struct {
ID string
OwnerDid string
CreatedAt time.Time
UpdatedAt time.Time
Jobs []Job
}
func (b *Batch) Task(jobs []Job) Task {
return Task{
ID: b.ID,
OwnerDid: b.OwnerDid,
CreatedAt: b.CreatedAt,
UpdatedAt: b.UpdatedAt,
Jobs: jobs,
}
}