public Task AddTrack(PlayableBase track) { track.Guid = Guid.NewGuid(); Collection.Add(track.Guid, track); Tracks.Add(track); _imageProvider.AddImage(track.Cover); using ( var command = new SQLiteCommand( "INSERT INTO `Tracks` (Title, ArtistGuid, AlbumGuid, Guid, LastTimePlayed, MusicBrainzId, Duration, Cover, XmlData) VALUES (@title, @artistGuid, @albumGuid, @guid, @lastTimePlayed, @musicBrainzId, @duration, @cover, @xmlData)", _connection)) { command.Parameters.AddWithValue("@title", track.Title); command.Parameters.AddGuid("@artistGuid", track.Artist.Guid); command.Parameters.AddGuid("@albumGuid", track.Album?.Guid); command.Parameters.AddGuid("@guid", track.Guid); command.Parameters.AddWithValue("@lastTimePlayed", track.LastTimePlayed.ToString("yyyy-MM-dd HH:mm:ss")); command.Parameters.AddWithValue("@musicBrainzId", track.MusicBrainzId); command.Parameters.AddWithValue("@duration", XmlConvert.ToString(track.Duration)); command.Parameters.AddGuid("@cover", track.Cover?.Guid); using (var stringWriter = new StringWriter()) { _serializer.Serialize(stringWriter, track); command.Parameters.AddWithValue("@xmlData", stringWriter.ToString()); } return command.ExecuteNonQueryAsync(); } }
private async void Playlist_TrackAdded(object sender, PlayableBase e) { using ( var command = new SQLiteCommand( "INSERT INTO `PlaylistTracks` (PlaylistId, TrackId) VALUES (@playlistId, @trackId)", _connection) ) { command.Parameters.AddGuid("@playlistId", ((UserPlaylist) sender).Id); command.Parameters.AddGuid("@trackId", e.Guid); await command.ExecuteNonQueryAsync(); } }
public void AddTrackToQueue(PlayableBase playableBase) { AddTrackToQueue(playableBase, playableBase.Duration); }
public Task UpdateLastTimePlayed(PlayableBase track, DateTime newLastTimePlayed) { track.LastTimePlayed = newLastTimePlayed; using (var command = new SQLiteCommand("UPDATE `Tracks` SET LastTimePlayed=@newLastTimePlayed WHERE Guid=@guid", _connection)) { command.Parameters.AddWithValue("@newLastTimePlayed", newLastTimePlayed.ToString("yyyy-MM-dd HH:mm:ss")); command.Parameters.AddGuid("@guid", track.Guid); return command.ExecuteNonQueryAsync(); } }
public Task RemoveTrack(PlayableBase track) { Collection.Remove(track.Guid); Tracks.Remove(track); using (var command = new SQLiteCommand("DELETE FROM `Tracks` WHERE Guid=@guid", _connection)) { command.Parameters.AddGuid("@guid", track.Guid); return command.ExecuteNonQueryAsync(); } }
private async void Playlist_TrackRemoved(object sender, PlayableBase e) { using ( var command = new SQLiteCommand( "DELETE FROM `PlaylistTracks` WHERE PlaylistId=@playlistId AND TrackId=@trackId", _connection) ) { command.Parameters.AddGuid("@playlistId", ((UserPlaylist) sender).Id); command.Parameters.AddGuid("@trackId", e.Guid); await command.ExecuteNonQueryAsync(); } }
public void RemoveTrack(PlayableBase playable) { Tracks.Remove(playable); History.Remove(playable); TrackRemoved?.Invoke(this, playable); }
public void AddTrack(PlayableBase playable) { Tracks.Add(playable); TrackAdded?.Invoke(this, playable); }