11import re
2+ from typing import List
23
34from fastapi import HTTPException , status
45from lims_utils .logging import app_logger
56from lims_utils .models import Paged , ProposalReference
6- from sqlalchemy import and_ , insert , select
7+ from sqlalchemy import and_ , insert , select , update
78
89from ..models .inner_db .tables import Container , Sample , SampleParentChild , Shipment
910from ..models .samples import OptionalSample , SampleIn , SampleOut
@@ -80,8 +81,18 @@ def create_sample(shipmentId: int, params: SampleIn, token: str):
8081 ],
8182 ).all ()
8283
84+ full_samples : List [Sample ] = []
85+
8386 for sample in samples :
84- Expeye .upsert (token , sample , None )
87+ expeye_sample = Expeye .upsert (token , sample , None )
88+
89+ full_sample = inner_db .session .scalar (
90+ update (Sample )
91+ .returning (Sample )
92+ .filter (Sample .id == sample .id )
93+ .values ({"externalId" : expeye_sample ["externalId" ]})
94+ )
95+ full_samples .append (full_sample )
8596
8697 if params .parents :
8798 inner_db .session .execute (
@@ -90,7 +101,7 @@ def create_sample(shipmentId: int, params: SampleIn, token: str):
90101 )
91102
92103 inner_db .session .commit ()
93- return Paged (items = samples , total = params .copies , page = 0 , limit = params .copies )
104+ return Paged (items = full_samples , total = params .copies , page = 0 , limit = params .copies )
94105
95106
96107def edit_sample (sampleId : int , params : OptionalSample , token : str ):
0 commit comments