summaryrefslogtreecommitdiff
path: root/src/backup_reason.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-01-05 12:54:53 +0200
committerLars Wirzenius <liw@liw.fi>2021-01-05 14:05:37 +0200
commit8a42fc1c9dc3da6936fe8e1d0d16fbe8a60ec520 (patch)
tree7c2d38852e6f1eec5c357b2304a04dc332b8d953 /src/backup_reason.rs
parent678e65c57ae983ef66d16e92965814b0f3f0d73f (diff)
downloadobnam2-8a42fc1c9dc3da6936fe8e1d0d16fbe8a60ec520.tar.gz
refactor: move policy on whether to back up a file into a module
This commit also splits up the src/cmd/backup.rs module into other, smaller, more cohesive modules that are easier to understand and use.
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)
+ }
+}