export default function errorToHttpStatus(error) {
    const code = (error ? error.code : '') || '';
    switch (code) {
        case '23502':
            return 400;
        case '23503':
            return 409; // foreign_key_violation
        case '23505':
            return 409; // unique_violation
        case '42P01':
            return 404; // undefined table
        case '42501':
            return 404; // insufficient privilege
    }

    switch (code.substr(0, 2)) {
        case '08':
            return 503; // pg connection err
        case '09':
            return 500; // triggered action exception
        case '0L':
            return 403; // invalid grantor
        case '0P':
            return 403; // invalid role specification


        case '25':
            return 500; // invalid tx state
        case '28':
            return 403; // invalid auth specification
        case '2D':
            return 500; // invalid tx termination
        case '38':
            return 500; // external routine exception
        case '39':
            return 500; // external routine invocation
        case '3B':
            return 500; // savepoint exception
        case '40':
            return 500; // tx rollback
        case '53':
            return 503; // insufficient resources
        case '54':
            return 413; // too complex
        case '55':
            return 500; // obj not on prereq state
        case '57':
            return 500; // operator intervention
        case '58':
            return 500; // system error
        case 'F0':
            return 500; // conf file error
        case 'HV':
            return 500; // foreign data wrapper error
        case 'P0':
            return 500; // PL/pgSQL Error
        case 'XX':
            return 500; // internal Error

        default:
            return 400;
    }
}

@@ -1,216 +1,55 @@
-export default function errorToHttpStatus(error) %7B%0A    const code = (error ? error.code : '') %7C%7C '';%0A    switch (code) %7B%0A        case '23502':%0A            return
+const codes = %7B%0A    '23502':
  400
-;%0A 
+,%0A
     
-   case '23503':%0A            return
+'23503':
  409
-;
+,
  // 
@@ -78,49 +78,21 @@
     
-    case '23505':%0A            return
+'23505':
  409
-;
+,
  // 
@@ -116,49 +116,21 @@
     
-    case '42P01':%0A            return
+'42P01':
  404
-;
+,
  // 
@@ -153,49 +153,21 @@
     
-    case '42501':%0A            return
+'42501':
  404
-;
+,
  // 
@@ -193,90 +193,23 @@
 ege%0A
-    %7D%0A%0A    switch (code.substr(0, 2)) %7B%0A        case '08':%0A            return
+%0A    '08':
  503
-;
+,
  // 
@@ -234,46 +234,18 @@
     
-    case '09':%0A            return
+'09':
  500
-;
+,
  // 
@@ -279,46 +279,18 @@
     
-    case '0L':%0A            return
+'0L':
  403
-;
+,
  // 
@@ -313,46 +313,18 @@
     
-    case '0P':%0A            return
+'0P':
  403
-;
+,
  // 
@@ -355,51 +355,22 @@
 on%0A%0A
-%0A
     
-    case '25':%0A            return
+'25':
  500
-;
+,
  // 
@@ -394,46 +394,18 @@
     
-    case '28':%0A            return
+'28':
  403
-;
+,
  // 
@@ -439,46 +439,18 @@
     
-  
-  case '2D':%0A            return
+'2D':
  500
-;
+,
  // 
@@ -480,46 +480,18 @@
     
-    case '38':%0A            return
+'38':
  500
-;
+,
  // 
@@ -525,46 +525,18 @@
     
-    case '39':%0A            return
+'39':
  500
-;
+,
  // 
@@ -571,46 +571,18 @@
     
-    case '3B':%0A            return
+'3B':
  500
-;
+,
  // 
@@ -609,46 +609,18 @@
     
-    case '40':%0A            return
+'40':
  500
-;
+,
  // 
@@ -639,46 +639,18 @@
     
-  
-  case '53':%0A            return
+'53':
  503
-;
+,
  // 
@@ -680,46 +680,18 @@
     
-    case '54':%0A            return
+'54':
  413
-;
+,
  // 
@@ -710,46 +710,18 @@
     
-    case '55':%0A            return
+'55':
  500
-;
+,
  // 
@@ -752,46 +752,18 @@
     
-    case '57':%0A            return
+'57':
  500
-;
+,
  // 
@@ -792,46 +792,18 @@
     
-    case '58':%0A            return
+'58':
  500
-;
+,
  // 
@@ -823,46 +823,18 @@
     
-  
-  case 'F0':%0A            return
+'F0':
  500
-;
+,
  // 
@@ -857,46 +857,18 @@
     
-    case 'HV':%0A            return
+'HV':
  500
-;
+,
  // 
@@ -902,46 +902,18 @@
     
-    case 'P0':%0A            return
+'P0':
  500
-;
+,
  // 
@@ -935,91 +935,297 @@
     
-    case 'XX':%0A            return 500; // internal Error%0A%0A        default:%0A        
+'XX': 500, // internal Error%0A%7D;%0A%0Aexport default function errorToHttpStatus(error) %7B%0A    const code = (error ? error.code : '') %7C%7C '';%0A    for (let codePrefix of%5Bcode, code.substr(0, 2)%5D)%0A        if (codePrefix in codes)%0A            return codes%5BcodePrefix%5D;%0A    /* istanbul ignore next */%0A
     
@@ -1240,12 +1240,6 @@
 00;%0A
-    %7D%0A
 %7D%0A

Refactor errorToHttpStatus