about summary refs log tree commit diff
path: root/uploader/publications/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/publications/models.py')
-rw-r--r--uploader/publications/models.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/uploader/publications/models.py b/uploader/publications/models.py
index 992ebfa..f4e8d33 100644
--- a/uploader/publications/models.py
+++ b/uploader/publications/models.py
@@ -71,16 +71,23 @@ def update_publications(conn: Connection , publications: tuple[dict, ...]) -> tu
 
 def fetch_publications(
         conn: Connection,
-        search: Optional[str] = None
+        search: Optional[str] = None,
+        offset: int = 0,
+        limit: int = -1
 ) -> 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}%",)
+                  "WHERE PubMed_ID LIKE %s "
+                  "OR Authors LIKE %s "
+                  "OR Title LIKE %s")
+        _params = (f"%{search}%",) * 3
+
+    if limit > 0:
+        _query = (f"{_query} LIMIT {limit} OFFSET {offset}")
+
     with conn.cursor(cursorclass=DictCursor) as cursor:
         cursor.execute(_query, _params)
         debug_query(_query, logger)