Cleanup
This commit is contained in:
parent
470fbc6d1c
commit
91352fc13b
2 changed files with 0 additions and 73 deletions
1
.env
1
.env
|
@ -1 +0,0 @@
|
|||
DATABASE_URL=sqlite:./src/db/schema.sqlite
|
|
@ -1,72 +0,0 @@
|
|||
use log::{error, info};
|
||||
use std::time;
|
||||
|
||||
use crate::app::index::Index;
|
||||
use crate::app::vfs;
|
||||
use crate::db;
|
||||
|
||||
use cleaner::Cleaner;
|
||||
use collector::Collector;
|
||||
use inserter::Inserter;
|
||||
use traverser::Traverser;
|
||||
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error(transparent)]
|
||||
IndexClean(#[from] cleaner::Error),
|
||||
#[error(transparent)]
|
||||
Database(#[from] sqlx::Error),
|
||||
#[error(transparent)]
|
||||
DatabaseConnection(#[from] db::Error),
|
||||
#[error(transparent)]
|
||||
Vfs(#[from] vfs::Error),
|
||||
}
|
||||
|
||||
impl Scanner {
|
||||
pub async fn scan(&self) -> Result<(), Error> {
|
||||
let start = time::Instant::now();
|
||||
info!("Beginning library index update");
|
||||
|
||||
let album_art_pattern = self
|
||||
.settings_manager
|
||||
.get_index_album_art_pattern()
|
||||
.await
|
||||
.ok();
|
||||
|
||||
let cleaner = Cleaner::new(self.db.clone(), self.vfs_manager.clone());
|
||||
cleaner.clean().await?;
|
||||
|
||||
let (insert_sender, insert_receiver) = tokio::sync::mpsc::unbounded_channel();
|
||||
let insertion = tokio::spawn({
|
||||
let db = self.db.clone();
|
||||
async {
|
||||
let mut inserter = Inserter::new(db, insert_receiver);
|
||||
inserter.insert().await;
|
||||
}
|
||||
});
|
||||
|
||||
let (collect_sender, collect_receiver) = crossbeam_channel::unbounded();
|
||||
let collection = tokio::task::spawn_blocking(|| {
|
||||
let collector = Collector::new(collect_receiver, insert_sender, album_art_pattern);
|
||||
collector.collect();
|
||||
});
|
||||
|
||||
let vfs = self.vfs_manager.get_vfs().await?;
|
||||
let traversal = tokio::task::spawn_blocking(move || {
|
||||
let mounts = vfs.mounts();
|
||||
let traverser = Traverser::new(collect_sender);
|
||||
traverser.traverse(mounts.iter().map(|p| p.source.clone()).collect());
|
||||
});
|
||||
|
||||
traversal.await.unwrap();
|
||||
collection.await.unwrap();
|
||||
insertion.await.unwrap();
|
||||
|
||||
info!(
|
||||
"Library index update took {} seconds",
|
||||
start.elapsed().as_millis() as f32 / 1000.0
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue