public FileSystemService(ISnowflakeService snowflakeService) { _snowflakeService = snowflakeService; }
public ContentManagerService(IDataService dataService, IFileSystemService fileSystemService, ISnowflakeService snowflakeService, IStorageService storageService) { _dataService = dataService; _fileSystemService = fileSystemService; _snowflakeService = snowflakeService; List <Track> tracks = dataService.Load(Constants.DataStoreNames.Tracks, () => new List <Track>()); HashSet <string> trackFiles = new HashSet <string>(tracks.Select(track => track.Filepath)); HashSet <string> existingFiles = new HashSet <string>(); foreach (TrackFolder folder in storageService.TrackFolders) { foreach (string file in fileSystemService.LoadFiles(folder.Path)) { existingFiles.Add(file); } } foreach (string trackFile in trackFiles) { if (!existingFiles.Contains(trackFile)) { tracks.RemoveAt(tracks.FindIndex(track => track.Filepath == trackFile)); } } foreach (string file in existingFiles) { if (!trackFiles.Contains(file)) { tracks.Add(new Track(snowflakeService.GenerateSnowflake(), file)); } } _trackRepository = tracks.ToDictionary(track => track.Id, track => track); _playlists = _dataService.Load(Constants.DataStoreNames.Playlists, () => new List <Playlist>()); _managedPlaylists = dataService.Load(Constants.DataStoreNames.ManagedPlaylists, () => Enumerable.Empty <Playlist>()) .ToDictionary(playlist => { Enum.TryParse(playlist.Name, out ManagedPlaylist result); return(result); }, playlist => playlist); if (!_managedPlaylists.ContainsKey(ManagedPlaylist.Favorites)) { _managedPlaylists[ManagedPlaylist.Favorites] = new Playlist ( _snowflakeService.GenerateSnowflake(), ManagedPlaylist.Favorites.ToString(), false, 0, TimeSpan.Zero, _trackRepository.Values.Where(track => track.IsFavorite) .Select(track => new PlaylistTrack(0, track)) ); } foreach (Playlist playlist in _playlists) { playlist.Load(_trackRepository); } foreach (Playlist playlist in _managedPlaylists.Values) { playlist.Load(_trackRepository); } }