Skip to content

Commit

Permalink
Merge pull request #24 from TheJacksonLaboratory/GW-149-geneset-metadata
Browse files Browse the repository at this point in the history
Gw 149 geneset metadata
  • Loading branch information
francastell authored Feb 6, 2024
2 parents 66bbbbd + 50650c8 commit 6b5cd2b
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "geneweaver-api"
version = "0.2.0a1"
version = "0.2.0a2"
description = "description"
authors = ["Jax Computational Sciences <[email protected]>"]
packages = [
Expand Down
20 changes: 20 additions & 0 deletions src/geneweaver/api/controller/genesets.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,23 @@ def get_export_geneset_by_id_type(
media_type="application/octet-stream",
filename=geneset_filename,
)


@router.get("/{geneset_id}/metadata")
def get_geneset_metadata(
geneset_id: Annotated[
int, Path(format="int64", minimum=0, maxiumum=9223372036854775807)
],
user: UserInternal = Security(deps.full_user),
cursor: Optional[deps.Cursor] = Depends(deps.cursor),
) -> dict:
"""Get a geneset metadata by geneset id."""
response = genset_service.get_geneset_metadata(cursor, geneset_id, user)

if "error" in response:
if response.get("message") == api_message.ACCESS_FORBIDDEN:
raise HTTPException(status_code=403, detail=api_message.ACCESS_FORBIDDEN)
else:
raise HTTPException(status_code=500, detail=api_message.UNEXPECTED_ERROR)

return response
20 changes: 20 additions & 0 deletions src/geneweaver/api/services/geneset.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,26 @@
from psycopg import Cursor


def get_geneset_metadata(cursor: Cursor, geneset_id: int, user: User) -> dict:
"""Get a geneset metadata by geneset id.
@param cursor: DB cursor
@param geneset_id: geneset identifier
@param user: GW user
@return: dictionary response (geneset).
"""
try:
if not is_geneset_readable_by_user(cursor, geneset_id, user):
return {"error": True, "message": message.ACCESS_FORBIDDEN}

geneset = db_geneset.by_id(cursor, geneset_id)
return {"geneset": geneset}

except Exception as err:
logger.error(err)
raise err


def get_geneset(cursor: Cursor, geneset_id: int, user: User) -> dict:
"""Get a geneset by ID.
Expand Down
11 changes: 11 additions & 0 deletions tests/services/test_genset.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,14 @@ def test_get_geneset_w_gene_id_type_reponse(
assert (
response.get("geneset_values") == geneset_w_gene_id_type_resp["geneset_values"]
)


@patch("geneweaver.api.services.geneset.db_geneset")
@patch("geneweaver.api.services.geneset.is_geneset_readable_by_user")
def test_get_geneset_metadata(mock_genset_readable_func, mock_db_geneset):
"""Test get geneset metadata by geneset id."""
mock_genset_readable_func.return_value = True
mock_db_geneset.by_id.return_value = geneset_by_id_resp.get("geneset")
response = geneset.get_geneset_metadata(None, 1234, None)

assert response.get("geneset") == geneset_by_id_resp["geneset"]

0 comments on commit 6b5cd2b

Please sign in to comment.