feat(server): allow filtering of builds per repo
parent
7e01dbafec
commit
393e641a76
|
@ -4,7 +4,7 @@ import time
|
||||||
|
|
||||||
pub struct BuildLog {
|
pub struct BuildLog {
|
||||||
id int [primary; sql: serial]
|
id int [primary; sql: serial]
|
||||||
repo GitRepo [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]
|
||||||
exit_code int [nonull]
|
exit_code int [nonull]
|
||||||
|
@ -19,6 +19,16 @@ pub fn (db &VieterDb) get_build_logs() []BuildLog {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get_build_logs_for_repo returns all BuildLog's in the database for a given
|
||||||
|
// repo.
|
||||||
|
pub fn (db &VieterDb) get_build_logs_for_repo(repo_id int) []BuildLog {
|
||||||
|
res := sql db.conn {
|
||||||
|
select from BuildLog where repo_id == repo_id order by id
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
// get_build_log tries to return a specific BuildLog.
|
// get_build_log tries to return a specific BuildLog.
|
||||||
pub fn (db &VieterDb) get_build_log(id int) ?BuildLog {
|
pub fn (db &VieterDb) get_build_log(id int) ?BuildLog {
|
||||||
res := sql db.conn {
|
res := sql db.conn {
|
||||||
|
|
|
@ -15,7 +15,11 @@ fn (mut app App) get_logs() web.Result {
|
||||||
return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
|
return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
logs := app.db.get_build_logs()
|
logs := if 'repo' in app.query {
|
||||||
|
app.db.get_build_logs_for_repo(app.query['repo'].int())
|
||||||
|
} else {
|
||||||
|
app.db.get_build_logs()
|
||||||
|
}
|
||||||
|
|
||||||
return app.json(http.Status.ok, new_data_response(logs))
|
return app.json(http.Status.ok, new_data_response(logs))
|
||||||
}
|
}
|
||||||
|
@ -56,13 +60,15 @@ fn (mut app App) post_log() web.Result {
|
||||||
|
|
||||||
arch := app.query['arch']
|
arch := app.query['arch']
|
||||||
|
|
||||||
repo := app.db.get_git_repo(app.query['repo'].int()) or {
|
repo := app.query['repo'].int()
|
||||||
return app.json(http.Status.bad_request, new_response('Unknown repo.'))
|
|
||||||
|
if repo == 0 {
|
||||||
|
return app.json(http.Status.bad_request, new_response('Invalid Git repo.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store log in db
|
// Store log in db
|
||||||
log := db.BuildLog{
|
log := db.BuildLog{
|
||||||
repo: repo
|
repo_id: repo
|
||||||
start_time: start_time
|
start_time: start_time
|
||||||
end_time: end_time
|
end_time: end_time
|
||||||
exit_code: exit_code
|
exit_code: exit_code
|
||||||
|
@ -70,7 +76,7 @@ fn (mut app App) post_log() web.Result {
|
||||||
|
|
||||||
app.db.add_build_log(log)
|
app.db.add_build_log(log)
|
||||||
|
|
||||||
repo_logs_dir := os.join_path(app.conf.data_dir, logs_dir_name, repo.id.str(), arch)
|
repo_logs_dir := os.join_path(app.conf.data_dir, logs_dir_name, repo.str(), arch)
|
||||||
|
|
||||||
// Create the logs directory of it doesn't exist
|
// Create the logs directory of it doesn't exist
|
||||||
if !os.exists(repo_logs_dir) {
|
if !os.exists(repo_logs_dir) {
|
||||||
|
|
Loading…
Reference in New Issue