aboutsummaryrefslogtreecommitdiff
path: root/uploader/publications/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/publications/models.py')
-rw-r--r--uploader/publications/models.py17
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)