From 8febc8a517bc9e774078965eab0143e7bade3f3e Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sat, 28 Sep 2024 20:19:09 +0400 Subject: [PATCH] Perform repository operation on commit page in parallel --- src/methods/repo/commit.rs | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/src/methods/repo/commit.rs b/src/methods/repo/commit.rs index 3c82c5d..53f8a19 100644 --- a/src/methods/repo/commit.rs +++ a/src/methods/repo/commit.rs @@ -5,7 +5,7 @@ use serde::Deserialize; use crate::{ - git::Commit, + git::{Commit, OpenRepository}, into_response, methods::{ filters, @@ -39,26 +39,11 @@ ) -> Result { let open_repo = git.repo(repository_path, query.branch.clone()).await?; - let dl_branch = if let Some(branch) = query.branch.clone() { - branch - } else { - Arc::from( - open_repo - .clone() - .default_branch() - .await - .ok() - .flatten() - .unwrap_or_else(|| "master".to_string()), - ) - }; + let (dl_branch, commit) = tokio::try_join!( + fetch_dl_branch(query.branch.clone(), open_repo.clone()), + fetch_commit(query.id.as_deref(), open_repo), + )?; - let commit = if let Some(commit) = query.id.as_deref() { - open_repo.commit(commit, true).await? - } else { - Arc::new(open_repo.latest_commit(true).await?) - }; - Ok(into_response(View { repo, commit, @@ -66,4 +51,32 @@ id: query.id, dl_branch, })) +} + +async fn fetch_commit( + commit_id: Option<&str>, + open_repo: Arc, +) -> Result> { + Ok(if let Some(commit) = commit_id { + open_repo.commit(commit, true).await? + } else { + Arc::new(open_repo.latest_commit(true).await?) + }) +} + +async fn fetch_dl_branch( + branch: Option>, + open_repo: Arc, +) -> Result> { + if let Some(branch) = branch.clone() { + Ok(branch) + } else { + Ok(Arc::from( + open_repo + .clone() + .default_branch() + .await? + .unwrap_or_else(|| "master".to_string()), + )) + } } -- rgit 0.1.3