Skip to content

Commit

Permalink
Cache fix(#50)(patch)
Browse files Browse the repository at this point in the history
### Fixed
* Workaround for SAWarcning in SQLModel (discussed here: tiangolo/sqlmodel#189)
* Handle missing status detail when analysis is not paired
  • Loading branch information
Mropat committed Mar 22, 2022
1 parent 070b007 commit 2ab8eea
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 8 deletions.
4 changes: 4 additions & 0 deletions genotype_api/api/endpoints/analyses.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@

from genotype_api.security import get_active_user
from genotype_api.file_parsing.vcf import SequenceAnalysis
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True

router = APIRouter()

Expand Down
4 changes: 4 additions & 0 deletions genotype_api/api/endpoints/plates.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
PlateRead,
)
from genotype_api.security import get_active_user
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True

router = APIRouter()

Expand Down
8 changes: 6 additions & 2 deletions genotype_api/api/endpoints/samples.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@
refresh_sample_status,
)
from sqlmodel import Session, select
from sqlmodel.sql.expression import SelectOfScalar

from sqlmodel.sql.expression import Select, SelectOfScalar
from genotype_api.security import get_active_user

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True


router = APIRouter()

Expand Down Expand Up @@ -182,6 +184,8 @@ def get_status_detail(
current_user: User = Depends(get_active_user),
):
sample: Sample = get_sample(session=session, sample_id=sample_id)
if len(sample.analyses) != 2:
return StatusDetail()
return check_sample(sample=sample)


Expand Down
4 changes: 4 additions & 0 deletions genotype_api/api/endpoints/snps.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
from sqlmodel import Session, delete, select

from genotype_api.security import get_active_user
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True

router = APIRouter()

Expand Down
5 changes: 5 additions & 0 deletions genotype_api/api/endpoints/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
from sqlmodel import Session, select

from genotype_api.security import get_active_user
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True


router = APIRouter()

Expand Down
4 changes: 4 additions & 0 deletions genotype_api/crud/analyses.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
from genotype_api.constants import TYPES
from genotype_api.models import Analysis
from sqlmodel import Session, select
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True


def get_analyses_from_plate(plate_id: int, session: Session) -> List[Analysis]:
Expand Down
9 changes: 4 additions & 5 deletions genotype_api/crud/plates.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
from typing import Optional
from genotype_api.models import Plate, PlateCreate
from sqlmodel import Session, select
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True

LOG = logging.getLogger(__name__)

Expand All @@ -13,11 +17,6 @@ def get_plate(session: Session, plate_id: int) -> Plate:
return session.exec(statement).one()


def get_plate_by_plate_id(session: Session, plate_id: str) -> Optional[Plate]:
statement = select(Plate).where(Plate.plate_id == plate_id)
return session.exec(statement).first()


def create_plate(session: Session, plate: PlateCreate) -> Plate:
db_plate = Plate.from_orm(plate)
db_plate.analyses = plate.analyses # not sure why from_orm wont pick up the analyses
Expand Down
5 changes: 4 additions & 1 deletion genotype_api/crud/samples.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
from genotype_api.match import check_sample
from genotype_api.models import Sample, Analysis
from sqlmodel import Session, func, select
from sqlmodel.sql.expression import SelectOfScalar
from fastapi import HTTPException
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True


def get_sample(session: Session, sample_id: str) -> Sample:
Expand Down
4 changes: 4 additions & 0 deletions genotype_api/crud/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

from genotype_api.models import User, UserCreate
from sqlmodel import select, Session
from sqlmodel.sql.expression import Select, SelectOfScalar

SelectOfScalar.inherit_cache = True
Select.inherit_cache = True


def get_user(session: Session, user_id: int):
Expand Down

0 comments on commit 2ab8eea

Please sign in to comment.