diff options
author | Jesse Luehrs <doy@tozt.net> | 2018-11-06 23:26:02 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2018-11-06 23:26:02 -0500 |
commit | 3f4a6ec11e55a1d5634ba24e2dfd32d9e1d70d65 (patch) | |
tree | 52c83d5495b734890ff0f6312273704311e45011 /src/db.rs | |
parent | a47cdb90b8bfb91bccb7ea7d36a54115d429605d (diff) | |
download | lastfm-query-3f4a6ec11e55a1d5634ba24e2dfd32d9e1d70d65.tar.gz lastfm-query-3f4a6ec11e55a1d5634ba24e2dfd32d9e1d70d65.zip |
make db syncing work
Diffstat (limited to 'src/db.rs')
-rw-r--r-- | src/db.rs | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -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(()) + } } |