1
1
import connexion
2
2
import numpy as np
3
+ from connexion import problem
4
+ from flask import jsonify , Flask
3
5
from matchms import Spectrum , calculate_scores
4
6
from matchms .similarity import CosineGreedy
5
7
17
19
DB_HOST = os .environ .get ('DB_HOST' , "localhost" )
18
20
DB_NAME = os .environ .get ('DB_NAME' , "massbank3" )
19
21
22
+ app = Flask (__name__ )
20
23
21
24
def similarity_post (similarity_calculation ): # noqa: E501
22
25
"""Create a new similarity calculation.
@@ -31,8 +34,16 @@ def similarity_post(similarity_calculation): # noqa: E501
31
34
if connexion .request .is_json :
32
35
request = SimilarityCalculation .from_dict (similarity_calculation )
33
36
34
- reference_spectra = ReferenceSpectra (psycopg .connect (f"postgresql://{ DB_NAME } :{ DB_PASSWORD } @{ DB_HOST } :{ DB_PORT } /{ DB_NAME } " ))
35
- reference_spectra .load_spectra ()
37
+ try :
38
+ reference_spectra = ReferenceSpectra (
39
+ psycopg .connect (f"postgresql://{ DB_NAME } :{ DB_PASSWORD } @{ DB_HOST } :{ DB_PORT } /{ DB_NAME } " ))
40
+ reference_spectra .load_spectra ()
41
+ except psycopg .DatabaseError as e :
42
+ return problem (
43
+ title = "Database Error" ,
44
+ detail = str (e ),
45
+ status = 500 ,
46
+ )
36
47
37
48
mz = []
38
49
intensities = []
@@ -70,3 +81,9 @@ def version_get(): # noqa: E501
70
81
:rtype: Union[str, Tuple[str, int], Tuple[str, int, Dict[str, str]]
71
82
"""
72
83
return 'cosine similarity 1.0.0'
84
+
85
+
86
+ def handle_psycopg_database_error (error ):
87
+ response = jsonify (error .to_dict ())
88
+ response .status_code = error .status_code
89
+ return response
0 commit comments