modelvault_core/
config.rs1#[derive(Debug, Clone, Default, PartialEq, Eq)]
5pub struct OpenRecoveryInfo {
6 pub truncated_bytes: u64,
8 pub truncate_reason: Option<String>,
10}
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq)]
14pub enum RecoveryMode {
15 AutoTruncate,
17 Strict,
19}
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq)]
23pub enum OpenMode {
24 ReadOnly,
26 ReadWrite,
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, Eq)]
32pub struct OpenOptions {
33 pub recovery: RecoveryMode,
34 pub mode: OpenMode,
35}
36
37impl Default for OpenOptions {
38 fn default() -> Self {
39 Self {
40 recovery: RecoveryMode::AutoTruncate,
41 mode: OpenMode::ReadWrite,
42 }
43 }
44}
45
46#[derive(Debug, Clone, Copy, PartialEq, Eq)]
48pub struct OpenOptionsBuilder {
49 recovery: RecoveryMode,
50 mode: OpenMode,
51}
52
53impl Default for OpenOptionsBuilder {
54 fn default() -> Self {
55 let opts = OpenOptions::default();
56 Self {
57 recovery: opts.recovery,
58 mode: opts.mode,
59 }
60 }
61}
62
63impl OpenOptions {
64 pub fn builder() -> OpenOptionsBuilder {
66 OpenOptionsBuilder::default()
67 }
68}
69
70impl OpenOptionsBuilder {
71 pub fn recovery(mut self, recovery: RecoveryMode) -> Self {
72 self.recovery = recovery;
73 self
74 }
75
76 pub fn mode(mut self, mode: OpenMode) -> Self {
77 self.mode = mode;
78 self
79 }
80
81 pub fn read_only(self) -> Self {
82 self.mode(OpenMode::ReadOnly)
83 }
84
85 pub fn read_write(self) -> Self {
86 self.mode(OpenMode::ReadWrite)
87 }
88
89 pub fn build(self) -> OpenOptions {
90 OpenOptions {
91 recovery: self.recovery,
92 mode: self.mode,
93 }
94 }
95}