about summary refs log tree commit diff
path: root/gn_auth/auth/authorisation/resources/inbredset/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn_auth/auth/authorisation/resources/inbredset/models.py')
-rw-r--r--gn_auth/auth/authorisation/resources/inbredset/models.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/gn_auth/auth/authorisation/resources/inbredset/models.py b/gn_auth/auth/authorisation/resources/inbredset/models.py
index 64d41e3..3bc65d2 100644
--- a/gn_auth/auth/authorisation/resources/inbredset/models.py
+++ b/gn_auth/auth/authorisation/resources/inbredset/models.py
@@ -1,8 +1,10 @@
 """Functions to handle the low-level details regarding populations auth."""
 from uuid import UUID, uuid4
+from typing import Sequence, Optional
 
 import sqlite3
 
+import gn_auth.auth.db.sqlite3 as db
 from gn_auth.auth.errors import NotFoundError
 from gn_auth.auth.authentication.users import User
 from gn_auth.auth.authorisation.resources.groups.models import Group
@@ -94,3 +96,19 @@ def link_data_to_resource(# pylint: disable=[too-many-arguments, too-many-positi
         "VALUES (:resource_id, :data_link_id)",
         params)
     return params
+
+
+def resource_data(
+        cursor: db.DbCursor,
+        resource_id: UUID,
+        offset: int = 0,
+        limit: Optional[int] = None) -> Sequence[sqlite3.Row]:
+    """Fetch data linked to a inbred-set resource"""
+    cursor.execute(
+        ("SELECT * FROM inbredset_group_resources AS igr "
+         "INNER JOIN linked_inbredset_groups AS lig "
+         "ON igr.data_link_id=lig.data_link_id "
+         "WHERE igr.resource_id=?") + (
+             f" LIMIT {limit} OFFSET {offset}" if bool(limit) else ""),
+        (str(resource_id),))
+    return cursor.fetchall()