mirror of
https://github.com/PR0M3TH3AN/Marlin.git
synced 2025-09-08 23:28:44 +00:00
Merge pull request #42 from PR0M3TH3AN/codex/fix-modification-time-fallback-for-backups
Fix modification time fallback for backups
This commit is contained in:
@@ -136,32 +136,22 @@ impl BackupManager {
|
|||||||
if let Some(filename_osstr) = path.file_name() {
|
if let Some(filename_osstr) = path.file_name() {
|
||||||
if let Some(filename) = filename_osstr.to_str() {
|
if let Some(filename) = filename_osstr.to_str() {
|
||||||
if filename.starts_with("backup_") && filename.ends_with(".db") {
|
if filename.starts_with("backup_") && filename.ends_with(".db") {
|
||||||
|
let metadata = fs::metadata(&path).with_context(|| {
|
||||||
|
format!("Failed to get metadata for {}", path.display())
|
||||||
|
})?;
|
||||||
|
|
||||||
let ts_str = filename
|
let ts_str = filename
|
||||||
.trim_start_matches("backup_")
|
.trim_start_matches("backup_")
|
||||||
.trim_end_matches(".db");
|
.trim_end_matches(".db");
|
||||||
|
|
||||||
let naive_dt =
|
let parsed_dt =
|
||||||
match NaiveDateTime::parse_from_str(ts_str, "%Y-%m-%d_%H-%M-%S_%f")
|
NaiveDateTime::parse_from_str(ts_str, "%Y-%m-%d_%H-%M-%S_%f")
|
||||||
{
|
.or_else(|_| {
|
||||||
Ok(dt) => dt,
|
NaiveDateTime::parse_from_str(ts_str, "%Y-%m-%d_%H-%M-%S")
|
||||||
Err(_) => match NaiveDateTime::parse_from_str(
|
});
|
||||||
ts_str,
|
|
||||||
"%Y-%m-%d_%H-%M-%S",
|
|
||||||
) {
|
|
||||||
Ok(dt) => dt,
|
|
||||||
Err(_) => {
|
|
||||||
let metadata =
|
|
||||||
fs::metadata(&path).with_context(|| {
|
|
||||||
format!(
|
|
||||||
"Failed to get metadata for {}",
|
|
||||||
path.display()
|
|
||||||
)
|
|
||||||
})?;
|
|
||||||
DateTime::<Utc>::from(metadata.modified()?).naive_utc()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
|
let timestamp_utc = match parsed_dt {
|
||||||
|
Ok(naive_dt) => {
|
||||||
let local_dt_result = Local.from_local_datetime(&naive_dt);
|
let local_dt_result = Local.from_local_datetime(&naive_dt);
|
||||||
let local_dt = match local_dt_result {
|
let local_dt = match local_dt_result {
|
||||||
chrono::LocalResult::Single(dt) => dt,
|
chrono::LocalResult::Single(dt) => dt,
|
||||||
@@ -177,9 +167,11 @@ impl BackupManager {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let timestamp_utc = DateTime::<Utc>::from(local_dt);
|
DateTime::<Utc>::from(local_dt)
|
||||||
|
}
|
||||||
|
Err(_) => DateTime::<Utc>::from(metadata.modified()?),
|
||||||
|
};
|
||||||
|
|
||||||
let metadata = fs::metadata(&path)?;
|
|
||||||
backup_infos.push(BackupInfo {
|
backup_infos.push(BackupInfo {
|
||||||
id: filename.to_string(),
|
id: filename.to_string(),
|
||||||
timestamp: timestamp_utc,
|
timestamp: timestamp_utc,
|
||||||
|
Reference in New Issue
Block a user