11from logging import getLogger
2+ from typing import Optional
23
3- from fastapi import APIRouter
4+ from fastapi import APIRouter , Depends
45from pydantic import BaseModel
56from sqlmodel import Session , select
67
8+ from murfey .server .api .auth import MurfeySessionID , validate_token
79from murfey .server .murfey_db import murfey_db
810from murfey .util .db import SessionProcessingParameters
911
1012logger = getLogger ("murfey.server.api.processing_parameters" )
1113
12- router = APIRouter ()
14+ router = APIRouter (dependencies = [ Depends ( validate_token )] )
1315
1416
1517class EditableSessionProcessingParameters (BaseModel ):
16- gain_ref : str
17- dose_per_frame : float
18- eer_fractionation_file : str
19- symmetry : str
18+ gain_ref : str = ""
19+ dose_per_frame : Optional [ float ] = None
20+ eer_fractionation_file : str = ""
21+ symmetry : str = ""
2022
2123
22- @router .get ("sessions/{session_id}/session_processing_parameters" )
24+ @router .get ("/ sessions/{session_id}/session_processing_parameters" )
2325def get_session_processing_parameters (
24- session_id : int , db : Session = murfey_db
26+ session_id : MurfeySessionID , db : Session = murfey_db
2527) -> EditableSessionProcessingParameters :
2628 proc_params = db .exec (
2729 select (SessionProcessingParameters ).where (
@@ -34,3 +36,28 @@ def get_session_processing_parameters(
3436 eer_fractionation_file = proc_params .eer_fractionation_file ,
3537 symmetry = proc_params .symmetry ,
3638 )
39+
40+
41+ @router .post ("/sessions/{session_id}/session_processing_parameters" )
42+ def set_session_processing_parameters (
43+ session_id : MurfeySessionID ,
44+ edited_parameters : EditableSessionProcessingParameters ,
45+ db : Session = murfey_db ,
46+ ) -> EditableSessionProcessingParameters :
47+ proc_params = db .exec (
48+ select (SessionProcessingParameters ).where (
49+ SessionProcessingParameters .session_id == session_id
50+ )
51+ ).one ()
52+ proc_params .gain_ref = edited_parameters .gain_ref or proc_params .gain_ref
53+ proc_params .dose_per_frame = (
54+ edited_parameters .dose_per_frame or proc_params .dose_per_frame
55+ )
56+ proc_params .eer_fractionation_file = (
57+ edited_parameters .eer_fractionation_file or proc_params .eer_fractionation_file
58+ )
59+ proc_params .symmetry = edited_parameters .symmetry or proc_params .symmetry
60+ db .add (proc_params )
61+ db .commit ()
62+ db .close ()
63+ return edited_parameters
0 commit comments