private bool Migrate_27 ()
{
// One time fixup to MetadataHash now that our unknown metadata is handled properly
string sql_select = @"
SELECT t.TrackID, al.Title, ar.Name, t.Duration,
t.Genre, t.Title, t.TrackNumber, t.Year
FROM CoreTracks AS t
JOIN CoreAlbums AS al ON al.AlbumID=t.AlbumID
JOIN CoreArtists AS ar ON ar.ArtistID=t.ArtistID
WHERE t.Title IS NULL OR ar.Name IS NULL OR al.Title IS NULL
";
HyenaSqliteCommand sql_update = new HyenaSqliteCommand (@"
UPDATE CoreTracks SET MetadataHash = ? WHERE TrackID = ?
");
StringBuilder sb = new StringBuilder ();
using (var reader = new HyenaDataReader (connection.Query (sql_select))) {
while (reader.Read ()) {
sb.Length = 0;
sb.Append (reader.Get<string> (1));
sb.Append (reader.Get<string> (2));
sb.Append ((int)reader.Get<TimeSpan> (3).TotalSeconds);
sb.Append (reader.Get<string> (4));
sb.Append (reader.Get<string> (5));
sb.Append (reader.Get<int> (6));
sb.Append (reader.Get<int> (7));
string hash = Hyena.CryptoUtil.Md5Encode (sb.ToString (), System.Text.Encoding.UTF8);
connection.Execute (sql_update, hash, reader.Get<int> (0));
}
}
return true;
}