summaryrefslogtreecommitdiffstats
path: root/src/db.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2018-11-06 23:26:02 -0500
committerJesse Luehrs <doy@tozt.net>2018-11-06 23:26:02 -0500
commit3f4a6ec11e55a1d5634ba24e2dfd32d9e1d70d65 (patch)
tree52c83d5495b734890ff0f6312273704311e45011 /src/db.rs
parenta47cdb90b8bfb91bccb7ea7d36a54115d429605d (diff)
downloadlastfm-query-3f4a6ec11e55a1d5634ba24e2dfd32d9e1d70d65.tar.gz
lastfm-query-3f4a6ec11e55a1d5634ba24e2dfd32d9e1d70d65.zip
make db syncing work
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(())
+ }
}