private static async Task CommitBatch(DateTime cursorTime) { await _context.SaveChangesAsync(); await _cursor.WriteCursor(cursorTime); Console.Write("+"); }
public static async Task Run(string connectionString, Uri serviceDiscoveryUri, DateTime lastCreateTime) { try { await Initialize(connectionString, serviceDiscoveryUri); // Get start time from cursor. var startTime = _cursor.GetCursorTime(); Log.LogMessage($"Start time: {startTime.ToString("u")}"); var packagesRepository = new EntityRepository <Package>(_context); var allPackages = packagesRepository.GetAll().Where( p => p.Created <lastCreateTime && p.Created> startTime && (p.PackageStatusKey == PackageStatus.Available || p.PackageStatusKey == PackageStatus.Validating)); allPackages = allPackages.Include(p => p.PackageRegistration).OrderBy(p => p.Key); int counter = 0; foreach (var package in allPackages) { var packageId = package.PackageRegistration.Id; var version = package.NormalizedVersion; try { var repositoryMetadata = await GetRepositoryMetadata(packageId, version); if (!string.IsNullOrEmpty(repositoryMetadata.Branch) || !string.IsNullOrEmpty(repositoryMetadata.Commit) || !string.IsNullOrEmpty(repositoryMetadata.Type) || !string.IsNullOrEmpty(repositoryMetadata.Url)) { Log.LogMessage($"Found repo information for package {packageId} {version}"); await WriteMetadata(new RepositoryMetadataLog(repositoryMetadata, package.Created, packageId, version)); } else { Console.Write("."); } } catch (Exception e) { await _log.LogError(package.PackageRegistration.Id, package.NormalizedVersion, e); } counter++; if (counter >= SaveCounterAfter) { await _cursor.WriteCursor(package.Created); counter = 0; } } } finally { Dispose(); } Console.Read(); }