forked from vieter-v/vieter
				
			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