tsubakuro_rust_core/transaction/
commit_option.rs1use crate::jogasaki::proto::sql::request::{CommitOption, CommitStatus as CommitType};
2
3impl CommitOption {
43    pub fn new() -> CommitOption {
45        CommitOption {
46            notification_type: CommitType::Unspecified.into(),
47            auto_dispose: false,
48        }
49    }
50
51    pub fn set_commit_type(&mut self, commit_type: CommitType) {
53        self.notification_type = commit_type.into();
54    }
55
56    pub fn commit_type(&self) -> CommitType {
58        self.notification_type()
59    }
60
61    pub fn set_auto_dispose(&mut self, auto_dispose: bool) {
63        self.auto_dispose = auto_dispose;
64    }
65
66    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}