summaryrefslogtreecommitdiffstats
path: root/crate_db/src/lib_crate_db.rs
diff options
context:
space:
mode:
authorKornel <kornel@geekhood.net>2020-03-03 19:23:44 +0000
committerKornel <kornel@geekhood.net>2020-03-03 19:26:07 +0000
commit29bbe2dea1cd9267cbdbb67957b8accc8c92ee8f (patch)
tree3d31ce1170b2452bec4e31625703c19297d7e911 /crate_db/src/lib_crate_db.rs
parent9d2af084e1a86015e473b46501cc7d7b9abe1d19 (diff)
Better recently updated
Diffstat (limited to 'crate_db/src/lib_crate_db.rs')
-rw-r--r--crate_db/src/lib_crate_db.rs10
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())