@@ -125,22 +125,22 @@ impl MappingParametersBuilder {
125125 gil : Python < ' _ > ,
126126 parameters_names : Vec < String > ,
127127 ) -> PSQLPyResult < PreparedParameters > {
128- if self . types . is_some ( ) {
129- return self . prepare_typed ( gil, parameters_names) ;
128+ match self . types . clone ( ) {
129+ Some ( types) => return self . prepare_typed ( gil, parameters_names, types) ,
130+ None => return self . prepare_not_typed ( gil, parameters_names) ,
130131 }
131-
132- self . prepare_not_typed ( gil, parameters_names)
133132 }
134133
135134 fn prepare_typed (
136135 self ,
137136 gil : Python < ' _ > ,
138137 parameters_names : Vec < String > ,
138+ types : Vec < Type > ,
139139 ) -> PSQLPyResult < PreparedParameters > {
140- let converted_parameters = self
141- . extract_parameters ( gil , parameters_names ) ?
142- . iter ( )
143- . map ( |parameter| from_python_untyped ( parameter. bind ( gil) ) )
140+ let extracted_parameters = self . extract_parameters ( gil , parameters_names ) ? ;
141+ let zipped_params_types = zip ( extracted_parameters , types ) ;
142+ let converted_parameters = zipped_params_types
143+ . map ( |( parameter, type_ ) | from_python_typed ( parameter. bind ( gil) , & type_ ) )
144144 . collect :: < PSQLPyResult < Vec < PythonDTO > > > ( ) ?;
145145
146146 Ok ( PreparedParameters :: new ( converted_parameters, vec ! [ ] ) ) // TODO: change vec![] to real types.
@@ -196,13 +196,10 @@ impl SequenceParametersBuilder {
196196 }
197197
198198 fn prepare ( self , gil : Python < ' _ > ) -> PSQLPyResult < PreparedParameters > {
199- let types = self . types . clone ( ) ;
200-
201- if types. is_some ( ) {
202- return self . prepare_typed ( gil, types. clone ( ) . unwrap ( ) ) ;
199+ match self . types . clone ( ) {
200+ Some ( types) => return self . prepare_typed ( gil, types) ,
201+ None => return self . prepare_not_typed ( gil) ,
203202 }
204-
205- self . prepare_not_typed ( gil)
206203 }
207204
208205 fn prepare_typed ( self , gil : Python < ' _ > , types : Vec < Type > ) -> PSQLPyResult < PreparedParameters > {
0 commit comments