aboutsummaryrefslogtreecommitdiff
path: root/uploader/publications/models.py
blob: 89da06cb31e5c424f8551df19793c5e4ba336d33 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"""Module to handle persistence and retrieval of publication to/from MariaDB"""

def fetch_phenotype_publications(
        conn, ids: tuple[tuple[int, int], ...]) -> tuple[dict, ...]:
    """Fetch publication from database by ID."""
    paramstr = ",".join(["(%s, %s)"] * len(ids))
    query = (
        "SELECT "
        "pxr.PhenotypeId, pxr.Id AS xref_id, pxr.PublicationId, pub.PubMed_ID "
        "FROM PublishXRef AS pxr INNER JOIN Publication AS pub "
        "ON pxr.PublicationId=pub.Id "
        f"WHERE (pxr.PhenotypeId, pxr.Id) IN ({paramstr})")
    with conn.cursor(cursorclass=DictCursor) as cursor:
        cursor.execute(query, tuple(item for row in ids for item in row))
        return tuple(dict(row) for row in cursor.fetchall())