Skip to content

Commit

Permalink
add rollback
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrOertlin committed Apr 12, 2024
1 parent f40a1d9 commit ba9b2c1
Showing 1 changed file with 21 additions and 16 deletions.
37 changes: 21 additions & 16 deletions genotype_api/services/endpoint_services/plate_service.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
"""Module to holds the plate service."""

import logging
from datetime import datetime
from http.client import HTTPException

from io import BytesIO
from pathlib import Path


from fastapi import UploadFile
from pydantic import EmailStr
from starlette import status

from genotype_api.constants import Types
from genotype_api.database.filter_models.plate_models import PlateSignOff, PlateOrderParams
from genotype_api.database.models import Plate, Analysis, User, Sample
Expand Down Expand Up @@ -80,20 +81,24 @@ def upload_plate(self, file: UploadFile) -> None:
file_name=str(file_name),
include_key="-CG-",
)
plate_obj = Plate(plate_id=plate_id)
plate: Plate = self.store.create_plate(plate=plate_obj)
new_plate: Plate = self.store.get_plate_by_plate_id(plate_id=plate_id)
analyses: list[Analysis] = list(excel_parser.generate_analyses(plate_id=new_plate.id))
self.store.check_analyses_objects(analyses=analyses, analysis_type=Types.GENOTYPE)
self.store.create_analyses_samples(analyses=analyses)
for analysis in analyses:
self.store.create_analysis(analysis=analysis)
plate_obj.analyses = analyses
for analysis in analyses:
sample: Sample = self.store.get_sample_by_id(sample_id=analysis.sample_id)
sample.analyses.append(analysis)
self.store.refresh_sample_status(sample=sample)
self.store.refresh_plate(plate=plate)
try:
plate_obj = Plate(plate_id=plate_id)
plate: Plate = self.store.create_plate(plate=plate_obj)
new_plate: Plate = self.store.get_plate_by_plate_id(plate_id=plate_id)
analyses: list[Analysis] = list(excel_parser.generate_analyses(plate_id=new_plate.id))
self.store.check_analyses_objects(analyses=analyses, analysis_type=Types.GENOTYPE)
self.store.create_analyses_samples(analyses=analyses)
for analysis in analyses:
self.store.create_analysis(analysis=analysis)
plate_obj.analyses = analyses
for analysis in analyses:
sample: Sample = self.store.get_sample_by_id(sample_id=analysis.sample_id)
sample.analyses.append(analysis)
self.store.refresh_sample_status(sample=sample)
self.store.refresh_plate(plate=plate)
except Exception as error:
logging.debug(error)
self.store.session.rollback()

def update_plate_sign_off(
self, plate_id: int, user_email: EmailStr, method_document: str, method_version: str
Expand Down

0 comments on commit ba9b2c1

Please sign in to comment.