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, } }