better logging in rescan_vault()

feat/vaults
Tomáš Mládek 2021-03-20 16:49:01 +01:00
parent b773dbc49c
commit b051529da6
1 changed files with 46 additions and 16 deletions

View File

@ -1,18 +1,3 @@
use anyhow::{anyhow, Error, Result};
use chrono::prelude::*;
use diesel::sqlite::Sqlite;
use diesel::Connection;
use log::{error, info, trace};
use rayon::prelude::*;
use serde_json::Value;
use std::convert::TryFrom;
use std::path::{Component, Path, PathBuf};
use std::sync::{Arc, RwLock};
use std::time::{Instant, UNIX_EPOCH};
use std::{fs, iter};
use uuid::Uuid;
use walkdir::WalkDir;
use crate::addressing::Address;
use crate::database::{
bulk_retrieve_objects, file_set_valid, insert_entry, insert_file, query, retrieve_all_files,
@ -23,6 +8,20 @@ use crate::hash::Hashable;
use crate::jobs::{Job, JobContainer, JobId};
use crate::models;
use crate::models::File;
use anyhow::{anyhow, Error, Result};
use chrono::prelude::*;
use diesel::sqlite::Sqlite;
use diesel::Connection;
use log::{error, info, trace, warn};
use rayon::prelude::*;
use serde_json::Value;
use std::convert::TryFrom;
use std::path::{Component, Path, PathBuf};
use std::sync::{Arc, RwLock};
use std::time::{Instant, UNIX_EPOCH};
use std::{fs, iter};
use uuid::Uuid;
use walkdir::WalkDir;
const DIR_TYPE: &str = "FS_DIR";
const DIR_KEY: &str = "DIR";
@ -447,9 +446,40 @@ fn _rescan_vault<T: AsRef<Path>>(
})
.collect();
let mut failed: Vec<&Error> = vec![];
let mut created = 0;
let mut unchanged = 0;
let mut deleted = 0;
for result in &path_results {
match result {
Ok(result) => match result {
UpdatePathOutcome::Added(_) => created += 1,
UpdatePathOutcome::Unchanged(_) => unchanged += 1,
UpdatePathOutcome::Removed(_) => deleted += 1,
},
Err(err) => failed.push(err),
}
}
if !failed.is_empty() {
warn!(
"{} path updates failed! ({})",
failed.len(),
failed
.iter()
.map(|e| e.to_string())
.collect::<Vec<String>>()
.join(", ")
)
}
info!(
"Finished updating {}. Took {}s.",
"Finished updating {} ({} created, {} deleted, {} left unchanged). Took {}s.",
directory.as_ref().display(),
created,
deleted,
unchanged,
start.elapsed().as_secs()
);