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(|_| ()) }