diff --git a/extensions/Worker.Extensions.CosmosDB/release_notes.md b/extensions/Worker.Extensions.CosmosDB/release_notes.md index 921fdcf34..93fe18e59 100644 --- a/extensions/Worker.Extensions.CosmosDB/release_notes.md +++ b/extensions/Worker.Extensions.CosmosDB/release_notes.md @@ -6,4 +6,4 @@ ### Microsoft.Azure.Functions.Worker.Extensions.CosmosDB -- +- Updated CosmosDBInputAttribute constructors to allow empty values for databaseName and containerName diff --git a/extensions/Worker.Extensions.CosmosDB/src/CosmosDBInputAttribute.cs b/extensions/Worker.Extensions.CosmosDB/src/CosmosDBInputAttribute.cs index bc6aca573..2616085e0 100644 --- a/extensions/Worker.Extensions.CosmosDB/src/CosmosDBInputAttribute.cs +++ b/extensions/Worker.Extensions.CosmosDB/src/CosmosDBInputAttribute.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. using System.Collections.Generic; +using System.Text.Json.Serialization; using Microsoft.Azure.Functions.Worker.Converters; using Microsoft.Azure.Functions.Worker.Extensions.Abstractions; @@ -13,9 +14,32 @@ public sealed class CosmosDBInputAttribute : InputBindingAttribute { /// /// Constructs a new instance. + /// Use this constructor when binding to a CosmosClient. + /// + public CosmosDBInputAttribute() + { + DatabaseName = string.Empty; + ContainerName = string.Empty; + } + + /// + /// Constructs a new instance with the specified database name. + /// Use this constructor when binding to a Database. + /// + /// The CosmosDB database name. + public CosmosDBInputAttribute(string databaseName) + { + DatabaseName = databaseName; + ContainerName = string.Empty; + } + + /// + /// Constructs a new instance with the specified database and container names. + /// Use this constructor when binding to a Container or a POCO. /// /// The CosmosDB database name. /// The CosmosDB container name. + [JsonConstructor] public CosmosDBInputAttribute(string databaseName, string containerName) { DatabaseName = databaseName; diff --git a/extensions/Worker.Extensions.CosmosDB/src/Properties/AssemblyInfo.cs b/extensions/Worker.Extensions.CosmosDB/src/Properties/AssemblyInfo.cs index fce96c7ce..f76b45709 100644 --- a/extensions/Worker.Extensions.CosmosDB/src/Properties/AssemblyInfo.cs +++ b/extensions/Worker.Extensions.CosmosDB/src/Properties/AssemblyInfo.cs @@ -4,6 +4,6 @@ using System.Runtime.CompilerServices; using Microsoft.Azure.Functions.Worker.Extensions.Abstractions; -[assembly: ExtensionInformation("Microsoft.Azure.WebJobs.Extensions.CosmosDB", "4.2.0")] +[assembly: ExtensionInformation("Microsoft.Azure.WebJobs.Extensions.CosmosDB", "4.3.0")] [assembly: InternalsVisibleTo("Microsoft.Azure.Functions.WorkerExtension.Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001005148be37ac1d9f58bd40a2e472c9d380d635b6048278f7d47480b08c928858f0f7fe17a6e4ce98da0e7a7f0b8c308aecd9e9b02d7e9680a5b5b75ac7773cec096fbbc64aebd429e77cb5f89a569a79b28e9c76426783f624b6b70327eb37341eb498a2c3918af97c4860db6cdca4732787150841e395a29cfacb959c1fd971c1")] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] \ No newline at end of file +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/extensions/Worker.Extensions.CosmosDB/src/Worker.Extensions.CosmosDB.csproj b/extensions/Worker.Extensions.CosmosDB/src/Worker.Extensions.CosmosDB.csproj index 5c4c751af..99b231f89 100644 --- a/extensions/Worker.Extensions.CosmosDB/src/Worker.Extensions.CosmosDB.csproj +++ b/extensions/Worker.Extensions.CosmosDB/src/Worker.Extensions.CosmosDB.csproj @@ -6,8 +6,8 @@ Azure Cosmos DB extensions for .NET isolated functions - 4.2.0 - -preview2 + 4.3.1 + -preview1 false @@ -30,4 +30,4 @@ - \ No newline at end of file + diff --git a/samples/WorkerBindingSamples/Cosmos/CosmosInputBindingFunctions.cs b/samples/WorkerBindingSamples/Cosmos/CosmosInputBindingFunctions.cs index 437c08bc7..151eda81f 100644 --- a/samples/WorkerBindingSamples/Cosmos/CosmosInputBindingFunctions.cs +++ b/samples/WorkerBindingSamples/Cosmos/CosmosInputBindingFunctions.cs @@ -21,7 +21,7 @@ public CosmosInputBindingFunctions(ILogger logger) [Function(nameof(DocsByUsingCosmosClient))] public async Task DocsByUsingCosmosClient( [HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req, - [CosmosDBInput("", "", Connection = "CosmosDBConnection")] CosmosClient client) + [CosmosDBInput(Connection = "CosmosDBConnection")] CosmosClient client) { _logger.LogInformation("C# HTTP trigger function processed a request."); @@ -43,7 +43,7 @@ public async Task DocsByUsingCosmosClient( [Function(nameof(DocsByUsingDatabaseClient))] public async Task DocsByUsingDatabaseClient( [HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req, - [CosmosDBInput("ToDoItems", "", Connection = "CosmosDBConnection")] Database database) + [CosmosDBInput("ToDoItems", Connection = "CosmosDBConnection")] Database database) { _logger.LogInformation("C# HTTP trigger function processed a request."); diff --git a/test/SdkE2ETests/Contents/WorkerBindingSamplesOutput/functions.metadata b/test/SdkE2ETests/Contents/WorkerBindingSamplesOutput/functions.metadata index eddb53b95..21cb5cdf4 100644 --- a/test/SdkE2ETests/Contents/WorkerBindingSamplesOutput/functions.metadata +++ b/test/SdkE2ETests/Contents/WorkerBindingSamplesOutput/functions.metadata @@ -634,8 +634,6 @@ "name": "client", "direction": "In", "type": "cosmosDB", - "databaseName": "", - "containerName": "", "connection": "CosmosDBConnection", "properties": { "supportsDeferredBinding": "True" @@ -673,7 +671,6 @@ "direction": "In", "type": "cosmosDB", "databaseName": "ToDoItems", - "containerName": "", "connection": "CosmosDBConnection", "properties": { "supportsDeferredBinding": "True" diff --git a/test/SdkE2ETests/PublishTests.cs b/test/SdkE2ETests/PublishTests.cs index 58c37e015..800c8f6a7 100644 --- a/test/SdkE2ETests/PublishTests.cs +++ b/test/SdkE2ETests/PublishTests.cs @@ -121,7 +121,7 @@ private async Task RunPublishTestForSdkTypeBindings(string outputDir, string add extensions = new[] { new Extension("CosmosDB", - "Microsoft.Azure.WebJobs.Extensions.CosmosDB.CosmosDBWebJobsStartup, Microsoft.Azure.WebJobs.Extensions.CosmosDB, Version=4.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", + "Microsoft.Azure.WebJobs.Extensions.CosmosDB.CosmosDBWebJobsStartup, Microsoft.Azure.WebJobs.Extensions.CosmosDB, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", @"./.azurefunctions/Microsoft.Azure.WebJobs.Extensions.CosmosDB.dll"), new Extension("Startup", "Microsoft.Azure.WebJobs.Extensions.FunctionMetadataLoader.Startup, Microsoft.Azure.WebJobs.Extensions.FunctionMetadataLoader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=551316b6919f366c",