1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
use crate::error::Error; use std::str::FromStr; #[derive(Debug, Clone)] pub enum SqliteJournalMode { Delete, Truncate, Persist, Memory, Wal, Off, } impl SqliteJournalMode { pub(crate) fn as_str(&self) -> &'static str { match self { SqliteJournalMode::Delete => "DELETE", SqliteJournalMode::Truncate => "TRUNCATE", SqliteJournalMode::Persist => "PERSIST", SqliteJournalMode::Memory => "MEMORY", SqliteJournalMode::Wal => "WAL", SqliteJournalMode::Off => "OFF", } } } impl Default for SqliteJournalMode { fn default() -> Self { SqliteJournalMode::Wal } } impl FromStr for SqliteJournalMode { type Err = Error; fn from_str(s: &str) -> Result<Self, Error> { Ok(match &*s.to_ascii_lowercase() { "delete" => SqliteJournalMode::Delete, "truncate" => SqliteJournalMode::Truncate, "persist" => SqliteJournalMode::Persist, "memory" => SqliteJournalMode::Memory, "wal" => SqliteJournalMode::Wal, "off" => SqliteJournalMode::Off, _ => { return Err(Error::Configuration( format!("unknown value {:?} for `journal_mode`", s).into(), )); } }) } }