forked from vieter-v/vieter
				
			feat(server): added endpoint for content of build log
							parent
							
								
									393e641a76
								
							
						
					
					
						commit
						139142fcec
					
				|  | @ -3,10 +3,12 @@ module db | |||
| import time | ||||
| 
 | ||||
| pub struct BuildLog { | ||||
| pub: | ||||
| 	id         int       [primary; sql: serial] | ||||
| 	repo_id    int       [nonull] | ||||
| 	start_time time.Time [nonull] | ||||
| 	end_time   time.Time [nonull] | ||||
| 	arch string [nonull] | ||||
| 	exit_code  int       [nonull] | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -24,6 +24,30 @@ fn (mut app App) get_logs() web.Result { | |||
| 	return app.json(http.Status.ok, new_data_response(logs)) | ||||
| } | ||||
| 
 | ||||
| ['/api/logs/:id'; get] | ||||
| fn (mut app App) get_single_log(id int) web.Result { | ||||
| 	if !app.is_authorized() { | ||||
| 		return app.json(http.Status.unauthorized, new_response('Unauthorized.')) | ||||
| 	} | ||||
| 	 | ||||
| 	log := app.db.get_build_log(id) or { return app.not_found() } | ||||
| 
 | ||||
| 	return app.json(http.Status.ok, new_data_response(log)) | ||||
| } | ||||
| 
 | ||||
| ['/api/logs/:id/content'; get] | ||||
| fn (mut app App) get_log_contents(id int) web.Result { | ||||
| 	if !app.is_authorized() { | ||||
| 		return app.json(http.Status.unauthorized, new_response('Unauthorized.')) | ||||
| 	} | ||||
| 
 | ||||
| 	log := app.db.get_build_log(id) or { return app.not_found() } | ||||
| 	file_name := log.start_time.custom_format('YYYY-MM-DD_HH-mm-ss') | ||||
| 	full_path := os.join_path(app.conf.data_dir, server.logs_dir_name, log.repo_id.str(), log.arch, file_name) | ||||
| 
 | ||||
| 	return app.file(full_path) | ||||
| } | ||||
| 
 | ||||
| // parse_query_time unescapes an HTTP query parameter & tries to parse it as a | ||||
| // time.Time struct. | ||||
| fn parse_query_time(query string) ?time.Time { | ||||
|  | @ -44,7 +68,7 @@ fn (mut app App) post_log() web.Result { | |||
| 		return app.json(http.Status.bad_request, new_response('Invalid or missing start time.')) | ||||
| 	} | ||||
| 
 | ||||
| 	end_time := time.parse(app.query['endTime'].replace('_', ' ')) or { | ||||
| 	end_time := parse_query_time(app.query['endTime']) or { | ||||
| 		return app.json(http.Status.bad_request, new_response('Invalid or missing end time.')) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -71,6 +95,7 @@ fn (mut app App) post_log() web.Result { | |||
| 		repo_id: repo | ||||
| 		start_time: start_time | ||||
| 		end_time: end_time | ||||
| 		arch: arch | ||||
| 		exit_code: exit_code | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue