in Source/NuGetGallery.Operations/Tasks/ReplicatePackageStatisticsTask.cs [82:130]
private static DownloadBatch GetDownloadRecords(string connectionString, int originalKey, int top)
{
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = @";
SELECT TOP(@top)
PackageStatistics.[Key] 'OriginalKey',
PackageRegistrations.[Id] 'PackageId',
Packages.[Version] 'PackageVersion',
Packages.[Listed] 'PackageListed',
Packages.[Title] 'PackageTitle',
Packages.[Description] 'PackageDescription',
Packages.[IconUrl] 'PackageIconUrl',
ISNULL(PackageStatistics.[UserAgent], '') 'DownloadUserAgent',
ISNULL(PackageStatistics.[Operation], '') 'DownloadOperation',
PackageStatistics.[Timestamp] 'DownloadTimestamp',
PackageStatistics.[ProjectGuids] 'DownloadProjectTypes',
PackageStatistics.[DependentPackage] 'DownloadDependentPackageId'
FROM PackageStatistics
INNER JOIN Packages ON PackageStatistics.PackageKey = Packages.[Key]
INNER JOIN PackageRegistrations ON PackageRegistrations.[Key] = Packages.PackageRegistrationKey
WHERE PackageStatistics.[Key] > @originalKey
";
SqlCommand command = new SqlCommand(sql, connection);
command.CommandType = CommandType.Text;
command.CommandTimeout = 120;
command.Parameters.Add("@originalKey", SqlDbType.Int);
command.Parameters["@originalKey"].Value = originalKey;
command.Parameters.Add("@top", SqlDbType.Int);
command.Parameters["@top"].Value = top;
SqlDataReader reader = command.ExecuteReader();
return new DownloadBatch(reader);
}
}
catch (Exception e)
{
string msg = string.Format("Exception in GetDownloadRecords (gallery side): {0}", e.Message);
throw new ApplicationException(msg, e);
}
}