rqlite_rs/
query_result.rs

1use serde::Deserialize;
2
3/// The result of a query.
4#[derive(Debug, Deserialize, Clone)]
5pub struct QueryResult {
6    /// The last insert ID.
7    last_insert_id: Option<i64>,
8    /// The number of rows affected.
9    rows_affected: Option<i64>,
10}
11
12impl QueryResult {
13    /// Returns the last insert ID, if any.
14    #[must_use]
15    pub fn last_insert_id(&self) -> Option<i64> {
16        self.last_insert_id
17    }
18
19    /// Returns the number of rows affected, if any.
20    #[must_use]
21    pub fn rows_affected(&self) -> Option<i64> {
22        self.rows_affected
23    }
24
25    /// Returns `true` if the query changed the database.
26    #[must_use]
27    pub fn changed(&self) -> bool {
28        self.rows_affected.unwrap_or(0) > 0
29    }
30}
31
32#[cfg(test)]
33mod tests {
34    use super::*;
35
36    #[test]
37    fn unit_query_result() {
38        let query_result = QueryResult {
39            last_insert_id: Some(1),
40            rows_affected: Some(1),
41        };
42
43        assert_eq!(query_result.last_insert_id(), Some(1));
44        assert_eq!(query_result.rows_affected(), Some(1));
45        assert!(query_result.changed());
46    }
47}