65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			V
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			V
		
	
	
	
	
	
module model
 | 
						|
 | 
						|
// Job represents a job, a job is only usable in the context of a runner (which is part of a hero)
 | 
						|
// stored in the context db at job:<callerid>:<id> (job is hset)
 | 
						|
@[heap]
 | 
						|
pub struct RunnerJob {
 | 
						|
pub mut:
 | 
						|
	id            u32 // this job id is given by the actor who called for it
 | 
						|
	caller_id     u32 // is the actor which called for this job
 | 
						|
	context_id    u32 // each job is executed in a context
 | 
						|
	script        string
 | 
						|
	script_type   ScriptType
 | 
						|
	timeout       u32 // in sec
 | 
						|
	retries       u8
 | 
						|
	env_vars      map[string]string
 | 
						|
	result        map[string]string
 | 
						|
	prerequisites []string
 | 
						|
	dependends    []u32
 | 
						|
	created_at    u32 // epoch
 | 
						|
	updated_at    u32 // epoch
 | 
						|
	status        JobStatus
 | 
						|
}
 | 
						|
 | 
						|
// ScriptType represents the type of script
 | 
						|
pub enum ScriptType {
 | 
						|
	osis
 | 
						|
	sal
 | 
						|
	v
 | 
						|
	python
 | 
						|
}
 | 
						|
 | 
						|
pub fn (self RunnerJob) redis_key() string {
 | 
						|
	return 'job:${self.caller_id}:${self.id}'
 | 
						|
}
 | 
						|
 | 
						|
// queue_suffix returns the queue suffix for the script type
 | 
						|
pub fn (st ScriptType) queue_suffix() string {
 | 
						|
	return match st {
 | 
						|
		.osis { 'osis' }
 | 
						|
		.sal { 'sal' }
 | 
						|
		.v { 'v' }
 | 
						|
		.python { 'python' }
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// JobStatus represents the status of a job
 | 
						|
pub enum JobStatus {
 | 
						|
	dispatched
 | 
						|
	waiting_for_prerequisites
 | 
						|
	started
 | 
						|
	error
 | 
						|
	finished
 | 
						|
}
 | 
						|
 | 
						|
// str returns the string representation of JobStatus
 | 
						|
pub fn (js JobStatus) str() string {
 | 
						|
	return match js {
 | 
						|
		.dispatched { 'dispatched' }
 | 
						|
		.waiting_for_prerequisites { 'waiting_for_prerequisites' }
 | 
						|
		.started { 'started' }
 | 
						|
		.error { 'error' }
 | 
						|
		.finished { 'finished' }
 | 
						|
	}
 | 
						|
}
 |