summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cmd/sync.rs7
-rw-r--r--src/db.rs4
-rw-r--r--src/exporter.rs37
-rw-r--r--src/main.rs1
4 files changed, 4 insertions, 45 deletions
diff --git a/src/cmd/sync.rs b/src/cmd/sync.rs
index f8ca2b6..3331db1 100644
--- a/src/cmd/sync.rs
+++ b/src/cmd/sync.rs
@@ -1,6 +1,5 @@
use cli;
use db;
-use exporter;
use lastfm;
use paths;
@@ -13,9 +12,9 @@ pub fn run(opts: &cli::Options) -> failure::Fallible<()> {
opts.username.as_ref().unwrap()
);
- let exporter = exporter::Exporter::new(&db, &lastfm);
+ let ts = db.most_recent_timestamp()?;
+ let to_fetch = lastfm.track_count(ts.map(|x| x + 1))?;
- let to_fetch = exporter.tracks_to_sync()?;
let bar = indicatif::ProgressBar::new(to_fetch);
bar.set_style(
indicatif::ProgressStyle::default_bar()
@@ -23,7 +22,7 @@ pub fn run(opts: &cli::Options) -> failure::Fallible<()> {
.template("Downloading {pos}/{len} tracks...\n{percent:>3}% [{wide_bar}] {eta:5}")
);
- exporter.sync(|_| { bar.inc(1); })?;
+ db.insert_tracks(bar.wrap_iter(lastfm.tracks(ts.map(|x| x + 1))))?;
bar.finish_with_message("done");
diff --git a/src/db.rs b/src/db.rs
index 7289810..056886e 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -74,10 +74,9 @@ impl DB {
})?)
}
- pub fn insert_tracks<F: FnMut(lastfm::Track)>(
+ pub fn insert_tracks(
&self,
tracks: impl Iterator<Item=lastfm::Track>,
- mut f: F
) -> failure::Fallible<()> {
let mut sth = self.conn.prepare("INSERT INTO tracks VALUES (?, ?, ?, ?)")?;
for track in tracks {
@@ -88,7 +87,6 @@ impl DB {
&track.name,
&track.timestamp,
]).map(|_| ())?;
- f(track);
}
Ok(())
}
diff --git a/src/exporter.rs b/src/exporter.rs
deleted file mode 100644
index 29347f9..0000000
--- a/src/exporter.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use db;
-use lastfm;
-
-pub struct Exporter<'d, 'l> {
- db: &'d db::DB,
- lastfm: &'l lastfm::LastFMClient,
-}
-
-impl<'d, 'l> Exporter<'d, 'l> {
- pub fn new(
- db: &'d db::DB,
- lastfm: &'l lastfm::LastFMClient
- ) -> Exporter<'d, 'l> {
- Exporter {
- db,
- lastfm,
- }
- }
-
- pub fn tracks_to_sync(&self) -> failure::Fallible<u64> {
- let ts = self.db.most_recent_timestamp()?;
- Ok(self.lastfm.track_count(ts.map(|x| x + 1))?)
- }
-
- pub fn sync<F: FnMut(lastfm::Track)>(
- &self,
- track_cb: F,
- ) -> failure::Fallible<()> {
- let ts = self.db.most_recent_timestamp()?;
- self.db.insert_tracks(
- self.lastfm.tracks(ts.map(|x| x + 1)),
- track_cb
- )?;
-
- Ok(())
- }
-}
diff --git a/src/main.rs b/src/main.rs
index dc307f6..2518e55 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -13,7 +13,6 @@ extern crate serde_derive;
mod cli;
mod cmd;
-mod exporter;
mod lastfm;
mod paths;
mod db;