diff --git a/src/models/dependency.rs b/src/models/dependency.rs index 408be4a08a4..6681464ae23 100644 --- a/src/models/dependency.rs +++ b/src/models/dependency.rs @@ -1,4 +1,4 @@ -use diesel::sql_types::{Integer, Text}; +use diesel::sql_types::{BigInt, Text}; use crate::models::{Crate, Version}; use crate::schema::*; @@ -29,8 +29,8 @@ pub struct Dependency { pub struct ReverseDependency { #[diesel(embed)] pub dependency: Dependency, - #[diesel(sql_type = Integer)] - pub crate_downloads: i32, + #[diesel(sql_type = BigInt)] + pub crate_downloads: i64, #[diesel(sql_type = Text, column_name = crate_name)] pub name: String, } diff --git a/src/models/krate_reverse_dependencies.sql b/src/models/krate_reverse_dependencies.sql index ac6dbc21fff..20a4f7eccc0 100644 --- a/src/models/krate_reverse_dependencies.sql +++ b/src/models/krate_reverse_dependencies.sql @@ -4,7 +4,7 @@ FROM ( -- Apply pagination to the crates SELECT *, COUNT(*) OVER () as total FROM ( SELECT - crates.downloads AS crate_downloads, + crate_downloads.downloads AS crate_downloads, crates.name AS crate_name, versions.id AS version_id FROM @@ -22,6 +22,8 @@ FROM ( ) versions INNER JOIN crates ON crates.id = versions.crate_id + INNER JOIN crate_downloads + ON crate_downloads.crate_id = crates.id WHERE versions.id IN (SELECT version_id FROM dependencies WHERE crate_id = $1) ) c ORDER BY diff --git a/src/views.rs b/src/views.rs index 52b3a3477c5..0495cc03da8 100644 --- a/src/views.rs +++ b/src/views.rs @@ -120,7 +120,7 @@ pub struct EncodableDependency { pub features: Vec, pub target: Option, pub kind: DependencyKind, - pub downloads: i32, + pub downloads: i64, } impl EncodableDependency { @@ -134,7 +134,7 @@ impl EncodableDependency { } // `downloads` need only be specified when generating a reverse dependency - fn encode(dependency: Dependency, crate_name: &str, downloads: Option) -> Self { + fn encode(dependency: Dependency, crate_name: &str, downloads: Option) -> Self { Self { id: dependency.id, version_id: dependency.version_id,