about summary refs log tree commit diff
path: root/gn3/db/wiki.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn3/db/wiki.py')
-rw-r--r--gn3/db/wiki.py32
1 files changed, 25 insertions, 7 deletions
diff --git a/gn3/db/wiki.py b/gn3/db/wiki.py
index 0f46855..e702569 100644
--- a/gn3/db/wiki.py
+++ b/gn3/db/wiki.py
@@ -22,12 +22,20 @@ def _decode_dict(result: dict):
 def get_latest_comment(connection, comment_id: int) -> int:
     """ Latest comment is one with the highest versionId """
     cursor = connection.cursor(DictCursor)
-    query = """ SELECT versionId AS version, symbol, PubMed_ID AS pubmed_ids, sp.Name AS species,
-        comment, email, weburl, initial, reason
-        FROM `GeneRIF` gr
-		INNER JOIN Species sp USING(SpeciesId)
-		WHERE gr.Id = %s
-		ORDER BY versionId DESC LIMIT 1;
+    query = """SELECT versionId AS version,
+       symbol,
+       PubMed_ID AS pubmed_ids,
+       COALESCE(sp.Name, 'no specific species') AS species,
+       comment,
+       email,
+       weburl,
+       initial,
+       reason
+FROM `GeneRIF` gr
+LEFT JOIN Species sp USING(SpeciesId)
+WHERE gr.Id = %s
+ORDER BY versionId DESC
+LIMIT 1;
     """
     cursor.execute(query, (str(comment_id),))
     result = _decode_dict(cursor.fetchone())
@@ -48,6 +56,8 @@ def get_latest_comment(connection, comment_id: int) -> int:
 
 def get_species_id(cursor, species_name: str) -> int:
     """Find species id given species `Name`"""
+    if species_name.lower() == "no specific species":
+        return 0
     cursor.execute(
         "SELECT SpeciesID from Species  WHERE Name = %s", (species_name,))
     species_ids = cursor.fetchall()
@@ -70,6 +80,14 @@ def get_next_comment_version(cursor, comment_id: int) -> int:
     return latest_version + 1
 
 
+def get_next_comment_id(cursor) -> int:
+    """Get the next GeneRIF.Id"""
+    cursor.execute(
+        "SELECT MAX(Id) from GeneRIF"
+    )
+    return cursor.fetchone()[0] + 1
+
+
 def get_categories_ids(cursor, categories: List[str]) -> List[int]:
     """Get the categories_ids from a list of category strings"""
     dict_cats = get_categories(cursor)
@@ -93,7 +111,7 @@ def get_categories(cursor) -> Dict[str, int]:
 
 def get_species(cursor) -> Dict[str, str]:
     """Get all species"""
-    cursor.execute("SELECT Name, SpeciesName from Species")
+    cursor.execute("SELECT Name, SpeciesName from Species ORDER BY Species.Id")
     raw_species = cursor.fetchall()
     dict_cats = dict(raw_species)
     return dict_cats