@@ -526,12 +526,10 @@ def create_snpsection(self):
526526
527527 def create_collection (self ):
528528 """Creates collection entry in database"""
529- if self .db_pusher .read_exists ( "Collections" , { "ID_collection" : self .name } ):
529+ if self .db_pusher .get_collection_by_id ( self .name ):
530530 self .db_pusher .delete_collection (self .name )
531531 for sample in self .pool :
532- self .db_pusher .add_rec (
533- {"ID_collection" : self .name , "CG_ID_sample" : sample }, "Collections"
534- )
532+ self .db_pusher .add_collection (ID_collectiuon = self .name , CG_ID_sample = sample )
535533
536534 addedprojs = []
537535 for sample in self .pool :
@@ -541,8 +539,8 @@ def create_collection(self):
541539 self .create_project (lims_project )
542540 addedprojs .append (lims_project )
543541
544- def create_project (self , name : str ):
545- """Creates project in database"""
542+ def create_project (self , name : str ) -> None :
543+ """Creates or updates a project in the database. """
546544 if not self .sample :
547545 raise JobCreationError (
548546 "No sample information provided. Cannot create project in database."
@@ -552,12 +550,15 @@ def create_project(self, name: str):
552550 "Customer_ID_project" : self .sample ["Customer_ID_project" ],
553551 "Customer_ID" : self .sample ["Customer_ID" ],
554552 }
555- self .db_pusher .add_to_session (self .db_pusher .add_project (** project_data ))
556- self .db_pusher .commit_session ()
557-
558- def create_sample (self ):
559- """Creates sample in database"""
553+ if self .db_pusher .get_projects_by_cg_id_project (name ):
554+ update_data = {k : v for k , v in project_data .items () if k != "CG_ID_project" }
555+ self .db_pusher .update_project ({"CG_ID_project" : name }, update_data )
556+ else :
557+ self .db_pusher .add_to_session (self .db_pusher .add_project (** project_data ))
558+ self .db_pusher .commit_session ()
560559
560+ def create_sample (self ) -> None :
561+ """Creates or updates a sample in the database."""
561562 try :
562563 if not self .sample :
563564 raise JobCreationError (
@@ -581,8 +582,13 @@ def create_sample(self):
581582 "method_libprep" : self .sample ["method_libprep" ],
582583 "method_sequencing" : self .sample ["method_sequencing" ],
583584 }
584- self .db_pusher .add_to_session (self .db_pusher .add_sample (** sample_data ))
585- self .db_pusher .commit_session ()
585+ cg_id = self .sample ["CG_ID_sample" ]
586+ if self .db_pusher .get_sample_by_cg_id_sample (cg_id ):
587+ update_data = {k : v for k , v in sample_data .items () if k != "CG_ID_sample" }
588+ self .db_pusher .update_sample ({"CG_ID_sample" : cg_id }, update_data )
589+ else :
590+ self .db_pusher .add_to_session (self .db_pusher .add_sample (** sample_data ))
591+ self .db_pusher .commit_session ()
586592 except JobCreationError as e :
587593 self .logger .error (f"Unable to add sample { self .name } to database: { e } " )
588594 except KeyError as e :
0 commit comments