diff options
Diffstat (limited to 'uploader/publications/models.py')
-rw-r--r-- | uploader/publications/models.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/uploader/publications/models.py b/uploader/publications/models.py index 2b0339b..992ebfa 100644 --- a/uploader/publications/models.py +++ b/uploader/publications/models.py @@ -1,6 +1,6 @@ """Module to handle persistence and retrieval of publication to/from MariaDB""" import logging -from typing import Iterable +from typing import Iterable, Optional from MySQLdb.cursors import DictCursor @@ -69,10 +69,21 @@ def update_publications(conn: Connection , publications: tuple[dict, ...]) -> tu return tuple() -def fetch_publications(conn: Connection) -> Iterable[dict]: +def fetch_publications( + conn: Connection, + search: Optional[str] = None +) -> Iterable[dict]: """Fetch publications from the database.""" + _query = "SELECT * FROM Publication" + _params = None + if search is not None and bool(search): + _query = (f"{_query} " + "WHERE CONCAT(PubMed_ID, ' ', Authors, ' ', Title) " + "LIKE %s") + _params = (f"%{search}%",) with conn.cursor(cursorclass=DictCursor) as cursor: - cursor.execute("SELECT * FROM Publication") + cursor.execute(_query, _params) + debug_query(_query, logger) for row in cursor.fetchall(): yield dict(row) |