Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit 057ee62

Browse files
author
Christy Henriksson
authored
Update Stats.CreateAzureCdnWarehouseReports to use ISqlConnectionFactory (#425)
1 parent f1e4630 commit 057ee62

9 files changed

Lines changed: 153 additions & 210 deletions

src/Stats.CreateAzureCdnWarehouseReports/App.config

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,6 @@
3737
<assemblyIdentity name="Microsoft.Azure.KeyVault" publicKeyToken="31bf3856ad364e35" culture="neutral" />
3838
<bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
3939
</dependentAssembly>
40-
<dependentAssembly>
41-
<assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform" publicKeyToken="31bf3856ad364e35" culture="neutral" />
42-
<bindingRedirect oldVersion="0.0.0.0-3.13.4.878" newVersion="3.13.4.878" />
43-
</dependentAssembly>
44-
<dependentAssembly>
45-
<assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
46-
<bindingRedirect oldVersion="0.0.0.0-3.13.4.878" newVersion="3.13.4.878" />
47-
</dependentAssembly>
48-
<dependentAssembly>
49-
<assemblyIdentity name="NuGet.Services.KeyVault" publicKeyToken="31bf3856ad364e35" culture="neutral" />
50-
<bindingRedirect oldVersion="0.0.0.0-2.2.3.0" newVersion="2.2.3.0" />
51-
</dependentAssembly>
5240
</assemblyBinding>
5341
</runtime>
5442
</configuration>

src/Stats.CreateAzureCdnWarehouseReports/DownloadCountReport.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
using System.Collections.Generic;
66
using System.Data;
77
using System.Data.SqlClient;
8-
using System.Diagnostics;
98
using System.Linq;
109
using System.Threading.Tasks;
1110
using Microsoft.Extensions.Logging;
1211
using Newtonsoft.Json;
1312
using Newtonsoft.Json.Linq;
14-
using NuGet;
13+
using NuGet.Services.Sql;
1514
using NuGet.Versioning;
1615

1716
namespace Stats.CreateAzureCdnWarehouseReports
@@ -23,17 +22,23 @@ public class DownloadCountReport
2322
private readonly TimeSpan _defaultCommandTimeout = TimeSpan.FromMinutes(30);
2423
internal const string ReportName = "downloads.v1.json";
2524

26-
public DownloadCountReport(ILogger<DownloadCountReport> logger, IEnumerable<StorageContainerTarget> targets, SqlConnectionStringBuilder statisticsDatabase, SqlConnectionStringBuilder galleryDatabase)
27-
: base(logger, targets, statisticsDatabase, galleryDatabase)
25+
public DownloadCountReport(
26+
ILogger<DownloadCountReport> logger,
27+
IEnumerable<StorageContainerTarget> targets,
28+
ISqlConnectionFactory statisticsDbConnectionFactory,
29+
ISqlConnectionFactory galleryDbConnectionFactory)
30+
: base(logger, targets, statisticsDbConnectionFactory, galleryDbConnectionFactory)
2831
{
2932
}
3033

3134
public async Task Run()
3235
{
3336
// Gather download count data from statistics warehouse
3437
IReadOnlyCollection<DownloadCountData> downloadData;
35-
_logger.LogInformation("Gathering Download Counts from {DataSource}/{InitialCatalog}...", StatisticsDatabase.DataSource, StatisticsDatabase.InitialCatalog);
36-
using (var connection = await StatisticsDatabase.ConnectTo())
38+
_logger.LogInformation("Gathering Download Counts from {DataSource}/{InitialCatalog}...",
39+
StatisticsDbConnectionFactory.DataSource, StatisticsDbConnectionFactory.InitialCatalog);
40+
41+
using (var connection = await StatisticsDbConnectionFactory.CreateAsync())
3742
using (var transaction = connection.BeginTransaction(IsolationLevel.Snapshot))
3843
{
3944
downloadData = (await connection.QueryWithRetryAsync<DownloadCountData>(

src/Stats.CreateAzureCdnWarehouseReports/DownloadsPerToolVersionReport.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
using System.Collections.Generic;
66
using System.Data;
77
using System.Data.SqlClient;
8-
using System.Diagnostics;
98
using System.Linq;
109
using System.Threading.Tasks;
1110
using Microsoft.Extensions.Logging;
1211
using Microsoft.WindowsAzure.Storage;
1312
using Newtonsoft.Json;
1413
using Newtonsoft.Json.Linq;
14+
using NuGet.Services.Sql;
1515

1616
namespace Stats.CreateAzureCdnWarehouseReports
1717
{
@@ -22,17 +22,25 @@ public class DownloadsPerToolVersionReport
2222
private readonly TimeSpan _defaultCommandTimeout = TimeSpan.FromMinutes(30);
2323
internal const string ReportName = "tools.v1.json";
2424

25-
public DownloadsPerToolVersionReport(ILogger<DownloadsPerToolVersionReport> logger, CloudStorageAccount cloudStorageAccount, string statisticsContainerName, SqlConnectionStringBuilder statisticsDatabase, SqlConnectionStringBuilder galleryDatabase)
26-
: base(logger, new[] { new StorageContainerTarget(cloudStorageAccount, statisticsContainerName) }, statisticsDatabase, galleryDatabase)
25+
public DownloadsPerToolVersionReport(
26+
ILogger<DownloadsPerToolVersionReport> logger,
27+
CloudStorageAccount cloudStorageAccount,
28+
string statisticsContainerName,
29+
ISqlConnectionFactory statisticsDbConnectionFactory,
30+
ISqlConnectionFactory galleryDbConnectionFactory)
31+
: base(logger, new[] { new StorageContainerTarget(cloudStorageAccount, statisticsContainerName) },
32+
statisticsDbConnectionFactory, galleryDbConnectionFactory)
2733
{
2834
}
2935

3036
public async Task Run()
3137
{
3238
// Gather download count data from statistics warehouse
3339
IReadOnlyCollection<ToolDownloadCountData> data;
34-
_logger.LogInformation("Gathering Tools Download Counts from {DataSource}/{InitialCatalog}...", StatisticsDatabase.DataSource, StatisticsDatabase.InitialCatalog);
35-
using (var connection = await StatisticsDatabase.ConnectTo())
40+
_logger.LogInformation("Gathering Tools Download Counts from {DataSource}/{InitialCatalog}...",
41+
StatisticsDbConnectionFactory.DataSource, StatisticsDbConnectionFactory.InitialCatalog);
42+
43+
using (var connection = await StatisticsDbConnectionFactory.CreateAsync())
3644
using (var transaction = connection.BeginTransaction(IsolationLevel.Snapshot))
3745
{
3846
data = (await connection.QueryWithRetryAsync<ToolDownloadCountData>(

src/Stats.CreateAzureCdnWarehouseReports/GalleryTotalsReport.cs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
using System;
55
using System.Data;
66
using System.Data.SqlClient;
7-
using System.Diagnostics;
87
using System.Linq;
98
using System.Threading.Tasks;
109
using Microsoft.Extensions.Logging;
1110
using Microsoft.WindowsAzure.Storage;
1211
using Newtonsoft.Json;
12+
using NuGet.Services.Sql;
1313

1414
namespace Stats.CreateAzureCdnWarehouseReports
1515
{
@@ -23,28 +23,39 @@ public class GalleryTotalsReport
2323
(SELECT COUNT([Key]) FROM Packages WITH (NOLOCK) WHERE Listed = 1 AND Deleted = 0) AS TotalPackages";
2424
internal const string ReportName = "stats-totals.json";
2525

26-
public GalleryTotalsReport(ILogger<GalleryTotalsReport> logger, CloudStorageAccount cloudStorageAccount, string statisticsContainerName, SqlConnectionStringBuilder statisticsDatabase, SqlConnectionStringBuilder galleryDatabase)
27-
: base(logger, new[] { new StorageContainerTarget(cloudStorageAccount, statisticsContainerName) }, statisticsDatabase, galleryDatabase)
26+
public GalleryTotalsReport(
27+
ILogger<GalleryTotalsReport> logger,
28+
CloudStorageAccount cloudStorageAccount,
29+
string statisticsContainerName,
30+
ISqlConnectionFactory statisticsDbConnectionFactory,
31+
ISqlConnectionFactory galleryDbConnectionFactory)
32+
: base(logger, new[] { new StorageContainerTarget(cloudStorageAccount, statisticsContainerName) },
33+
statisticsDbConnectionFactory, galleryDbConnectionFactory)
2834
{
2935
}
3036

3137
public async Task Run()
3238
{
3339
// gather package numbers from gallery database
3440
GalleryTotalsData totalsData;
35-
_logger.LogInformation("Gathering Gallery Totals from {GalleryDataSource}/{GalleryInitialCatalog}...", GalleryDatabase.DataSource, GalleryDatabase.InitialCatalog);
36-
using (var connection = await GalleryDatabase.ConnectTo())
41+
_logger.LogInformation("Gathering Gallery Totals from {GalleryDataSource}/{GalleryInitialCatalog}...",
42+
GalleryDbConnectionFactory.DataSource, GalleryDbConnectionFactory.InitialCatalog);
43+
44+
using (var connection = await GalleryDbConnectionFactory.CreateAsync())
3745
using (var transaction = connection.BeginTransaction(IsolationLevel.Snapshot))
3846
{
3947
totalsData = (await connection.QueryWithRetryAsync<GalleryTotalsData>(
4048
GalleryQuery, commandType: CommandType.Text, transaction: transaction)).First();
4149
}
50+
4251
_logger.LogInformation("Total packages: {TotalPackagesCount}", totalsData.TotalPackages);
4352
_logger.LogInformation("Unique packages: {UniquePackagesCount}", totalsData.UniquePackages);
4453

4554
// gather download count data from statistics warehouse
46-
_logger.LogInformation("Gathering Gallery Totals from {StatisticsDataSource}/{StatisticsInitialCatalog}...", StatisticsDatabase.DataSource, StatisticsDatabase.InitialCatalog);
47-
using (var connection = await StatisticsDatabase.ConnectTo())
55+
_logger.LogInformation("Gathering Gallery Totals from {StatisticsDataSource}/{StatisticsInitialCatalog}...",
56+
StatisticsDbConnectionFactory.DataSource, StatisticsDbConnectionFactory.InitialCatalog);
57+
58+
using (var connection = await StatisticsDbConnectionFactory.CreateAsync())
4859
using (var transaction = connection.BeginTransaction(IsolationLevel.Snapshot))
4960
{
5061
totalsData.Downloads = (await connection.ExecuteScalarWithRetryAsync<long>(
@@ -53,6 +64,7 @@ public async Task Run()
5364
commandTimeout: TimeSpan.FromMinutes(5),
5465
transaction: transaction));
5566
}
67+
5668
_logger.LogInformation("Total downloads: {TotalDownloadsCount}", totalsData.Downloads);
5769

5870
// write to blob

0 commit comments

Comments
 (0)