Skip to content

Commit 093d78c

Browse files
committed
Small fixes with kwargs parameters
1 parent de85176 commit 093d78c

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

python/tests/conftest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ async def create_table_for_map_parameters_test(
177177
connection = await psql_pool.connection()
178178
await connection.execute(
179179
f"CREATE TABLE {map_parameters_table_name}"
180-
"(id SERIAL, name VARCHAR(255),surname VARCHAR(255), age INT)",
180+
"(id SERIAL, name VARCHAR(255),surname VARCHAR(255), age SMALLINT)",
181181
)
182182

183183
yield

src/statement/parameters.rs

+11-14
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)