From f00b2c33345f49ec4f9d47083e40484bd2e7f626 Mon Sep 17 00:00:00 2001 From: Meng Zhang Date: Sun, 10 Dec 2023 12:11:23 +0800 Subject: [PATCH] chore(webserver): generates better frontend error message when invitation is already exists (index constraint error) (#1000) --- ee/tabby-webserver/src/service/db/invitations.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ee/tabby-webserver/src/service/db/invitations.rs b/ee/tabby-webserver/src/service/db/invitations.rs index 454e6df..4fa234b 100644 --- a/ee/tabby-webserver/src/service/db/invitations.rs +++ b/ee/tabby-webserver/src/service/db/invitations.rs @@ -63,9 +63,19 @@ impl DbConn { let rowid = stmt.insert((email, code))?; Ok(rowid) }) - .await?; + .await; - Ok(res as i32) + match res { + Err(tokio_rusqlite::Error::Rusqlite(rusqlite::Error::SqliteFailure(err, msg))) => { + if err.code == rusqlite::ErrorCode::ConstraintViolation { + Err(anyhow!("Failed to create invitation, email already exists")) + } else { + Err(rusqlite::Error::SqliteFailure(err, msg).into()) + } + } + Err(err) => Err(err.into()), + Ok(rowid) => Ok(rowid as i32), + } } pub async fn delete_invitation(&self, id: i32) -> Result {