44using System ;
55using System . Collections . Generic ;
66using System . ComponentModel . Design ;
7+ using System . Data . SqlClient ;
78using System . Diagnostics . Tracing ;
89using System . Linq ;
910using System . Threading . Tasks ;
1213using Microsoft . WindowsAzure . Storage . Blob ;
1314using Newtonsoft . Json . Linq ;
1415using NuGet . Jobs ;
15- using NuGet . Services . KeyVault ;
16- using NuGet . Services . Sql ;
1716
1817namespace ArchivePackages
1918{
@@ -53,22 +52,20 @@ public class Job : JobBase
5352 /// Blob containing the cursor data. Cursor data comprises of cursorDateTime
5453 /// </summary>
5554 public string CursorBlobName { get ; set ; }
56-
57- private ISqlConnectionFactory _packageDbConnectionFactory ;
5855
5956 protected CloudBlobContainer SourceContainer { get ; private set ; }
6057
6158 protected CloudBlobContainer PrimaryDestinationContainer { get ; private set ; }
6259
6360 protected CloudBlobContainer SecondaryDestinationContainer { get ; private set ; }
6461
62+ private SqlConnectionStringBuilder PackageDatabase { get ; set ; }
63+
6564 public Job ( ) : base ( JobEventSource . Log ) { }
6665
6766 public override void Init ( IServiceContainer serviceContainer , IDictionary < string , string > jobArgsDictionary )
6867 {
69- var secretInjector = ( ISecretInjector ) serviceContainer . GetService ( typeof ( ISecretInjector ) ) ;
70- var packageDbConnectionString = JobConfigurationManager . GetArgument ( jobArgsDictionary , JobArgumentNames . PackageDatabase ) ;
71- _packageDbConnectionFactory = new AzureSqlConnectionFactory ( packageDbConnectionString , secretInjector ) ;
68+ PackageDatabase = RegisterDatabase ( serviceContainer , jobArgsDictionary , JobArgumentNames . PackageDatabase ) ;
7269
7370 Source = CloudStorageAccount . Parse (
7471 JobConfigurationManager . GetArgument ( jobArgsDictionary , JobArgumentNames . Source ) ) ;
@@ -92,13 +89,18 @@ public override void Init(IServiceContainer serviceContainer, IDictionary<string
9289
9390 public override async Task Run ( )
9491 {
95- JobEventSourceLog . PreparingToArchive ( Source . Credentials . AccountName , SourceContainer . Name , PrimaryDestination . Credentials . AccountName , PrimaryDestinationContainer . Name , _packageDbConnectionFactory . DataSource , _packageDbConnectionFactory . InitialCatalog ) ;
92+ JobEventSourceLog . PreparingToArchive (
93+ Source . Credentials . AccountName , SourceContainer . Name ,
94+ PrimaryDestination . Credentials . AccountName , PrimaryDestinationContainer . Name ,
95+ PackageDatabase . DataSource , PackageDatabase . InitialCatalog ) ;
96+
9697 await Archive ( PrimaryDestinationContainer ) ;
9798
9899 // todo: consider reusing package query for primary and secondary archives
99100 if ( SecondaryDestinationContainer != null )
100101 {
101102 JobEventSourceLog . PreparingToArchive2 ( SecondaryDestination . Credentials . AccountName , SecondaryDestinationContainer . Name ) ;
103+
102104 await Archive ( SecondaryDestinationContainer ) ;
103105 }
104106 }
@@ -124,9 +126,10 @@ private async Task Archive(CloudBlobContainer destinationContainer)
124126
125127 JobEventSourceLog . CursorData ( cursorDateTime . ToString ( DateTimeFormatSpecifier ) ) ;
126128
127- JobEventSourceLog . GatheringPackagesToArchiveFromDb ( _packageDbConnectionFactory . DataSource , _packageDbConnectionFactory . InitialCatalog ) ;
129+ JobEventSourceLog . GatheringPackagesToArchiveFromDb ( PackageDatabase . DataSource , PackageDatabase . InitialCatalog ) ;
130+
128131 List < PackageRef > packages ;
129- using ( var connection = await _packageDbConnectionFactory . CreateAsync ( ) )
132+ using ( var connection = await OpenSqlConnectionAsync ( JobArgumentNames . PackageDatabase ) )
130133 {
131134 packages = ( await connection . QueryAsync < PackageRef > ( @"
132135 SELECT pr.Id, p.NormalizedVersion AS Version, p.Hash, p.LastEdited, p.Published
@@ -135,7 +138,8 @@ FROM Packages p
135138 WHERE Published > @cursorDateTime OR LastEdited > @cursorDateTime" , new { cursorDateTime = cursorDateTime } ) )
136139 . ToList ( ) ;
137140 }
138- JobEventSourceLog . GatheredPackagesToArchiveFromDb ( packages . Count , _packageDbConnectionFactory . DataSource , _packageDbConnectionFactory . InitialCatalog ) ;
141+
142+ JobEventSourceLog . GatheredPackagesToArchiveFromDb ( packages . Count , PackageDatabase . DataSource , PackageDatabase . InitialCatalog ) ;
139143
140144 var archiveSet = packages
141145 . AsParallel ( )
0 commit comments