From 75e134365fc44393162d88bd57222edc82c8062d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Matou=C5=A1=20Volf?= <git@matousvolf.cz>
Date: Sun, 18 Aug 2024 22:04:23 +0200
Subject: [PATCH] refactor: improve error mapping

---
 src/server/projects.rs | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/server/projects.rs b/src/server/projects.rs
index 4b2181e..cbfab09 100644
--- a/src/server/projects.rs
+++ b/src/server/projects.rs
@@ -22,17 +22,18 @@ pub(crate) async fn create_project(
         .validate()
         .map_err::<ErrorVec<ProjectCreateError>, _>(|errors| errors.into())?;
 
-    let mut connection =
-        establish_database_connection().or::<ErrorVec<ProjectCreateError>>(Err(vec![
-            ProjectCreateError::Error(Error::ServerInternal),
-        ]
-        .into()))?;
+    let mut connection = establish_database_connection()
+        .map_err::<ErrorVec<ProjectCreateError>, _>(
+            |_| vec![ProjectCreateError::Error(Error::ServerInternal), ].into()
+        )?;
 
     let new_project = diesel::insert_into(projects::table)
         .values(&new_project)
         .returning(Project::as_returning())
         .get_result(&mut connection)
-        .expect("error saving a new project");
+        .map_err::<ErrorVec<ProjectCreateError>, _>(
+            |_| vec![ProjectCreateError::Error(Error::ServerInternal), ].into()
+        )?;
 
     Ok(new_project)
 }