diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-01-05 12:13:01 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-01-05 12:13:01 +0000 |
commit | fee70c974049560164d8950dabc63554f55671b1 (patch) | |
tree | 7c2d38852e6f1eec5c357b2304a04dc332b8d953 /src/backup_reason.rs | |
parent | 678e65c57ae983ef66d16e92965814b0f3f0d73f (diff) | |
parent | 8a42fc1c9dc3da6936fe8e1d0d16fbe8a60ec520 (diff) | |
download | obnam2-fee70c974049560164d8950dabc63554f55671b1.tar.gz |
Merge branch 'policy' into 'main'
refactor: move policy on whether to back up a file into a module
Closes #38
See merge request larswirzenius/obnam!62
Diffstat (limited to 'src/backup_reason.rs')
-rw-r--r-- | src/backup_reason.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/backup_reason.rs b/src/backup_reason.rs new file mode 100644 index 0000000..cc0d49a --- /dev/null +++ b/src/backup_reason.rs @@ -0,0 +1,34 @@ +use rusqlite::types::ToSqlOutput; +use rusqlite::ToSql; +use std::fmt; + +#[derive(Debug)] +pub enum Reason { + Skipped, + IsNew, + Changed, + Unchanged, + Error, +} + +impl ToSql for Reason { + fn to_sql(&self) -> rusqlite::Result<ToSqlOutput> { + Ok(ToSqlOutput::Owned(rusqlite::types::Value::Text(format!( + "{}", + self + )))) + } +} + +impl fmt::Display for Reason { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let reason = match self { + Reason::Skipped => "skipped", + Reason::IsNew => "new", + Reason::Changed => "changed", + Reason::Unchanged => "unchanged", + Reason::Error => "error", + }; + write!(f, "{}", reason) + } +} |