Skip to main content

sqlx_sqlserver/
query_result.rs

1/// Summary of a SQL Server query execution.
2#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
3pub struct MssqlQueryResult {
4    rows_affected: u64,
5}
6
7impl MssqlQueryResult {
8    /// Creates a query result with a row count.
9    pub const fn new(rows_affected: u64) -> Self {
10        Self { rows_affected }
11    }
12
13    /// Returns the number of rows affected.
14    pub const fn rows_affected(&self) -> u64 {
15        self.rows_affected
16    }
17}
18
19impl Extend<Self> for MssqlQueryResult {
20    fn extend<T: IntoIterator<Item = Self>>(&mut self, iter: T) {
21        self.rows_affected += iter
22            .into_iter()
23            .map(|result| result.rows_affected)
24            .sum::<u64>();
25    }
26}
27
28#[cfg(test)]
29mod tests {
30    use super::*;
31
32    #[test]
33    fn query_results_sum_rows_affected() {
34        let mut result = MssqlQueryResult::new(2);
35        result.extend([MssqlQueryResult::new(3), MssqlQueryResult::new(5)]);
36
37        assert_eq!(10, result.rows_affected());
38    }
39}