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}