From 66becbc4ccd02df22e9ec5efb376081fcc9ced9c Mon Sep 17 00:00:00 2001 From: Geometrically <18202329+Geometrically@users.noreply.github.com> Date: Wed, 28 Jul 2021 11:34:47 -0700 Subject: [PATCH] Fix dependencies route only showing one dependency per version (#229) --- src/routes/auth.rs | 4 ++-- src/routes/projects.rs | 48 ++++++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/routes/auth.rs b/src/routes/auth.rs index 892ccf5b9..d598f97e1 100644 --- a/src/routes/auth.rs +++ b/src/routes/auth.rs @@ -229,9 +229,9 @@ pub async fn auth_callback( transaction.commit().await?; let redirect_url = if result.url.contains("?") { - format!("{}&code={}", result.url, token.access_token) + format!("{}&code={}", result.url, token.access_token) } else { - format!("{}?code={}", result.url, token.access_token) + format!("{}?code={}", result.url, token.access_token) }; Ok(HttpResponse::TemporaryRedirect() diff --git a/src/routes/projects.rs b/src/routes/projects.rs index 447c31e1c..9de15c568 100644 --- a/src/routes/projects.rs +++ b/src/routes/projects.rs @@ -188,30 +188,36 @@ pub async fn dependency_list( ) .await?; - let mut response: HashMap = HashMap::new(); + let mut response: HashMap> = + HashMap::new(); for dependency in dependencies { - response.insert( - dependency.0.into(), - DependencyInfo { - project: if let Some(id) = dependency.2 { - projects - .iter() - .find(|x| x.inner.id == id) - .map(|x| convert_project(x.clone())) - } else { - None - }, - version: if let Some(id) = dependency.1 { - versions - .iter() - .find(|x| x.id == id) - .map(|x| super::versions::convert_version(x.clone())) - } else { - None - }, + let deps = response.get_mut(&dependency.0.into()); + + let info = DependencyInfo { + project: if let Some(id) = dependency.2 { + projects + .iter() + .find(|x| x.inner.id == id) + .map(|x| convert_project(x.clone())) + } else { + None }, - ); + version: if let Some(id) = dependency.1 { + versions + .iter() + .find(|x| x.id == id) + .map(|x| super::versions::convert_version(x.clone())) + } else { + None + }, + }; + + if let Some(deps) = deps { + deps.push(info); + } else { + response.insert(dependency.0.into(), vec![info]); + } } Ok(HttpResponse::Ok().json(response))