···2222 Dupes(cmd::dupes::Args),
23232424 /// Updates the local database with new tracks from previously added directories.
2525- Update(cmd::add::Args),
2525+ Update(cmd::update::Args),
26262727 /// Cleans destination of uncleanly-copied files.
2828 Clean(cmd::clean::Args),
+1
src/cmd/mod.rs
···66pub mod ipod_init;
77pub mod sync;
88pub mod transcode;
99+pub mod update;
+23
src/cmd/update.rs
···11+use crate::*;
22+use anyhow::{Context, Result};
33+use clap::Args as ClapArgs;
44+55+#[derive(ClapArgs, Debug)]
66+pub struct Args {
77+ /// Directory in which tunz will store its local database.
88+ #[arg(short, long, default_value_t = db::default_database_dir().to_str().unwrap().to_owned())]
99+ pub database_path: String,
1010+}
1111+1212+pub async fn run(args: Args) -> Result<()> {
1313+ log::debug!("CLI args: {:?}", args);
1414+1515+ // Open a database
1616+ let db = db::Instance::new(&args.database_path, false)
1717+ .await
1818+ .with_context(|| "Cannot open local database instance")?;
1919+2020+ let totals = library::update(&db, |_| {}).await?;
2121+ log::info!("Imported {} tracks", totals.0);
2222+ Ok(())
2323+}
+1-1
src/db/instance.rs
···413413 pub async fn track_paths_from_dir(&self, directory: String) -> Result<Vec<String>, Error> {
414414 let mut conn = self.pool.acquire().await?;
415415416416- let directory = format!("{}?", directory);
416416+ let directory = format!("{}%", directory);
417417 Ok(sqlx::query!(
418418 r#"SELECT file_path FROM tracks where file_path LIKE ?1"#,
419419 directory,