Skip to content

Commit 13da704

Browse files
authored
Merge pull request #286 from asherpasha/dev
More fixes.
2 parents 17063b4 + 6925ae4 commit 13da704

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

api/resources/gaia.py

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)