@@ -19,24 +19,27 @@ def get(self, identifier=""):
1919
2020 # Is it valid
2121 if BARUtils .is_gaia_alias (identifier ):
22+ query_ids = []
23+ data = []
2224
2325 # Check if alias exists
2426 # Note: This check can be done in on query, but optimizer is not using indexes for some reason
25- # Also, GAIA only uses the first result
2627 query = db .select (Aliases .genes_id , Aliases .alias ).filter (Aliases .alias == identifier )
27- row = db .session .execute (query ).fetchone ()
28+ rows = db .session .execute (query ).fetchall ()
2829
29- if row :
30- # Alias exists. Get the genes_id
31- query_id = row .genes_id
30+ if rows and len (rows ) > 0 :
31+ # Alias exists. Get the genes_ids
32+ for row in rows :
33+ query_ids .append (row .genes_id )
3234
3335 else :
34- # Alias doesn't exist. Get the genes_id if it's locus or ncbi id
36+ # Alias doesn't exist. Get the ids if it's locus or ncbi id
3537 query = db .select (Genes .id ).filter (or_ (Genes .locus == identifier , Genes .geneid == identifier ))
36- row = db .session .execute (query ).fetchone ()
38+ rows = db .session .execute (query ).fetchall ()
3739
38- if row :
39- query_id = row .id
40+ if rows and len (rows ) > 0 :
41+ for row in rows :
42+ query_ids .append (row .id )
4043 else :
4144 return BARUtils .error_exit ("Nothing found" ), 404
4245
@@ -45,23 +48,32 @@ def get(self, identifier=""):
4548 db .select (Genes .species , Genes .locus , Genes .geneid , func .json_arrayagg (Aliases .alias ).label ("aliases" ))
4649 .select_from (Genes )
4750 .outerjoin (Aliases , Aliases .genes_id == Genes .id )
48- .filter (Genes .id == query_id )
51+ .filter (Genes .id .in_ (query_ids ))
52+ .group_by (Genes .species , Genes .locus , Genes .geneid )
4953 )
5054
51- result = db .session .execute (query ).fetchone ()
55+ rows = db .session .execute (query ).fetchall ()
5256
53- # See if aliases exists
54- if result .aliases :
55- aliases = json .loads (result .aliases )
56- else :
57- aliases = []
58-
59- data = {
60- "species" : result .species ,
61- "locus" : result .locus ,
62- "geneid" : result .geneid ,
63- "aliases" : aliases ,
64- }
57+ if rows and len (rows ) > 0 :
58+ for row in rows :
59+
60+ # JSONify aliases
61+ if row .aliases :
62+ aliases = json .loads (row .aliases )
63+ else :
64+ aliases = []
65+
66+ record = {
67+ "species" : row .species ,
68+ "locus" : row .locus ,
69+ "geneid" : row .geneid ,
70+ "aliases" : aliases ,
71+ }
72+
73+ # Add the record to data
74+ data .append (record )
75+
76+ # Return final data
6577 return BARUtils .success_exit (data )
6678
6779 else :
0 commit comments