Skip to content

Commit 4ea8c5e

Browse files
committed
feat: implement query function for mssql
1 parent e5ad8fb commit 4ea8c5e

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

src/main.rs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3620,7 +3620,7 @@ mod mssql {
36203620
.columns()
36213621
.await?
36223622
.unwrap_or_default()
3623-
.into_iter()
3623+
.iter()
36243624
.map(|c| c.name().to_owned())
36253625
.collect();
36263626

@@ -3690,7 +3690,28 @@ mod mssql {
36903690
}
36913691

36923692
async fn query(&self, query: String) -> color_eyre::Result<responses::Query> {
3693-
todo!()
3693+
let mut client = self.client.lock().await;
3694+
3695+
let mut query = client.query(query, &[]).await?;
3696+
let columns: Vec<String> = query
3697+
.columns()
3698+
.await?
3699+
.unwrap_or_default()
3700+
.iter()
3701+
.map(|c| c.name().to_owned())
3702+
.collect();
3703+
3704+
let rows = tokio::time::timeout(
3705+
self.query_timeout,
3706+
query
3707+
.into_row_stream()
3708+
.map_ok(|row| row.into_iter().map(mssql_value_to_json).collect::<Vec<_>>())
3709+
.filter_map(|count| async { count.ok() })
3710+
.collect::<Vec<_>>(),
3711+
)
3712+
.await?;
3713+
3714+
Ok(responses::Query { columns, rows })
36943715
}
36953716
}
36963717
}

0 commit comments

Comments
 (0)