tsubakuro_rust_core/transaction/
commit_option.rs

1use crate::jogasaki::proto::sql::request::{CommitOption, CommitStatus as CommitType};
2
3/// Commit option.
4///
5/// See [SqlClient::commit()](crate::prelude::SqlClient::commit).
6///
7/// # Examples
8///
9/// ## Stored
10/// ```
11/// use tsubakuro_rust_core::prelude::*;
12///
13/// let mut commit_option = CommitOption::new();
14/// commit_option.set_commit_type(CommitType::Stored);
15/// ```
16///
17/// ```
18/// use tsubakuro_rust_core::prelude::*;
19///
20/// let commit_option = CommitOption::from(CommitType::Stored);
21/// ```
22///
23/// ## Default
24/// ```
25/// use tsubakuro_rust_core::prelude::*;
26///
27/// let mut commit_option = CommitOption::new();
28/// commit_option.set_commit_type(CommitType::Unspecified);
29/// ```
30///
31/// ```
32/// use tsubakuro_rust_core::prelude::*;
33///
34/// let commit_option = CommitOption::from(CommitType::Unspecified);
35/// ```
36///
37/// ```
38/// use tsubakuro_rust_core::prelude::*;
39///
40/// let transaction_option = TransactionOption::default();
41/// ```
42impl CommitOption {
43    /// Creates a new instance.
44    pub fn new() -> CommitOption {
45        CommitOption {
46            notification_type: CommitType::Unspecified.into(),
47            auto_dispose: false,
48        }
49    }
50
51    /// Set commit type.
52    pub fn set_commit_type(&mut self, commit_type: CommitType) {
53        self.notification_type = commit_type.into();
54    }
55
56    /// Get commit type.
57    pub fn commit_type(&self) -> CommitType {
58        self.notification_type()
59    }
60
61    /// Set auto dispose.
62    pub fn set_auto_dispose(&mut self, auto_dispose: bool) {
63        self.auto_dispose = auto_dispose;
64    }
65
66    /// Get auto dispose.
67    pub fn auto_dispose(&self) -> bool {
68        self.auto_dispose
69    }
70}
71
72impl From<CommitType> for CommitOption {
73    fn from(value: CommitType) -> Self {
74        let mut option = CommitOption::new();
75        option.set_commit_type(value);
76        option
77    }
78}
79
80#[cfg(test)]
81mod test {
82    use super::*;
83
84    #[test]
85    fn commit_option() {
86        {
87            let option = CommitOption::new();
88            assert_eq!(CommitType::Unspecified, option.commit_type());
89            assert_eq!(false, option.auto_dispose());
90        }
91        {
92            let mut option = CommitOption::new();
93            option.set_commit_type(CommitType::Stored);
94            option.set_auto_dispose(true);
95
96            assert_eq!(CommitType::Stored, option.commit_type());
97            assert_eq!(true, option.auto_dispose());
98        }
99    }
100
101    #[test]
102    fn commit_option_default() {
103        let option = CommitOption::default();
104        assert_eq!(CommitType::Unspecified, option.commit_type());
105        assert_eq!(false, option.auto_dispose());
106    }
107
108    #[test]
109    fn commit_option_from() {
110        let option = CommitOption::from(CommitType::Stored);
111        assert_eq!(CommitType::Stored, option.commit_type());
112        assert_eq!(false, option.auto_dispose());
113    }
114}