blob: 29347f9c45475a7d5b267732ecb94da62218ae15 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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(())
}
}
|