Skip to content

Commit

Permalink
Merge pull request #761 from alliance-genome/SCRUM-4458-sw
Browse files Browse the repository at this point in the history
fixed to missing data for 'authors', 'mod_corpus_associations', 'mesh…
  • Loading branch information
sweng66 authored Oct 3, 2024
2 parents bfbc0e5 + 46dd9e8 commit f984b90
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 24 deletions.
13 changes: 6 additions & 7 deletions agr_literature_service/api/crud/reference_crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,14 +427,13 @@ def show(db: Session, curie_or_reference_id: str): # noqa
mod_reference_type_id=ref_mod_referencetype.reference_mod_referencetype_id,
reference_type=ref_mod_referencetype.mod_referencetype.referencetype.label,
mod_abbreviation=ref_mod_referencetype.mod_referencetype.mod.abbreviation)))
if "obsolete_reference" in reference_data:
reference_data["obsolete_references"] = [obs_reference["curie"] for obs_reference in
reference_data["obsolete_reference"]]
del reference_data["obsolete_reference"]
reference_data["obsolete_references"] = [obs_reference["curie"] for obs_reference in
reference_data["obsolete_reference"]]
del reference_data["obsolete_reference"]

# So thisis wierd, we check reference.mod_corpus_association BUT
# use reference_data["mod_corpus_association"]
if reference.mod_corpus_association and "mod_corpus_association" in reference_data:
if reference.mod_corpus_association:
for i in range(len(reference_data["mod_corpus_association"])):
del reference_data["mod_corpus_association"][i]["reference_id"]
reference_data["mod_corpus_association"][i]["mod_abbreviation"] = reference_data[
Expand All @@ -451,12 +450,12 @@ def show(db: Session, curie_or_reference_id: str): # noqa

reference_data["workflow_tags"].append(ont_json)

if reference.mesh_term and "mesh_term" in reference_data:
if reference.mesh_term:
for mesh_term in reference_data["mesh_term"]:
del mesh_term["reference_id"]
reference_data['mesh_terms'] = reference_data['mesh_term']

if reference.author and "author" in reference_data:
if reference.author:
authors = []
for author in reference_data["author"]:
del author["reference_id"]
Expand Down
38 changes: 21 additions & 17 deletions agr_literature_service/api/crud/reference_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from fastapi import HTTPException, status
from sqlalchemy import or_
from sqlalchemy.orm import Session, Load
from sqlalchemy.orm import Session, subqueryload, joinedload

from agr_literature_service.api.models import ReferenceModel, ObsoleteReferenceModel, ReferencefileModel

Expand Down Expand Up @@ -108,23 +108,27 @@ def get_reference(db: Session, curie_or_reference_id: str, load_referencefiles:
load_authors: bool = False, load_mod_corpus_associations: bool = False,
load_mesh_terms: bool = False, load_obsolete_references: bool = False):
reference_id = int(curie_or_reference_id) if curie_or_reference_id.isdigit() else None
options = None
options = []
query = db.query(ReferenceModel)
if load_referencefiles or load_authors or load_mod_corpus_associations or load_mesh_terms or \
load_obsolete_references:
options = Load(ReferenceModel)
if load_referencefiles:
options.subqueryload(ReferenceModel.referencefiles).subqueryload(
ReferencefileModel.referencefile_mods)
if load_authors:
options.joinedload(ReferenceModel.author)
if load_mod_corpus_associations:
options.joinedload(ReferenceModel.mod_corpus_association)
if load_mesh_terms:
options.joinedload(ReferenceModel.mesh_term)
if load_obsolete_references:
options.joinedload(ReferenceModel.obsolete_reference)
query = query.options(options)

if load_referencefiles:
options.append(subqueryload(ReferenceModel.referencefiles).subqueryload(ReferencefileModel.referencefile_mods))

if load_authors:
options.append(joinedload(ReferenceModel.author))

if load_mod_corpus_associations:
options.append(joinedload(ReferenceModel.mod_corpus_association))

if load_mesh_terms:
options.append(joinedload(ReferenceModel.mesh_term))

if load_obsolete_references:
options.append(joinedload(ReferenceModel.obsolete_reference))

if options:
query = query.options(*options)

reference = query.filter(or_(ReferenceModel.curie == curie_or_reference_id,
ReferenceModel.reference_id == reference_id)).one_or_none()
if reference is None and reference_id is None:
Expand Down

0 comments on commit f984b90

Please sign in to comment.