Skip to content

Commit 8196f13

Browse files
author
Julius de Bruijn
authored
Parse pg error 28000 (access denied) (prisma#284)
1 parent 8c45441 commit 8196f13

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

src/connector/postgres/error.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,28 @@ impl From<tokio_postgres::error::Error> for Error {
136136

137137
builder.build()
138138
}
139+
Some(code) if code == "28000" => {
140+
let code = code.to_string();
141+
let db_error = e.into_source().and_then(|e| e.downcast::<DbError>().ok());
142+
let message = db_error.as_ref().map(|e| e.message());
143+
144+
let db_name = message
145+
.as_ref()
146+
.and_then(|m| m.split_whitespace().nth(5))
147+
.and_then(|s| s.split('"').nth(1))
148+
.into();
149+
150+
let kind = ErrorKind::DatabaseAccessDenied { db_name };
151+
let mut builder = Error::builder(kind);
152+
153+
builder.set_original_code(code);
154+
155+
if let Some(message) = message {
156+
builder.set_original_message(message);
157+
}
158+
159+
builder.build()
160+
}
139161
Some(code) if code == "28P01" => {
140162
let code = code.to_string();
141163
let db_error = e.into_source().and_then(|e| e.downcast::<DbError>().ok());

0 commit comments

Comments
 (0)