From 749c892b9cfc6b5b9937b4c3badc713101542fe1 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sun, 26 Jan 2025 22:27:54 +0100 Subject: Use anyhow to reduce enum error types and map_err --- server/Cargo.lock | 1 + server/Cargo.toml | 1 + server/src/auth.rs | 35 ++++++----------------------------- server/src/git_root.rs | 23 +++-------------------- 4 files changed, 11 insertions(+), 49 deletions(-) diff --git a/server/Cargo.lock b/server/Cargo.lock index 144958f..e91e674 100644 --- a/server/Cargo.lock +++ b/server/Cargo.lock @@ -550,6 +550,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" name = "eyeballs" version = "0.1.0" dependencies = [ + "anyhow", "futures", "ldap3", "pathdiff", diff --git a/server/Cargo.toml b/server/Cargo.toml index 8ce6668..948f46b 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -5,6 +5,7 @@ edition = "2021" default-run = "eyeballs" [dependencies] +anyhow = "1.0" futures = "0.3.31" ldap3 = { version = "0.11.5", default-features = false, features = [ "native-tls", "tls", "tls-native", "tokio-native-tls" ] } pathdiff = "0.2.3" diff --git a/server/src/auth.rs b/server/src/auth.rs index 919dd51..edd794c 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -302,22 +302,9 @@ async fn setup_ldap( Ok(ret) } -#[derive(Debug)] -#[allow(dead_code)] -enum LdapOrSqlError { - LdapError(ldap3::LdapError), - SqlError(sqlx::Error), -} - #[cfg_attr(test, allow(dead_code))] -async fn sync_ldap( - ldap_state: &LdapState, - config: &AuthConfig<'_>, - db: &Db, -) -> Result<(), LdapOrSqlError> { - let mut ldap = setup_ldap(ldap_state, config) - .map_err(LdapOrSqlError::LdapError) - .await?; +async fn sync_ldap(ldap_state: &LdapState, config: &AuthConfig<'_>, db: &Db) -> anyhow::Result<()> { + let mut ldap = setup_ldap(ldap_state, config).await?; let (entries, _) = ldap .search( &config.ldap_users, @@ -325,10 +312,8 @@ async fn sync_ldap( &config.ldap_filter, vec!["uid"], ) - .map_err(LdapOrSqlError::LdapError) .await? - .success() - .map_err(LdapOrSqlError::LdapError)?; + .success()?; let mut tx = db.begin().await.unwrap(); @@ -391,17 +376,12 @@ async fn sync_ldap( query_builder.push(")"); } - query_builder - .build() - .execute(&mut *tx) - .map_err(LdapOrSqlError::SqlError) - .await?; + query_builder.build().execute(&mut *tx).await?; } for pair in updated_users { sqlx::query!("UPDATE users SET dn=? WHERE id=?", pair.1, pair.0) .execute(&mut *tx) - .map_err(LdapOrSqlError::SqlError) .await?; } @@ -414,13 +394,10 @@ async fn sync_ldap( query = query.bind(id); } - query - .execute(&mut *tx) - .map_err(LdapOrSqlError::SqlError) - .await?; + query.execute(&mut *tx).await?; } - tx.commit().map_err(LdapOrSqlError::SqlError).await?; + tx.commit().await?; Ok(()) } diff --git a/server/src/git_root.rs b/server/src/git_root.rs index b1c533e..c6ee1fb 100644 --- a/server/src/git_root.rs +++ b/server/src/git_root.rs @@ -390,27 +390,12 @@ async fn setup_project_root( Ok(repo) } -#[derive(Debug)] -#[allow(dead_code)] -enum GitOrSqlOrIoError { - Git(git::Error), - Sql(sqlx::Error), - Io(std::io::Error), -} - -async fn setup_projects_roots( - roots: &Roots, - config: &Config<'_>, - db: &Db, -) -> Result<(), GitOrSqlOrIoError> { - fs_utils::create_dir_allow_existing(PathBuf::from(config.git_server_root.to_string())) - .map_err(GitOrSqlOrIoError::Io) - .await?; +async fn setup_projects_roots(roots: &Roots, config: &Config<'_>, db: &Db) -> anyhow::Result<()> { + fs_utils::create_dir_allow_existing(PathBuf::from(config.git_server_root.to_string())).await?; let projects = sqlx::query!("SELECT id,remote,main_branch FROM projects") .fetch(&**db) .map_ok(|r| (r.id, r.remote, r.main_branch)) - .map_err(GitOrSqlOrIoError::Sql) .try_collect::>() .await .unwrap(); @@ -418,9 +403,7 @@ async fn setup_projects_roots( let mut project_repo: HashMap> = HashMap::new(); for (id, remote, main_branch) in projects { - let repo = setup_project_root(config, db, &id, remote, main_branch) - .map_err(GitOrSqlOrIoError::Git) - .await?; + let repo = setup_project_root(config, db, &id, remote, main_branch).await?; project_repo.insert(id, repo); } -- cgit v1.2.3-70-g09d2