private void FileWatcherRenamed(object sender, RenamedEventArgs e) { Trace.WriteLine(Trace.kKinsky, "PlaylistWatcher.FileSystemWatcherRenamed: e.OldFullPath=" + e.OldFullPath + ", e.FullPath=" + e.FullPath); // a file has been renamed - rename the corresponding entry bool playlistRenamed = false; lock (iLock) { if (iPlaylists.ContainsKey(e.OldFullPath)) { iPlaylists.Remove(e.OldFullPath); FileInfo i = new FileInfo(e.FullPath); iPlaylists.Add(i.FullName, i.Name.Replace(i.Extension, "")); playlistRenamed = true; } } if (playlistRenamed) { PlaylistRemoved evRem = EventPlaylistRemoved; if (evRem != null) { evRem(e.OldFullPath); } PlaylistAdded evAdd = EventPlaylistAdded; if (evAdd != null) { evAdd(e.FullPath); } } }
public void Handle(PlaylistAdded evt) { if (_playlistRepository.Exists(evt.UserId)) { _playlistRepository.Update(evt.UserId); } else { _playlistRepository.Add(evt.UserId, evt.PlaylistId, evt.Name); } }
public Task AddPlaylist(UserPlaylist playlist) { Playlists.Add(playlist); PlaylistAdded?.Invoke(this, playlist); using ( var command = new SQLiteCommand( "INSERT INTO `Playlists` (Name, Guid) VALUES (@name, @guid)", _connection)) { command.Parameters.AddWithValue("@name", playlist.Name); command.Parameters.AddGuid("@guid", playlist.Id); return(command.ExecuteNonQueryAsync()); } }
internal virtual void OnPlaylistAdded(PlaylistEventArgs e) { PlaylistAdded.RaiseEvent(this, e); }
public async Task <Playlist> AddPlaylist(string name, IEnumerable <string> filenames) { if (name == null) { throw new ArgumentNullException("name"); } await _dbContextMutex.WaitAsync(); var existingPlaylist = _dukeboxData.Playlists.FirstOrDefault(a => a.Name.Equals(name, StringComparison.CurrentCulture)); if (existingPlaylist != null) { _dbContextMutex.Release(); logger.WarnFormat("Not adding playlist with name '{0}' as another playlist with the same name already exists in the database", name); return(existingPlaylist); } if (filenames == null) { throw new ArgumentNullException("filenames"); } var stopwatch = Stopwatch.StartNew(); var newPlaylist = new Playlist() { Name = name, FilenamesCsv = string.Join(",", filenames) }; try { _dukeboxData.Playlists.Add(newPlaylist); await _dukeboxData.SaveChangesAsync(); // Invalidate playlist cache. _allPlaylistsCache = null; stopwatch.Stop(); logger.InfoFormat("Added playlist to library: {0}", newPlaylist.Name); logger.DebugFormat("Adding playlist to library took {0}ms. Playlist id: {1}", stopwatch.ElapsedMilliseconds, newPlaylist.Id); PlaylistAdded?.Invoke(this.PlaylistAdded, EventArgs.Empty); return(newPlaylist); } catch (DbEntityValidationException ex) { logger.ErrorFormat("Error adding playlist '{0}' to database due to entity validation errors", newPlaylist.Name); _dukeboxData.LogEntityValidationException(ex); } catch (Exception ex) { logger.Error(string.Format("Error adding playlist '{0}' to database", newPlaylist.Name), ex); } finally { _dbContextMutex.Release(); } return(null); }