about summary refs log tree commit diff
path: root/gn3/auth/authorisation/data/views.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-04-04 16:10:50 +0300
committerFrederick Muriuki Muriithi2023-04-04 16:10:50 +0300
commit87b439265ad44b90742e69a992e2fd66fdc48c49 (patch)
tree959fc67ef64fa9adb654e7e665eebada220f372b /gn3/auth/authorisation/data/views.py
parent02e5c81e5d1281b66aa14ce47563997e845cea95 (diff)
downloadgenenetwork3-87b439265ad44b90742e69a992e2fd66fdc48c49.tar.gz
auth: Search for linking genotype datasets.
Diffstat (limited to 'gn3/auth/authorisation/data/views.py')
-rw-r--r--gn3/auth/authorisation/data/views.py33
1 files changed, 32 insertions, 1 deletions
diff --git a/gn3/auth/authorisation/data/views.py b/gn3/auth/authorisation/data/views.py
index b1550d7..70b14d7 100644
--- a/gn3/auth/authorisation/data/views.py
+++ b/gn3/auth/authorisation/data/views.py
@@ -5,7 +5,7 @@ import json
 import random
 import string
 import datetime
-from functools import reduce
+from functools import reduce, partial
 from typing import Sequence, Iterable
 
 import redis
@@ -19,6 +19,7 @@ from gn3.db.traits import build_trait_name
 
 from gn3.auth import db
 from gn3.auth.dictify import dictify
+from gn3.auth.db_utils import with_db_connection
 
 from gn3.auth.authorisation.errors import NotFoundError
 
@@ -39,6 +40,8 @@ from gn3.auth.authorisation.errors import ForbiddenAccess
 from gn3.auth.authentication.oauth2.resource_server import require_oauth
 from gn3.auth.authentication.users import User, user_by_email, set_user_password
 
+from gn3.auth.authorisation.data.genotypes import ungrouped_genotype_data
+
 data = Blueprint("data", __name__)
 
 @data.route("species")
@@ -305,3 +308,31 @@ def migrate_users_data() -> Response:
                 "The data migration service is currently unavailable.")
         }),
         status=500, mimetype="application/json")
+
+def __search_mrna__():
+    pass
+
+def __search_genotypes__():
+    query = request.form.get("query", request.args.get("query", ""))
+    limit = int(request.form.get("limit", request.args.get("limit", 10000)))
+    offset = int(request.form.get("offset", request.args.get("offset", 0)))
+    with gn3db.database_connection() as gn3conn:
+        __ungrouped__ = partial(
+            ungrouped_genotype_data, gn3conn=gn3conn, search_query=query,
+            limit=limit, offset=offset)
+        return jsonify(with_db_connection(__ungrouped__))
+
+def __search_phenotypes__():
+    pass
+
+@data.route("/search", methods=["GET"])
+@require_oauth("profile group resource")
+def search_unlinked_data():
+    """Search for various unlinked data."""
+    dataset_type = request.form["dataset_type"]
+    search_fns = {
+        "mrna": __search_mrna__,
+        "genotype": __search_genotypes__,
+        "phenotype": __search_phenotypes__
+    }
+    return search_fns[dataset_type]()