diff options
author | Kornel <kornel@geekhood.net> | 2020-03-03 19:23:44 +0000 |
---|---|---|
committer | Kornel <kornel@geekhood.net> | 2020-03-03 19:26:07 +0000 |
commit | 29bbe2dea1cd9267cbdbb67957b8accc8c92ee8f (patch) | |
tree | 3d31ce1170b2452bec4e31625703c19297d7e911 /crate_db/src/lib_crate_db.rs | |
parent | 9d2af084e1a86015e473b46501cc7d7b9abe1d19 (diff) |
Better recently updated
Diffstat (limited to 'crate_db/src/lib_crate_db.rs')
-rw-r--r-- | crate_db/src/lib_crate_db.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crate_db/src/lib_crate_db.rs b/crate_db/src/lib_crate_db.rs index 857bbf5..a22c2f2 100644 --- a/crate_db/src/lib_crate_db.rs +++ b/crate_db/src/lib_crate_db.rs @@ -964,20 +964,22 @@ impl CrateDb { /// Newly added or updated crates in any category /// /// Returns `origin` strings - pub async fn recently_updated_crates(&self) -> FResult<Vec<Origin>> { + pub async fn recently_updated_crates(&self, limit: u32) -> FResult<Vec<(Origin, f64)>> { self.with_read("recently_updated_crates", |conn| { let mut query = conn.prepare_cached(r#" select max(created) + 3600*24*7 * k.ranking, -- week*rank ~= best this week + k.ranking, k.origin from crate_versions v join crates k on v.crate_id = k.id group by v.crate_id having count(*) > 1 -- so these are updates, not new releases order by 1 desc - limit 50 + limit ?1 "#)?; - let q = query.query_map(NO_PARAMS, |row| { - Ok(Origin::from_str(row.get_raw(1).as_str().unwrap())) + let q = query.query_map(&[&limit], |row| { + let origin = Origin::from_str(row.get_raw(2).as_str()?); + Ok((origin, row.get(1)?)) })?; let q = q.filter_map(|r| r.ok()); Ok(q.collect()) |