public CoverArtJob (DateTime lastScan) : base (Catalog.GetString ("Downloading Cover Art"))
{
last_scan = lastScan;
// Since we do last_scan - retry_every, avoid out-of-range error by ensuring
// the last_scan date isn't already MinValue
if (last_scan == DateTime.MinValue) {
last_scan = DateTime.Now - TimeSpan.FromDays (365*50);
}
CountCommand = new HyenaSqliteCommand (@"
SELECT count(DISTINCT CoreTracks.AlbumID)
FROM CoreTracks, CoreArtists, CoreAlbums
WHERE
CoreTracks.PrimarySourceID = ? AND
CoreTracks.DateUpdatedStamp > ? AND
CoreTracks.AlbumID = CoreAlbums.AlbumID AND
CoreAlbums.ArtistID = CoreArtists.ArtistID AND
CoreTracks.AlbumID NOT IN (
SELECT AlbumID FROM CoverArtDownloads WHERE
LastAttempt > ? OR Downloaded = 1)",
ServiceManager.SourceManager.MusicLibrary.DbId, last_scan, last_scan - retry_every
);
SelectCommand = new HyenaSqliteCommand (@"
SELECT DISTINCT CoreAlbums.AlbumID, CoreAlbums.Title, CoreArtists.Name, CoreTracks.Uri, CoreTracks.TrackID
FROM CoreTracks, CoreArtists, CoreAlbums
WHERE
CoreTracks.PrimarySourceID = ? AND
CoreTracks.DateUpdatedStamp > ? AND
CoreTracks.AlbumID = CoreAlbums.AlbumID AND
CoreAlbums.ArtistID = CoreArtists.ArtistID AND
CoreTracks.AlbumID NOT IN (
SELECT AlbumID FROM CoverArtDownloads WHERE
LastAttempt > ? OR Downloaded = 1)
GROUP BY CoreTracks.AlbumID ORDER BY CoreTracks.DateUpdatedStamp DESC LIMIT ?",
ServiceManager.SourceManager.MusicLibrary.DbId, last_scan, last_scan - retry_every, 1
);
SetResources (Resource.Database);
PriorityHints = PriorityHints.LongRunning;
IsBackground = true;
CanCancel = true;
DelayShow = true;
}