sqlx_core_oldapi/sqlite/options/
journal_mode.rs

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