@@ -82,14 +82,17 @@ fn collect(tx: &postgres::Transaction,
82
82
let download: VersionDownload = Model :: from_row ( & row) ;
83
83
assert ! ( map. insert( download. id, download) . is_none( ) ) ;
84
84
}
85
- println ! ( "updating {} versions" , map. len( ) ) ;
85
+ println ! ( "updating {} versions (cutoff {})" , map. len( ) ,
86
+ time:: at( cutoff) . rfc822( ) ) ;
86
87
if map. len ( ) == 0 { return Ok ( None ) }
87
88
88
89
let mut max = 0 ;
89
90
let mut total = 0 ;
90
91
for ( id, download) in map. iter ( ) {
91
92
if * id > max { max = * id; }
92
- if download. counted == download. downloads { continue }
93
+ if download. date > cutoff && download. counted == download. downloads {
94
+ continue
95
+ }
93
96
let amt = download. downloads - download. counted ;
94
97
95
98
let crate_id = Version :: find ( tx, download. version_id ) . unwrap ( ) . crate_id ;
@@ -186,6 +189,29 @@ mod test {
186
189
assert_eq ! ( Version :: find( & tx, version. id) . unwrap( ) . downloads, 1 ) ;
187
190
}
188
191
192
+ #[ test]
193
+ fn set_processed_true ( ) {
194
+ let conn = conn ( ) ;
195
+ let tx = conn. transaction ( ) . unwrap ( ) ;
196
+ let user = user ( & tx) ;
197
+ let krate = Crate :: find_or_insert ( & tx, "foo" , user. id , & None ,
198
+ & None , & None , & None , & [ ] , & None ,
199
+ & None , & None ) . unwrap ( ) ;
200
+ let version = Version :: insert ( & tx, krate. id ,
201
+ & semver:: Version :: parse ( "1.0.0" ) . unwrap ( ) ,
202
+ & HashMap :: new ( ) , & [ ] ) . unwrap ( ) ;
203
+ tx. execute ( "INSERT INTO version_downloads \
204
+ (version_id, downloads, counted, date, processed)
205
+ VALUES ($1, 2, 2, current_date - interval '2 days', false)" ,
206
+ & [ & version. id ] ) . unwrap ( ) ;
207
+ :: update ( & tx) . unwrap ( ) ;
208
+ let stmt = tx. prepare ( "SELECT processed FROM version_downloads
209
+ WHERE version_id = $1" ) . unwrap ( ) ;
210
+ let processed: bool = stmt. query ( & [ & version. id ] ) . unwrap ( ) . iter ( )
211
+ . next ( ) . unwrap ( ) . get ( "processed" ) ;
212
+ assert ! ( processed) ;
213
+ }
214
+
189
215
#[ test]
190
216
fn increment_a_little ( ) {
191
217
let conn = conn ( ) ;
0 commit comments