public Func <CancellationToken, Task <MediaBundle <Album> > > CreateMethod(IMetadataRepository metadataRepository) { return(async cancelToken => { var mediaBundle = await metadataRepository.GetAlbumAsync(UserId, Artists, Name, CollectionId, Populate, cancelToken).ConfigureAwait(false); Album album = null; if (mediaBundle != null) { album = mediaBundle.Media; } if (album != null) { return mediaBundle; } var now = DateTime.UtcNow; var artistMediaBundles = new HashSet <MediaBundle <Artist> >(); foreach (var artist in Artists) { var artistMediaBundle = new MediaBundle <Artist> { Media = artist }; artistMediaBundles.Add(artistMediaBundle); } album = new Album { Artists = artistMediaBundles, Name = Name, CollectionId = CollectionId, DateAdded = now, DateModified = now }; await metadataRepository.InsertOrUpdateAlbumAsync(album, cancelToken).ConfigureAwait(false); mediaBundle = new MediaBundle <Album> { Media = album, Dispositions = new List <Disposition>(), Playback = new List <Playback>() }; return mediaBundle; }); }
public Func <CancellationToken, Task <MediaBundle <Album> > > CreateMethod(IMetadataRepository metadataRepository) { return(cancelToken => metadataRepository.GetAlbumAsync(UserId, Id, Populate, cancelToken)); }