@@ -75,21 +75,27 @@ pub async fn find_crate(
7575 . transpose ( ) ?
7676 . unwrap_or_default ( ) ;
7777
78- let ( krate, downloads, default_version, yanked) : ( Crate , i64 , Option < String > , Option < bool > ) =
79- Crate :: by_name ( & path. name )
80- . inner_join ( crate_downloads:: table)
81- . left_join ( default_versions:: table)
82- . left_join ( versions:: table. on ( default_versions:: version_id. eq ( versions:: id) ) )
83- . select ( (
84- Crate :: as_select ( ) ,
85- crate_downloads:: downloads,
86- versions:: num. nullable ( ) ,
87- versions:: yanked. nullable ( ) ,
88- ) )
89- . first ( & mut conn)
90- . await
91- . optional ( ) ?
92- . ok_or_else ( || crate_not_found ( & path. name ) ) ?;
78+ let ( krate, downloads, default_version, yanked, num_versions) : (
79+ Crate ,
80+ i64 ,
81+ Option < String > ,
82+ Option < bool > ,
83+ Option < i32 > ,
84+ ) = Crate :: by_name ( & path. name )
85+ . inner_join ( crate_downloads:: table)
86+ . left_join ( default_versions:: table)
87+ . left_join ( versions:: table. on ( default_versions:: version_id. eq ( versions:: id) ) )
88+ . select ( (
89+ Crate :: as_select ( ) ,
90+ crate_downloads:: downloads,
91+ versions:: num. nullable ( ) ,
92+ versions:: yanked. nullable ( ) ,
93+ default_versions:: num_versions. nullable ( ) ,
94+ ) )
95+ . first ( & mut conn)
96+ . await
97+ . optional ( ) ?
98+ . ok_or_else ( || crate_not_found ( & path. name ) ) ?;
9399
94100 let mut versions_publishers_and_audit_actions = if include. versions {
95101 let versions_and_publishers: Vec < ( Version , Option < User > ) > = Version :: belonging_to ( & krate)
@@ -183,6 +189,7 @@ pub async fn find_crate(
183189 let encodable_crate = EncodableCrate :: from (
184190 krate. clone ( ) ,
185191 default_version. as_deref ( ) ,
192+ num_versions. unwrap_or_default ( ) ,
186193 yanked,
187194 top_versions. as_ref ( ) ,
188195 ids,
0 commit comments