@@ -164,7 +164,7 @@ impl ExperimentData {
164164 Ok ( ( ) )
165165 }
166166
167- pub fn progress ( & self , db : & Database ) -> Result < u8 > {
167+ pub fn raw_progress ( & self , db : & Database ) -> Result < ( u32 , u32 ) > {
168168 let results_len: u32 = db
169169 . get_row (
170170 "SELECT COUNT(*) AS count FROM results WHERE experiment = ?1;" ,
@@ -173,18 +173,23 @@ impl ExperimentData {
173173 ) ?
174174 . unwrap ( ) ;
175175
176- // Avoid the second query if there are no results -- we already know the progress is 0%
177- if results_len > 0 {
178- let crates_len: u32 = db
179- . get_row (
180- "SELECT COUNT(*) AS count FROM experiment_crates \
181- WHERE experiment = ?1 AND skipped = 0;",
182- & [ & self . experiment . name . as_str ( ) ] ,
183- |r| r. get ( "count" ) ,
184- ) ?
185- . unwrap ( ) ;
176+ let crates_len: u32 = db
177+ . get_row (
178+ "SELECT COUNT(*) AS count FROM experiment_crates \
179+ WHERE experiment = ?1 AND skipped = 0;",
180+ & [ & self . experiment . name . as_str ( ) ] ,
181+ |r| r. get ( "count" ) ,
182+ ) ?
183+ . unwrap ( ) ;
184+
185+ Ok ( ( results_len, crates_len * 2 ) )
186+ }
187+
188+ pub fn progress ( & self , db : & Database ) -> Result < u8 > {
189+ let ( results_len, crates_len) = self . raw_progress ( db) ?;
186190
187- Ok ( ( results_len as f32 * 50.0 / crates_len as f32 ) . ceil ( ) as u8 )
191+ if crates_len != 0 {
192+ Ok ( ( results_len as f32 * 100.0 / crates_len as f32 ) . ceil ( ) as u8 )
188193 } else {
189194 Ok ( 0 )
190195 }
0 commit comments