summaryrefslogtreecommitdiffstats
path: root/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.rs')
-rw-r--r--src/db.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/db.rs b/src/db.rs
index 450202f..b291e86 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -1,4 +1,5 @@
use error::Result;
+use lastfm;
const SCHEMA: &'static str = "
CREATE TABLE `tracks` (
@@ -56,4 +57,23 @@ impl DB {
}
})?)
}
+
+ pub fn insert_tracks<F: FnMut(lastfm::Track)>(
+ &self,
+ tracks: impl Iterator<Item=lastfm::Track>,
+ mut f: F
+ ) -> Result<()> {
+ let mut sth = self.conn.prepare("INSERT INTO tracks VALUES (?, ?, ?, ?)")?;
+ for track in tracks {
+ sth.execute(
+ &[
+ &track.artist as &rusqlite::types::ToSql,
+ &track.album,
+ &track.name,
+ &track.timestamp,
+ ]).map(|_| ())?;
+ f(track);
+ }
+ Ok(())
+ }
}