summaryrefslogtreecommitdiff
path: root/src/backup_reason.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-01-05 12:13:01 +0000
committerLars Wirzenius <liw@liw.fi>2021-01-05 12:13:01 +0000
commitfee70c974049560164d8950dabc63554f55671b1 (patch)
tree7c2d38852e6f1eec5c357b2304a04dc332b8d953 /src/backup_reason.rs
parent678e65c57ae983ef66d16e92965814b0f3f0d73f (diff)
parent8a42fc1c9dc3da6936fe8e1d0d16fbe8a60ec520 (diff)
downloadobnam2-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.rs34
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)
+ }
+}