about summary refs log tree commit diff
path: root/uploader/samples/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/samples/models.py')
-rw-r--r--uploader/samples/models.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/uploader/samples/models.py b/uploader/samples/models.py
new file mode 100644
index 0000000..15e509e
--- /dev/null
+++ b/uploader/samples/models.py
@@ -0,0 +1,19 @@
+"""Functions for handling samples."""
+import MySQLdb as mdb
+from MySQLdb.cursors import DictCursor
+
+def samples_by_species_and_population(
+        conn: mdb.Connection,
+        species_id: int,
+        population_id: int
+) -> tuple[dict, ...]:
+    """Fetch the samples by their species and population."""
+    with conn.cursor(cursorclass=DictCursor) as cursor:
+        cursor.execute(
+            "SELECT iset.InbredSetId, s.* FROM InbredSet AS iset "
+            "INNER JOIN StrainXRef AS sxr ON iset.InbredSetId=sxr.InbredSetId "
+            "INNER JOIN Strain AS s ON sxr.StrainId=s.Id "
+            "WHERE s.SpeciesId=%(species_id)s "
+            "AND iset.InbredSetId=%(population_id)s",
+            {"species_id": species_id, "population_id": population_id})
+        return tuple(cursor.fetchall())