50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			V
		
	
	
| module models
 | |
| 
 | |
| import time
 | |
| import os
 | |
| 
 | |
| pub struct BuildLog {
 | |
| pub mut:
 | |
| 	id         int       [primary; sql: serial]
 | |
| 	target_id  int       [nonull]
 | |
| 	start_time time.Time [nonull]
 | |
| 	end_time   time.Time [nonull]
 | |
| 	arch       string    [nonull]
 | |
| 	exit_code  int       [nonull]
 | |
| }
 | |
| 
 | |
| // str returns a string representation.
 | |
| pub fn (bl &BuildLog) str() string {
 | |
| 	mut parts := [
 | |
| 		'id: ${bl.id}',
 | |
| 		'target id: ${bl.target_id}',
 | |
| 		'start time: ${bl.start_time.local()}',
 | |
| 		'end time: ${bl.end_time.local()}',
 | |
| 		'duration: ${bl.end_time - bl.start_time}',
 | |
| 		'arch: ${bl.arch}',
 | |
| 		'exit code: ${bl.exit_code}',
 | |
| 	]
 | |
| 	str := parts.join('\n')
 | |
| 
 | |
| 	return str
 | |
| }
 | |
| 
 | |
| // path returns the path to the log file, relative to the logs directory
 | |
| pub fn (bl &BuildLog) path() string {
 | |
| 	filename := bl.start_time.custom_format('YYYY-MM-DD_HH-mm-ss')
 | |
| 
 | |
| 	return os.join_path(bl.target_id.str(), bl.arch, filename)
 | |
| }
 | |
| 
 | |
| [params]
 | |
| pub struct BuildLogFilter {
 | |
| pub mut:
 | |
| 	limit      u64 = 25
 | |
| 	offset     u64
 | |
| 	target     int
 | |
| 	before     time.Time
 | |
| 	after      time.Time
 | |
| 	arch       string
 | |
| 	exit_codes []string
 | |
| }
 |