diff --git a/src/BaGet.Azure/Configuration/AzureTableOptions.cs b/src/BaGet.Azure/Configuration/AzureTableOptions.cs index 373eb9b3e..a6d3ea885 100644 --- a/src/BaGet.Azure/Configuration/AzureTableOptions.cs +++ b/src/BaGet.Azure/Configuration/AzureTableOptions.cs @@ -6,5 +6,7 @@ public class AzureTableOptions { [Required] public string ConnectionString { get; set; } + + [Required] public string TableName { get; set; } = "Packages"; } } diff --git a/src/BaGet.Azure/Table/TablePackageDatabase.cs b/src/BaGet.Azure/Table/TablePackageDatabase.cs index 83174df4c..3f029883c 100644 --- a/src/BaGet.Azure/Table/TablePackageDatabase.cs +++ b/src/BaGet.Azure/Table/TablePackageDatabase.cs @@ -6,6 +6,7 @@ using BaGet.Core; using Microsoft.Azure.Cosmos.Table; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using NuGet.Versioning; namespace BaGet.Azure @@ -15,9 +16,9 @@ namespace BaGet.Azure /// </summary> public class TablePackageDatabase : IPackageDatabase { - private const string TableName = "Packages"; private const int MaxPreconditionFailures = 5; + private readonly string _tableName; private readonly TableOperationBuilder _operationBuilder; private readonly CloudTable _table; private readonly ILogger<TablePackageDatabase> _logger; @@ -25,10 +26,12 @@ public class TablePackageDatabase : IPackageDatabase public TablePackageDatabase( TableOperationBuilder operationBuilder, CloudTableClient client, - ILogger<TablePackageDatabase> logger) + ILogger<TablePackageDatabase> logger, + IOptions<AzureTableOptions> options) { _operationBuilder = operationBuilder ?? throw new ArgumentNullException(nameof(operationBuilder)); - _table = client?.GetTableReference(TableName) ?? throw new ArgumentNullException(nameof(client)); + _tableName = options.Value.TableName; + _table = client?.GetTableReference(_tableName) ?? throw new ArgumentNullException(nameof(client)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } diff --git a/src/BaGet.Azure/Table/TableSearchService.cs b/src/BaGet.Azure/Table/TableSearchService.cs index c5beb10a5..bb65e9833 100644 --- a/src/BaGet.Azure/Table/TableSearchService.cs +++ b/src/BaGet.Azure/Table/TableSearchService.cs @@ -6,21 +6,23 @@ using BaGet.Core; using BaGet.Protocol.Models; using Microsoft.Azure.Cosmos.Table; +using Microsoft.Extensions.Options; namespace BaGet.Azure { public class TableSearchService : ISearchService { - private const string TableName = "Packages"; - + private readonly string _tableName; private readonly CloudTable _table; private readonly ISearchResponseBuilder _responseBuilder; public TableSearchService( CloudTableClient client, - ISearchResponseBuilder responseBuilder) + ISearchResponseBuilder responseBuilder, + IOptions<AzureTableOptions> options) { - _table = client?.GetTableReference(TableName) ?? throw new ArgumentNullException(nameof(client)); + _tableName = options.Value.TableName; + _table = client?.GetTableReference(_tableName) ?? throw new ArgumentNullException(nameof(client)); _responseBuilder = responseBuilder ?? throw new ArgumentNullException(nameof(responseBuilder)); }