private static DownloadBatch GetDownloadRecords()

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);
            }
        }