feat(server): added endpoint for content of build log
parent
393e641a76
commit
139142fcec
|
@ -3,10 +3,12 @@ module db
|
||||||
import time
|
import time
|
||||||
|
|
||||||
pub struct BuildLog {
|
pub struct BuildLog {
|
||||||
|
pub:
|
||||||
id int [primary; sql: serial]
|
id int [primary; sql: serial]
|
||||||
repo_id int [nonull]
|
repo_id int [nonull]
|
||||||
start_time time.Time [nonull]
|
start_time time.Time [nonull]
|
||||||
end_time time.Time [nonull]
|
end_time time.Time [nonull]
|
||||||
|
arch string [nonull]
|
||||||
exit_code int [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))
|
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
|
// parse_query_time unescapes an HTTP query parameter & tries to parse it as a
|
||||||
// time.Time struct.
|
// time.Time struct.
|
||||||
fn parse_query_time(query string) ?time.Time {
|
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.'))
|
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.'))
|
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
|
repo_id: repo
|
||||||
start_time: start_time
|
start_time: start_time
|
||||||
end_time: end_time
|
end_time: end_time
|
||||||
|
arch: arch
|
||||||
exit_code: exit_code
|
exit_code: exit_code
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue