diff options
author | Frederick Muriuki Muriithi | 2024-09-23 16:29:25 -0500 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2024-09-23 16:35:39 -0500 |
commit | 480ee0b657b762f1dd0b1164f98ab13bc9a11f56 (patch) | |
tree | 28c7e8e450112039bb764a6fe967838369aba937 /uploader/platforms/models.py | |
parent | 4285cc10e24d6410206329ba079406e9aa21cc30 (diff) | |
download | gn-uploader-480ee0b657b762f1dd0b1164f98ab13bc9a11f56.tar.gz |
Initialise "Platforms" section.
Diffstat (limited to 'uploader/platforms/models.py')
-rw-r--r-- | uploader/platforms/models.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/uploader/platforms/models.py b/uploader/platforms/models.py new file mode 100644 index 0000000..adad0b2 --- /dev/null +++ b/uploader/platforms/models.py @@ -0,0 +1,41 @@ +"""Handle db interactions for platforms.""" +from typing import Optional + +import MySQLdb as mdb +from MySQLdb.cursors import DictCursor + +def platforms_by_species( + conn: mdb.Connection, + speciesid: int, + offset: int = 0, + limit: Optional[int] = None +) -> tuple[dict, ...]: + """Retrieve platforms by the species""" + _query = ("SELECT * FROM GeneChip WHERE SpeciesId=%s " + "ORDER BY GeneChipName ASC") + if bool(limit) and limit > 0: + _query = f"{_query} LIMIT {limit} OFFSET {offset}" + with conn.cursor(cursorclass=DictCursor) as cursor: + cursor.execute(_query, (speciesid,)) + return tuple(dict(row) for row in cursor.fetchall()) + + +def species_platforms_count(conn: mdb.Connection, species_id: int) -> int: + """Get the number of platforms in the database for a particular species.""" + with conn.cursor(cursorclass=DictCursor) as cursor: + cursor.execute( + "SELECT COUNT(GeneChipName) AS count FROM GeneChip " + "WHERE SpeciesId=%s", + (species_id,)) + return int(cursor.fetchone()["count"]) + +def platform_by_id(conn: mdb.Connection, platformid: int) -> Optional[dict]: + """Retrieve a platform by its ID""" + with conn.cursor(cursorclass=DictCursor) as cursor: + cursor.execute("SELECT * FROM GeneChip WHERE Id=%s", + (platformid,)) + result = cursor.fetchone() + if bool(result): + return dict(result) + + return None |