initial commit
This commit is contained in:
127
pkg/types/types.go
Normal file
127
pkg/types/types.go
Normal file
@@ -0,0 +1,127 @@
|
||||
package types
|
||||
|
||||
import "time"
|
||||
|
||||
// User represents a user in the system
|
||||
type User struct {
|
||||
ID int64 `json:"id"`
|
||||
Email string `json:"email"`
|
||||
Name string `json:"name"`
|
||||
OAuthProvider string `json:"oauth_provider"` // "google" or "discord"
|
||||
OAuthID string `json:"oauth_id"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// JobStatus represents the status of a job
|
||||
type JobStatus string
|
||||
|
||||
const (
|
||||
JobStatusPending JobStatus = "pending"
|
||||
JobStatusRunning JobStatus = "running"
|
||||
JobStatusCompleted JobStatus = "completed"
|
||||
JobStatusFailed JobStatus = "failed"
|
||||
JobStatusCancelled JobStatus = "cancelled"
|
||||
)
|
||||
|
||||
// Job represents a render job
|
||||
type Job struct {
|
||||
ID int64 `json:"id"`
|
||||
UserID int64 `json:"user_id"`
|
||||
Name string `json:"name"`
|
||||
Status JobStatus `json:"status"`
|
||||
Progress float64 `json:"progress"` // 0.0 to 100.0
|
||||
FrameStart int `json:"frame_start"`
|
||||
FrameEnd int `json:"frame_end"`
|
||||
OutputFormat string `json:"output_format"` // PNG, JPEG, EXR, etc.
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
StartedAt *time.Time `json:"started_at,omitempty"`
|
||||
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
||||
ErrorMessage string `json:"error_message,omitempty"`
|
||||
}
|
||||
|
||||
// RunnerStatus represents the status of a runner
|
||||
type RunnerStatus string
|
||||
|
||||
const (
|
||||
RunnerStatusOnline RunnerStatus = "online"
|
||||
RunnerStatusOffline RunnerStatus = "offline"
|
||||
RunnerStatusBusy RunnerStatus = "busy"
|
||||
)
|
||||
|
||||
// Runner represents a render runner
|
||||
type Runner struct {
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Hostname string `json:"hostname"`
|
||||
IPAddress string `json:"ip_address"`
|
||||
Status RunnerStatus `json:"status"`
|
||||
LastHeartbeat time.Time `json:"last_heartbeat"`
|
||||
Capabilities string `json:"capabilities"` // JSON string of capabilities
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// TaskStatus represents the status of a task
|
||||
type TaskStatus string
|
||||
|
||||
const (
|
||||
TaskStatusPending TaskStatus = "pending"
|
||||
TaskStatusRunning TaskStatus = "running"
|
||||
TaskStatusCompleted TaskStatus = "completed"
|
||||
TaskStatusFailed TaskStatus = "failed"
|
||||
)
|
||||
|
||||
// Task represents a render task assigned to a runner
|
||||
type Task struct {
|
||||
ID int64 `json:"id"`
|
||||
JobID int64 `json:"job_id"`
|
||||
RunnerID *int64 `json:"runner_id,omitempty"`
|
||||
FrameStart int `json:"frame_start"`
|
||||
FrameEnd int `json:"frame_end"`
|
||||
Status TaskStatus `json:"status"`
|
||||
OutputPath string `json:"output_path,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
StartedAt *time.Time `json:"started_at,omitempty"`
|
||||
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
||||
ErrorMessage string `json:"error_message,omitempty"`
|
||||
}
|
||||
|
||||
// JobFileType represents the type of file
|
||||
type JobFileType string
|
||||
|
||||
const (
|
||||
JobFileTypeInput JobFileType = "input"
|
||||
JobFileTypeOutput JobFileType = "output"
|
||||
)
|
||||
|
||||
// JobFile represents a file associated with a job
|
||||
type JobFile struct {
|
||||
ID int64 `json:"id"`
|
||||
JobID int64 `json:"job_id"`
|
||||
FileType JobFileType `json:"file_type"`
|
||||
FilePath string `json:"file_path"`
|
||||
FileName string `json:"file_name"`
|
||||
FileSize int64 `json:"file_size"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// CreateJobRequest represents a request to create a new job
|
||||
type CreateJobRequest struct {
|
||||
Name string `json:"name"`
|
||||
FrameStart int `json:"frame_start"`
|
||||
FrameEnd int `json:"frame_end"`
|
||||
OutputFormat string `json:"output_format"`
|
||||
}
|
||||
|
||||
// UpdateJobProgressRequest represents a request to update job progress
|
||||
type UpdateJobProgressRequest struct {
|
||||
Progress float64 `json:"progress"`
|
||||
}
|
||||
|
||||
// RegisterRunnerRequest represents a request to register a runner
|
||||
type RegisterRunnerRequest struct {
|
||||
Name string `json:"name"`
|
||||
Hostname string `json:"hostname"`
|
||||
IPAddress string `json:"ip_address"`
|
||||
Capabilities string `json:"capabilities"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user