Skip to content

Commit 1d1136e

Browse files
committed
controllers/summary: Extract num_crates and num_downloads
1 parent 0e0e06e commit 1d1136e

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/controllers/summary.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ use crate::util::diesel::Conn;
88
use crate::util::errors::AppResult;
99
use crate::views::{EncodableCategory, EncodableCrate, EncodableKeyword};
1010
use axum::Json;
11-
use diesel::prelude::*;
11+
use diesel::QueryResult;
1212
use diesel_async::async_connection_wrapper::AsyncConnectionWrapper;
13+
use diesel_async::AsyncPgConnection;
1314
use serde_json::Value;
1415

1516
/// Handles the `GET /summary` route.
@@ -22,16 +23,27 @@ pub async fn summary(state: AppState) -> AppResult<Json<Value>> {
2223
.map(Category::into)
2324
.collect::<Vec<EncodableCategory>>();
2425

26+
async fn inner(conn: &mut AsyncPgConnection) -> QueryResult<(i64, i64)> {
27+
use diesel::QueryDsl;
28+
use diesel_async::RunQueryDsl;
29+
30+
let num_crates: i64 = crates::table.count().get_result(conn).await?;
31+
let num_downloads: i64 = metadata::table
32+
.select(metadata::total_downloads)
33+
.get_result(conn)
34+
.await?;
35+
36+
Ok((num_crates, num_downloads))
37+
}
38+
39+
let (num_crates, num_downloads) = inner(&mut conn).await?;
40+
2541
spawn_blocking(move || {
42+
use diesel::prelude::*;
2643
let conn: &mut AsyncConnectionWrapper<_> = &mut conn.into();
2744

2845
let config = &state.config;
2946

30-
let num_crates: i64 = crates::table.count().get_result(conn)?;
31-
let num_downloads: i64 = metadata::table
32-
.select(metadata::total_downloads)
33-
.get_result(conn)?;
34-
3547
fn encode_crates(
3648
conn: &mut impl Conn,
3749
data: Vec<Record>,

0 commit comments

Comments
 (0)