Skip to content

Commit

Permalink
switch to using sqlx::query! macro in web::features
Browse files Browse the repository at this point in the history
  • Loading branch information
syphar committed Feb 28, 2024
1 parent c98e4fa commit 0f1ca35
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 9 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 10 additions & 9 deletions src/web/features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use crate::{
use anyhow::anyhow;
use axum::{extract::Path, response::IntoResponse};
use serde::Serialize;
use sqlx::Row as _;
use std::collections::{HashMap, VecDeque};

const DEFAULT_NAME: &str = "default";
Expand Down Expand Up @@ -57,22 +56,24 @@ pub(crate) async fn build_features_handler(

let metadata = MetaData::from_crate(&mut conn, &name, &version, &version_or_latest).await?;

let row = sqlx::query(
"SELECT releases.features FROM releases
INNER JOIN crates ON crates.id = releases.crate_id
WHERE crates.name = $1 AND releases.version = $2",
let row = sqlx::query!(
r#"
SELECT releases.features as "features?: Vec<Feature>"
FROM releases
INNER JOIN crates ON crates.id = releases.crate_id
WHERE crates.name = $1 AND releases.version = $2"#,
name,
version
)
.bind(&name)
.bind(&version)
.fetch_optional(&mut *conn)
.await?
.ok_or_else(|| anyhow!("missing release"))?;

let mut features = None;
let mut default_len = 0;

if let Some(raw) = row.get(0) {
let result = order_features_and_count_default_len(raw);
if let Some(raw_features) = row.features {
let result = order_features_and_count_default_len(raw_features);
features = Some(result.0);
default_len = result.1;
}
Expand Down

0 comments on commit 0f1ca35

Please sign in to comment.