From 1ab3766ce8d1b96ac2c651da9b8adcf20f9e7b51 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Sat, 16 May 2026 10:57:04 +0200 Subject: [PATCH] fix(postgres): map unique constraint violations to DomainError::UniqueViolation --- crates/adapters/postgres/src/user.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/adapters/postgres/src/user.rs b/crates/adapters/postgres/src/user.rs index 395150e..7d26fd8 100644 --- a/crates/adapters/postgres/src/user.rs +++ b/crates/adapters/postgres/src/user.rs @@ -166,7 +166,18 @@ impl UserWriter for PgUserRepository { .bind(user.updated_at) .execute(&self.pool) .await - .into_domain() + .map_err(|e| { + if let sqlx::Error::Database(ref db) = e { + if db.code().as_deref() == Some("23505") { + return match db.constraint().unwrap_or("") { + "users_username_key" => DomainError::UniqueViolation { field: "username" }, + "users_email_key" => DomainError::UniqueViolation { field: "email" }, + _ => DomainError::UniqueViolation { field: "unknown" }, + }; + } + } + DomainError::Internal(e.to_string()) + }) .map(|_| ()) }