@@ -30,41 +30,6 @@ pub async fn summary(state: AppState) -> AppResult<ErasedJson> {
3030 . get_result ( & mut conn)
3131 . await ?;
3232
33- async fn encode_crates (
34- conn : & mut AsyncPgConnection ,
35- data : Vec < Record > ,
36- ) -> AppResult < Vec < EncodableCrate > > {
37- use diesel:: GroupedBy ;
38- use diesel_async:: RunQueryDsl ;
39-
40- let krates = data. iter ( ) . map ( |( c, ..) | c) . collect :: < Vec < _ > > ( ) ;
41- let versions: Vec < Version > = Version :: belonging_to ( & krates)
42- . filter ( versions:: yanked. eq ( false ) )
43- . select ( Version :: as_select ( ) )
44- . load ( conn)
45- . await ?;
46-
47- versions
48- . grouped_by ( & krates)
49- . into_iter ( )
50- . map ( TopVersions :: from_versions)
51- . zip ( data)
52- . map (
53- |( top_versions, ( krate, total, recent, default_version, yanked) ) | {
54- Ok ( EncodableCrate :: from_minimal (
55- krate,
56- default_version. as_deref ( ) ,
57- yanked,
58- Some ( & top_versions) ,
59- false ,
60- total,
61- recent,
62- ) )
63- } ,
64- )
65- . collect ( )
66- }
67-
6833 let config = & state. config ;
6934
7035 let selection = (
@@ -143,3 +108,38 @@ pub async fn summary(state: AppState) -> AppResult<ErasedJson> {
143108}
144109
145110type Record = ( Crate , i64 , Option < i64 > , Option < String > , Option < bool > ) ;
111+
112+ async fn encode_crates (
113+ conn : & mut AsyncPgConnection ,
114+ data : Vec < Record > ,
115+ ) -> AppResult < Vec < EncodableCrate > > {
116+ use diesel:: GroupedBy ;
117+ use diesel_async:: RunQueryDsl ;
118+
119+ let krates = data. iter ( ) . map ( |( c, ..) | c) . collect :: < Vec < _ > > ( ) ;
120+ let versions: Vec < Version > = Version :: belonging_to ( & krates)
121+ . filter ( versions:: yanked. eq ( false ) )
122+ . select ( Version :: as_select ( ) )
123+ . load ( conn)
124+ . await ?;
125+
126+ versions
127+ . grouped_by ( & krates)
128+ . into_iter ( )
129+ . map ( TopVersions :: from_versions)
130+ . zip ( data)
131+ . map (
132+ |( top_versions, ( krate, total, recent, default_version, yanked) ) | {
133+ Ok ( EncodableCrate :: from_minimal (
134+ krate,
135+ default_version. as_deref ( ) ,
136+ yanked,
137+ Some ( & top_versions) ,
138+ false ,
139+ total,
140+ recent,
141+ ) )
142+ } ,
143+ )
144+ . collect ( )
145+ }
0 commit comments