fromPostgresError static method
Map a PostgreSQL error to a PrismaException.
Implementation
static PrismaException fromPostgresError(
String message, {
String? sqlState,
String? constraintName,
Object? originalError,
}) {
switch (sqlState) {
// Connection errors
case '08000': // connection_exception
case '08003': // connection_does_not_exist
case '08006': // connection_failure
return ConnectionException(
message,
originalError: originalError,
);
case '28000': // invalid_authorization_specification
case '28P01': // invalid_password
return AuthenticationException(
message,
originalError: originalError,
);
// Constraint violations
case '23505': // unique_violation
return UniqueConstraintException(
message,
constraintName: constraintName,
originalError: originalError,
);
case '23503': // foreign_key_violation
return ForeignKeyException(
message,
constraintName: constraintName,
originalError: originalError,
);
case '23502': // not_null_violation
return ConstraintException(
message,
constraintName: constraintName,
constraintType: 'not_null',
originalError: originalError,
);
case '23514': // check_violation
return ConstraintException(
message,
constraintName: constraintName,
constraintType: 'check',
originalError: originalError,
);
// Query errors
case '42P01': // undefined_table
case '42703': // undefined_column
return InternalException(
message,
originalError: originalError,
);
// Timeout
case '57014': // query_canceled (timeout)
return QueryTimeoutException(
message,
originalError: originalError,
);
default:
return InternalException(
message,
originalError: originalError,
context: {'sqlState': sqlState},
);
}
}