summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-01-26 22:27:54 +0100
committerJoel Klinghed <the_jk@spawned.biz>2025-01-26 22:27:54 +0100
commit749c892b9cfc6b5b9937b4c3badc713101542fe1 (patch)
tree5cba0e9bc7a694e9939bcdb2281fba599df5db04
parent790e1af298aa7c9f39fb7cfe15615307ed87d597 (diff)
Use anyhow to reduce enum error types and map_err
-rw-r--r--server/Cargo.lock1
-rw-r--r--server/Cargo.toml1
-rw-r--r--server/src/auth.rs35
-rw-r--r--server/src/git_root.rs23
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::<Vec<_>>()
.await
.unwrap();
@@ -418,9 +403,7 @@ async fn setup_projects_roots(
let mut project_repo: HashMap<String, Arc<git::Repository>> = 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);
}