public Task AddPackagesAsync(IEnumerable <PackageInput> packageInputs) { var byId = SleetUtility.GetPackageSetsById(packageInputs, e => e.Identity.Id); var tasks = new List <Func <Task> >(); // Create page details pages and index pages in parallel. tasks.AddRange(byId.Select(e => new Func <Task>(() => CreatePackageIndexAsync(e.Key, e.Value)))); tasks.AddRange(packageInputs.Select(e => new Func <Task>(() => CreatePackagePageAsync(e)))); return(TaskUtils.RunAsync(tasks)); }
public Task RemovePackagesAsync(IEnumerable <PackageIdentity> packagesToDelete) { var byId = SleetUtility.GetPackageSetsById(packagesToDelete, e => e.Id); var tasks = new List <Func <Task> >(); foreach (var pair in byId) { var packageId = pair.Key; var versions = new HashSet <NuGetVersion>(pair.Value.Select(e => e.Version)); tasks.Add(new Func <Task>(() => RemovePackagesFromIndexAsync(packageId, versions))); } return(TaskUtils.RunAsync(tasks)); }