From 3cc33cccd3fcef464e615a11474ff3ca79ce5694 Mon Sep 17 00:00:00 2001 From: Maddy <12754347+MaddyDev@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:14:13 -0700 Subject: [PATCH 1/3] Clean csx samples (#812) * sql attribute not needed * simplify the folder structure for csx * add local.settings.json * rename folders in proj file * clean up logs and unused --- docs/SetupGuide_DotnetCSharpScript.md | 23 +++++---------- .../AddProduct/function.json | 0 samples/samples-csx/AddProduct/run.csx | 18 ++++++++++++ .../AddProductParams/function.json | 0 samples/samples-csx/AddProductParams/run.csx | 22 ++++++++++++++ .../AddProductWithDefaultPK/function.json | 0 .../AddProductWithDefaultPK/run.csx | 18 ++++++++++++ .../function.json | 0 .../AddProductWithIdentityColumn/run.csx | 11 ++----- .../function.json | 0 .../run.csx | 11 ++----- .../function.json | 0 .../run.csx | 22 ++++++++++++++ .../AddProductsArray/function.json | 0 samples/samples-csx/AddProductsArray/run.csx | 18 ++++++++++++ .../AddProductsCollector/function.json | 0 .../AddProductsCollector/run.csx | 7 ++--- .../function.json | 0 .../run.csx | 11 ++----- .../GetAndAddProducts/function.json | 0 .../GetAndAddProducts/run.csx | 6 ++-- .../GetProductNamesView/function.json | 0 .../GetProductNamesView/run.csx | 3 +- .../GetProducts/function.json | 0 .../run.csx | 3 +- .../GetProductsAsyncEnumerable/function.json | 0 .../GetProductsAsyncEnumerable/run.csx | 2 +- .../GetProductsNameEmpty/function.json | 0 .../run.csx | 3 +- .../GetProductsNameNull/function.json | 0 .../run.csx | 3 +- .../GetProductsStoredProcedure/function.json | 0 .../run.csx | 3 +- .../function.json | 0 .../run.csx | 16 ++++++++++ .../.vscode/extensions.json | 5 ---- .../run.csx | 17 ----------- .../.vscode/extensions.json | 5 ---- .../OutputBindingSamples/AddProduct/run.csx | 26 ----------------- .../AddProductParams/run.csx | 29 ------------------- .../AddProductWithDefaultPK/run.csx | 26 ----------------- .../run.csx | 29 ------------------- .../AddProductsArray/run.csx | 26 ----------------- .../OutputBindingSamples/host.json | 18 ------------ .../QueueTriggerProducts/function.json | 0 .../QueueTriggerProducts/run.csx | 6 ++-- .../TimerTriggerProducts/function.json | 0 .../TimerTriggerProducts/run.csx | 5 ++-- .../{InputBindingSamples => }/host.json | 0 .../local.settings.json | 0 ....Azure.WebJobs.Extensions.Sql.Tests.csproj | 10 ++----- 51 files changed, 144 insertions(+), 258 deletions(-) rename samples/samples-csx/{OutputBindingSamples => }/AddProduct/function.json (100%) create mode 100644 samples/samples-csx/AddProduct/run.csx rename samples/samples-csx/{OutputBindingSamples => }/AddProductParams/function.json (100%) create mode 100644 samples/samples-csx/AddProductParams/run.csx rename samples/samples-csx/{OutputBindingSamples => }/AddProductWithDefaultPK/function.json (100%) create mode 100644 samples/samples-csx/AddProductWithDefaultPK/run.csx rename samples/samples-csx/{OutputBindingSamples => }/AddProductWithIdentityColumn/function.json (100%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductWithIdentityColumn/run.csx (50%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductWithIdentityColumnIncluded/function.json (100%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductWithIdentityColumnIncluded/run.csx (53%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductWithMultiplePrimaryColumnsAndIdentity/function.json (100%) create mode 100644 samples/samples-csx/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx rename samples/samples-csx/{OutputBindingSamples => }/AddProductsArray/function.json (100%) create mode 100644 samples/samples-csx/AddProductsArray/run.csx rename samples/samples-csx/{OutputBindingSamples => }/AddProductsCollector/function.json (100%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductsCollector/run.csx (69%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductsWithIdentityColumnArray/function.json (100%) rename samples/samples-csx/{OutputBindingSamples => }/AddProductsWithIdentityColumnArray/run.csx (57%) rename samples/samples-csx/{InputBindingSamples => }/GetAndAddProducts/function.json (100%) rename samples/samples-csx/{InputBindingSamples => }/GetAndAddProducts/run.csx (64%) rename samples/samples-csx/{InputBindingSamples => }/GetProductNamesView/function.json (100%) rename samples/samples-csx/{InputBindingSamples => }/GetProductNamesView/run.csx (81%) rename samples/samples-csx/{InputBindingSamples => }/GetProducts/function.json (100%) rename samples/samples-csx/{InputBindingSamples/GetProductsNameEmpty => GetProducts}/run.csx (81%) rename samples/samples-csx/{InputBindingSamples => }/GetProductsAsyncEnumerable/function.json (100%) rename samples/samples-csx/{InputBindingSamples => }/GetProductsAsyncEnumerable/run.csx (95%) rename samples/samples-csx/{InputBindingSamples => }/GetProductsNameEmpty/function.json (100%) rename samples/samples-csx/{InputBindingSamples/GetProductsNameNull => GetProductsNameEmpty}/run.csx (81%) rename samples/samples-csx/{InputBindingSamples => }/GetProductsNameNull/function.json (100%) rename samples/samples-csx/{InputBindingSamples/GetProductsStoredProcedure => GetProductsNameNull}/run.csx (81%) rename samples/samples-csx/{InputBindingSamples => }/GetProductsStoredProcedure/function.json (100%) rename samples/samples-csx/{InputBindingSamples/GetProducts => GetProductsStoredProcedure}/run.csx (81%) rename samples/samples-csx/{InputBindingSamples => }/GetProductsStoredProcedureFromAppSetting/function.json (100%) create mode 100644 samples/samples-csx/GetProductsStoredProcedureFromAppSetting/run.csx delete mode 100644 samples/samples-csx/InputBindingSamples/.vscode/extensions.json delete mode 100644 samples/samples-csx/InputBindingSamples/GetProductsStoredProcedureFromAppSetting/run.csx delete mode 100644 samples/samples-csx/OutputBindingSamples/.vscode/extensions.json delete mode 100644 samples/samples-csx/OutputBindingSamples/AddProduct/run.csx delete mode 100644 samples/samples-csx/OutputBindingSamples/AddProductParams/run.csx delete mode 100644 samples/samples-csx/OutputBindingSamples/AddProductWithDefaultPK/run.csx delete mode 100644 samples/samples-csx/OutputBindingSamples/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx delete mode 100644 samples/samples-csx/OutputBindingSamples/AddProductsArray/run.csx delete mode 100644 samples/samples-csx/OutputBindingSamples/host.json rename samples/samples-csx/{OutputBindingSamples => }/QueueTriggerProducts/function.json (100%) rename samples/samples-csx/{OutputBindingSamples => }/QueueTriggerProducts/run.csx (75%) rename samples/samples-csx/{OutputBindingSamples => }/TimerTriggerProducts/function.json (100%) rename samples/samples-csx/{OutputBindingSamples => }/TimerTriggerProducts/run.csx (82%) rename samples/samples-csx/{InputBindingSamples => }/host.json (100%) rename samples/samples-csx/{InputBindingSamples => }/local.settings.json (100%) diff --git a/docs/SetupGuide_DotnetCSharpScript.md b/docs/SetupGuide_DotnetCSharpScript.md index 0ee196a2a..535f8ea13 100644 --- a/docs/SetupGuide_DotnetCSharpScript.md +++ b/docs/SetupGuide_DotnetCSharpScript.md @@ -21,7 +21,6 @@ - [Array](#array) - [Single Row](#single-row) - [Sample with multiple Bindings](#sample-with-multiple-bindings) - - [Trigger Binding](#trigger-binding) ## CSharp Scripting @@ -131,19 +130,19 @@ The database scripts used for the following samples can be found [here](https:// #### Query String -See the [GetProducts](https://github.com/Azure/azure-functions-sql-extension/blob/main/samples/samples-csx/InputBindingSamples/GetProducts) sample +See the [GetProducts](https://github.com/Azure/azure-functions-sql-extension/blob/main/samples/samples-csx/GetProducts) sample #### Empty Parameter Value -See the [GetProductsNameEmpty](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/InputBindingSamples/GetProductsNameEmpty) sample +See the [GetProductsNameEmpty](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/GetProductsNameEmpty) sample #### Null Parameter Value -See the [GetProductsNameNull](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/InputBindingSamples/GetProductsNameNull) sample +See the [GetProductsNameNull](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/GetProductsNameNull) sample #### Stored Procedure -See the [GetProductsStoredProcedure](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedure) sample +See the [GetProductsStoredProcedure](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/GetProductsStoredProcedure) sample ## Output Binding @@ -173,14 +172,13 @@ Note: This tutorial requires that a SQL database is setup as shown in [Create a ```csharp #load "employee.csx" #r "Newtonsoft.Json" - #r "Microsoft.Azure.WebJobs.Extensions.Sql" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; - public static Product Run(HttpRequest req, ILogger log, [Sql("dbo.Employees", "SqlConnectionString")] out Employee employee) + public static Product Run(HttpRequest req, ILogger log, out Employee employee) { log.LogInformation("CSX HTTP trigger function processed a request."); @@ -219,17 +217,12 @@ Note: This tutorial requires that a SQL database is setup as shown in [Create a #### Array -See the [AddProductsArray](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/OutputBindingSamples/AddProductsArray) sample +See the [AddProductsArray](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/AddProductsArray) sample #### Single Row -See the [AddProduct](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/OutputBindingSamples/AddProduct) sample +See the [AddProduct](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/AddProduct) sample ### Sample with multiple Bindings -See the [GetAndAddProducts](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/InputBindingSamples/GetAndAddProducts) sample - - -## Trigger Binding - -> Trigger binding support is only available for in-proc C# functions at present. +See the [GetAndAddProducts](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/GetAndAddProducts) sample diff --git a/samples/samples-csx/OutputBindingSamples/AddProduct/function.json b/samples/samples-csx/AddProduct/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProduct/function.json rename to samples/samples-csx/AddProduct/function.json diff --git a/samples/samples-csx/AddProduct/run.csx b/samples/samples-csx/AddProduct/run.csx new file mode 100644 index 000000000..e4c5c5c6b --- /dev/null +++ b/samples/samples-csx/AddProduct/run.csx @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +#load "../Common/product.csx" +#r "Newtonsoft.Json" + +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; + +public static Product Run(HttpRequest req, ILogger log, out Product product) +{ + string requestBody = new StreamReader(req.Body).ReadToEnd(); + product = JsonConvert.DeserializeObject(requestBody); + + return product; +} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductParams/function.json b/samples/samples-csx/AddProductParams/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductParams/function.json rename to samples/samples-csx/AddProductParams/function.json diff --git a/samples/samples-csx/AddProductParams/run.csx b/samples/samples-csx/AddProductParams/run.csx new file mode 100644 index 000000000..901893e2f --- /dev/null +++ b/samples/samples-csx/AddProductParams/run.csx @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +#load "../Common/product.csx" +#r "Newtonsoft.Json" + +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; + +public static Product Run(HttpRequest req, ILogger log, out Product product) +{ + product = new Product + { + Name = req.Query["name"], + ProductId = int.Parse(req.Query["productId"]), + Cost = int.Parse(req.Query["cost"]) + }; + + return product; +} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithDefaultPK/function.json b/samples/samples-csx/AddProductWithDefaultPK/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductWithDefaultPK/function.json rename to samples/samples-csx/AddProductWithDefaultPK/function.json diff --git a/samples/samples-csx/AddProductWithDefaultPK/run.csx b/samples/samples-csx/AddProductWithDefaultPK/run.csx new file mode 100644 index 000000000..da5a38bf4 --- /dev/null +++ b/samples/samples-csx/AddProductWithDefaultPK/run.csx @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +#load "../Common/product.csx" +#r "Newtonsoft.Json" + +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; + +public static ProductWithDefaultPK Run(HttpRequest req, ILogger log, out ProductWithDefaultPK product) +{ + string requestBody = new StreamReader(req.Body).ReadToEnd(); + product = JsonConvert.DeserializeObject(requestBody); + + return product; +} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumn/function.json b/samples/samples-csx/AddProductWithIdentityColumn/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumn/function.json rename to samples/samples-csx/AddProductWithIdentityColumn/function.json diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumn/run.csx b/samples/samples-csx/AddProductWithIdentityColumn/run.csx similarity index 50% rename from samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumn/run.csx rename to samples/samples-csx/AddProductWithIdentityColumn/run.csx index 60e73f317..f04f04dcf 100644 --- a/samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumn/run.csx +++ b/samples/samples-csx/AddProductWithIdentityColumn/run.csx @@ -1,28 +1,21 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; -public static ProductWithoutId Run(HttpRequest req, ILogger log, [Sql("dbo.Products", "SqlConnectionString")] out ProductWithoutId product) +public static ProductWithoutId Run(HttpRequest req, ILogger log, out ProductWithoutId product) { - log.LogInformation("C# HTTP trigger function processed a request."); - product = new ProductWithoutId { Name = req.Query["name"], Cost = int.Parse(req.Query["cost"]) }; - string responseMessage = string.IsNullOrEmpty(product.Name) - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : $"Hello, {product.Name}. This HTTP triggered function executed successfully."; - return product; } \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumnIncluded/function.json b/samples/samples-csx/AddProductWithIdentityColumnIncluded/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumnIncluded/function.json rename to samples/samples-csx/AddProductWithIdentityColumnIncluded/function.json diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumnIncluded/run.csx b/samples/samples-csx/AddProductWithIdentityColumnIncluded/run.csx similarity index 53% rename from samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumnIncluded/run.csx rename to samples/samples-csx/AddProductWithIdentityColumnIncluded/run.csx index 7da049f2f..b3c0c4d43 100644 --- a/samples/samples-csx/OutputBindingSamples/AddProductWithIdentityColumnIncluded/run.csx +++ b/samples/samples-csx/AddProductWithIdentityColumnIncluded/run.csx @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; -public static ProductWithOptionalId Run(HttpRequest req, ILogger log, [Sql("dbo.ProductsWithIdentity", "SqlConnectionString")] out ProductWithOptionalId product) +public static ProductWithOptionalId Run(HttpRequest req, ILogger log, out ProductWithOptionalId product) { - log.LogInformation("C# HTTP trigger function processed a request."); - product = product = new ProductWithOptionalId { Name = req.Query["name"], @@ -21,9 +18,5 @@ public static ProductWithOptionalId Run(HttpRequest req, ILogger log, [Sql("dbo. Cost = int.Parse(req.Query["cost"]) }; - string responseMessage = string.IsNullOrEmpty(product.Name) - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : $"Hello, {product.Name}. This HTTP triggered function executed successfully."; - return product; } \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithMultiplePrimaryColumnsAndIdentity/function.json b/samples/samples-csx/AddProductWithMultiplePrimaryColumnsAndIdentity/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductWithMultiplePrimaryColumnsAndIdentity/function.json rename to samples/samples-csx/AddProductWithMultiplePrimaryColumnsAndIdentity/function.json diff --git a/samples/samples-csx/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx b/samples/samples-csx/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx new file mode 100644 index 000000000..34acece3e --- /dev/null +++ b/samples/samples-csx/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +#load "../Common/product.csx" +#r "Newtonsoft.Json" + +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; + +public static MultiplePrimaryKeyProductWithoutId Run(HttpRequest req, ILogger log, out MultiplePrimaryKeyProductWithoutId product) +{ + product = product = new MultiplePrimaryKeyProductWithoutId + { + ExternalId = int.Parse(req.Query["externalId"]), + Name = req.Query["name"], + Cost = int.Parse(req.Query["cost"]) + }; + + return product; +} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductsArray/function.json b/samples/samples-csx/AddProductsArray/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductsArray/function.json rename to samples/samples-csx/AddProductsArray/function.json diff --git a/samples/samples-csx/AddProductsArray/run.csx b/samples/samples-csx/AddProductsArray/run.csx new file mode 100644 index 000000000..a4431d153 --- /dev/null +++ b/samples/samples-csx/AddProductsArray/run.csx @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +#load "../Common/product.csx" +#r "Newtonsoft.Json" + +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; + +public static Product[] Run(HttpRequest req, ILogger log, out Product[] products) +{ + string requestBody = new StreamReader(req.Body).ReadToEnd(); + products = JsonConvert.DeserializeObject(requestBody); + + return products; +} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductsCollector/function.json b/samples/samples-csx/AddProductsCollector/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductsCollector/function.json rename to samples/samples-csx/AddProductsCollector/function.json diff --git a/samples/samples-csx/OutputBindingSamples/AddProductsCollector/run.csx b/samples/samples-csx/AddProductsCollector/run.csx similarity index 69% rename from samples/samples-csx/OutputBindingSamples/AddProductsCollector/run.csx rename to samples/samples-csx/AddProductsCollector/run.csx index 7e516484b..fb7e878de 100644 --- a/samples/samples-csx/OutputBindingSamples/AddProductsCollector/run.csx +++ b/samples/samples-csx/AddProductsCollector/run.csx @@ -1,18 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" using System.Collections.Generic; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -public static ICollector Run(HttpRequest req, ILogger log, [Sql("dbo.Products", "SqlConnectionString")] ICollector products) +public static ICollector Run(HttpRequest req, ILogger log, ICollector products) { - log.LogInformation("C# HTTP trigger function processed a request."); - List newProducts = ProductUtilities.GetNewProducts(5000); foreach (Product product in newProducts) { diff --git a/samples/samples-csx/OutputBindingSamples/AddProductsWithIdentityColumnArray/function.json b/samples/samples-csx/AddProductsWithIdentityColumnArray/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/AddProductsWithIdentityColumnArray/function.json rename to samples/samples-csx/AddProductsWithIdentityColumnArray/function.json diff --git a/samples/samples-csx/OutputBindingSamples/AddProductsWithIdentityColumnArray/run.csx b/samples/samples-csx/AddProductsWithIdentityColumnArray/run.csx similarity index 57% rename from samples/samples-csx/OutputBindingSamples/AddProductsWithIdentityColumnArray/run.csx rename to samples/samples-csx/AddProductsWithIdentityColumnArray/run.csx index 303f19d14..0e9f9dca8 100644 --- a/samples/samples-csx/OutputBindingSamples/AddProductsWithIdentityColumnArray/run.csx +++ b/samples/samples-csx/AddProductsWithIdentityColumnArray/run.csx @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; -public static ProductWithoutId[] Run(HttpRequest req, ILogger log, [Sql("dbo.Products", "SqlConnectionString")] out ProductWithoutId[] products) +public static ProductWithoutId[] Run(HttpRequest req, ILogger log, out ProductWithoutId[] products) { - log.LogInformation("C# HTTP trigger function processed a request."); - products = new[] { new ProductWithoutId @@ -28,9 +25,5 @@ public static ProductWithoutId[] Run(HttpRequest req, ILogger log, [Sql("dbo.Pro } }; - string responseMessage = products.Length > 0 - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : "No data passed, Please pass the objects to upsert in the request body."; - return products; } \ No newline at end of file diff --git a/samples/samples-csx/InputBindingSamples/GetAndAddProducts/function.json b/samples/samples-csx/GetAndAddProducts/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetAndAddProducts/function.json rename to samples/samples-csx/GetAndAddProducts/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetAndAddProducts/run.csx b/samples/samples-csx/GetAndAddProducts/run.csx similarity index 64% rename from samples/samples-csx/InputBindingSamples/GetAndAddProducts/run.csx rename to samples/samples-csx/GetAndAddProducts/run.csx index 505744667..8a16a707c 100644 --- a/samples/samples-csx/InputBindingSamples/GetAndAddProducts/run.csx +++ b/samples/samples-csx/GetAndAddProducts/run.csx @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" using System.Net; using Microsoft.AspNetCore.Mvc; @@ -11,9 +10,8 @@ using Microsoft.Extensions.Primitives; using Newtonsoft.Json; using System.Collections.Generic; -public static Product[] Run(HttpRequest req, ILogger log, IEnumerable products, [Sql("dbo.ProductsWithIdentity", "SqlConnectionString")] out Product[] productsWithIdentity) +public static Product[] Run(HttpRequest req, ILogger log, IEnumerable products, out Product[] productsWithIdentity) { - log.LogInformation("C# HTTP trigger function processed a request."); productsWithIdentity = products.ToArray(); return productsWithIdentity; } diff --git a/samples/samples-csx/InputBindingSamples/GetProductNamesView/function.json b/samples/samples-csx/GetProductNamesView/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProductNamesView/function.json rename to samples/samples-csx/GetProductNamesView/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetProductNamesView/run.csx b/samples/samples-csx/GetProductNamesView/run.csx similarity index 81% rename from samples/samples-csx/InputBindingSamples/GetProductNamesView/run.csx rename to samples/samples-csx/GetProductNamesView/run.csx index b6a8bc62a..da0129fd0 100644 --- a/samples/samples-csx/InputBindingSamples/GetProductNamesView/run.csx +++ b/samples/samples-csx/GetProductNamesView/run.csx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" using System.Net; @@ -12,6 +12,5 @@ using System.Collections.Generic; public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) { - log.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult(products); } diff --git a/samples/samples-csx/InputBindingSamples/GetProducts/function.json b/samples/samples-csx/GetProducts/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProducts/function.json rename to samples/samples-csx/GetProducts/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetProductsNameEmpty/run.csx b/samples/samples-csx/GetProducts/run.csx similarity index 81% rename from samples/samples-csx/InputBindingSamples/GetProductsNameEmpty/run.csx rename to samples/samples-csx/GetProducts/run.csx index b00a86fcb..bac16e698 100644 --- a/samples/samples-csx/InputBindingSamples/GetProductsNameEmpty/run.csx +++ b/samples/samples-csx/GetProducts/run.csx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" using System.Net; @@ -12,6 +12,5 @@ using System.Collections.Generic; public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) { - log.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult(products); } diff --git a/samples/samples-csx/InputBindingSamples/GetProductsAsyncEnumerable/function.json b/samples/samples-csx/GetProductsAsyncEnumerable/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProductsAsyncEnumerable/function.json rename to samples/samples-csx/GetProductsAsyncEnumerable/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetProductsAsyncEnumerable/run.csx b/samples/samples-csx/GetProductsAsyncEnumerable/run.csx similarity index 95% rename from samples/samples-csx/InputBindingSamples/GetProductsAsyncEnumerable/run.csx rename to samples/samples-csx/GetProductsAsyncEnumerable/run.csx index c041161f0..f7f3eb489 100644 --- a/samples/samples-csx/InputBindingSamples/GetProductsAsyncEnumerable/run.csx +++ b/samples/samples-csx/GetProductsAsyncEnumerable/run.csx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" using System.Net; diff --git a/samples/samples-csx/InputBindingSamples/GetProductsNameEmpty/function.json b/samples/samples-csx/GetProductsNameEmpty/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProductsNameEmpty/function.json rename to samples/samples-csx/GetProductsNameEmpty/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetProductsNameNull/run.csx b/samples/samples-csx/GetProductsNameEmpty/run.csx similarity index 81% rename from samples/samples-csx/InputBindingSamples/GetProductsNameNull/run.csx rename to samples/samples-csx/GetProductsNameEmpty/run.csx index b00a86fcb..bac16e698 100644 --- a/samples/samples-csx/InputBindingSamples/GetProductsNameNull/run.csx +++ b/samples/samples-csx/GetProductsNameEmpty/run.csx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" using System.Net; @@ -12,6 +12,5 @@ using System.Collections.Generic; public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) { - log.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult(products); } diff --git a/samples/samples-csx/InputBindingSamples/GetProductsNameNull/function.json b/samples/samples-csx/GetProductsNameNull/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProductsNameNull/function.json rename to samples/samples-csx/GetProductsNameNull/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedure/run.csx b/samples/samples-csx/GetProductsNameNull/run.csx similarity index 81% rename from samples/samples-csx/InputBindingSamples/GetProductsStoredProcedure/run.csx rename to samples/samples-csx/GetProductsNameNull/run.csx index b00a86fcb..bac16e698 100644 --- a/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedure/run.csx +++ b/samples/samples-csx/GetProductsNameNull/run.csx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" using System.Net; @@ -12,6 +12,5 @@ using System.Collections.Generic; public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) { - log.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult(products); } diff --git a/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedure/function.json b/samples/samples-csx/GetProductsStoredProcedure/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProductsStoredProcedure/function.json rename to samples/samples-csx/GetProductsStoredProcedure/function.json diff --git a/samples/samples-csx/InputBindingSamples/GetProducts/run.csx b/samples/samples-csx/GetProductsStoredProcedure/run.csx similarity index 81% rename from samples/samples-csx/InputBindingSamples/GetProducts/run.csx rename to samples/samples-csx/GetProductsStoredProcedure/run.csx index b00a86fcb..bac16e698 100644 --- a/samples/samples-csx/InputBindingSamples/GetProducts/run.csx +++ b/samples/samples-csx/GetProductsStoredProcedure/run.csx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" using System.Net; @@ -12,6 +12,5 @@ using System.Collections.Generic; public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) { - log.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult(products); } diff --git a/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedureFromAppSetting/function.json b/samples/samples-csx/GetProductsStoredProcedureFromAppSetting/function.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/GetProductsStoredProcedureFromAppSetting/function.json rename to samples/samples-csx/GetProductsStoredProcedureFromAppSetting/function.json diff --git a/samples/samples-csx/GetProductsStoredProcedureFromAppSetting/run.csx b/samples/samples-csx/GetProductsStoredProcedureFromAppSetting/run.csx new file mode 100644 index 000000000..bac16e698 --- /dev/null +++ b/samples/samples-csx/GetProductsStoredProcedureFromAppSetting/run.csx @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +#load "../Common/product.csx" +#r "Newtonsoft.Json" + +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; +using System.Collections.Generic; + +public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) +{ + return new OkObjectResult(products); +} diff --git a/samples/samples-csx/InputBindingSamples/.vscode/extensions.json b/samples/samples-csx/InputBindingSamples/.vscode/extensions.json deleted file mode 100644 index dde673dcd..000000000 --- a/samples/samples-csx/InputBindingSamples/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "ms-azuretools.vscode-azurefunctions" - ] -} \ No newline at end of file diff --git a/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedureFromAppSetting/run.csx b/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedureFromAppSetting/run.csx deleted file mode 100644 index b00a86fcb..000000000 --- a/samples/samples-csx/InputBindingSamples/GetProductsStoredProcedureFromAppSetting/run.csx +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -#load "../../Common/product.csx" -#r "Newtonsoft.Json" - -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Primitives; -using Newtonsoft.Json; -using System.Collections.Generic; - -public static IActionResult Run(HttpRequest req, ILogger log, IEnumerable products) -{ - log.LogInformation("C# HTTP trigger function processed a request."); - return new OkObjectResult(products); -} diff --git a/samples/samples-csx/OutputBindingSamples/.vscode/extensions.json b/samples/samples-csx/OutputBindingSamples/.vscode/extensions.json deleted file mode 100644 index dde673dcd..000000000 --- a/samples/samples-csx/OutputBindingSamples/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "ms-azuretools.vscode-azurefunctions" - ] -} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProduct/run.csx b/samples/samples-csx/OutputBindingSamples/AddProduct/run.csx deleted file mode 100644 index 95e2adaad..000000000 --- a/samples/samples-csx/OutputBindingSamples/AddProduct/run.csx +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -#load "../../Common/product.csx" -#r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" - -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Primitives; -using Newtonsoft.Json; - -public static Product Run(HttpRequest req, ILogger log, [Sql("dbo.Products", "SqlConnectionString")] out Product product) -{ - log.LogInformation("C# HTTP trigger function processed a request."); - - - string requestBody = new StreamReader(req.Body).ReadToEnd(); - product = JsonConvert.DeserializeObject(requestBody); - - string responseMessage = string.IsNullOrEmpty(product.Name) - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : $"Hello, {product.Name}. This HTTP triggered function executed successfully."; - - return product; -} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductParams/run.csx b/samples/samples-csx/OutputBindingSamples/AddProductParams/run.csx deleted file mode 100644 index 32246f2fb..000000000 --- a/samples/samples-csx/OutputBindingSamples/AddProductParams/run.csx +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -#load "../../Common/product.csx" -#r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" - -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Primitives; -using Newtonsoft.Json; - -public static Product Run(HttpRequest req, ILogger log, [Sql("dbo.Products", "SqlConnectionString")] out Product product) -{ - log.LogInformation("C# HTTP trigger function processed a request."); - - product = new Product - { - Name = req.Query["name"], - ProductId = int.Parse(req.Query["productId"]), - Cost = int.Parse(req.Query["cost"]) - }; - - string responseMessage = string.IsNullOrEmpty(product.Name) - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : $"Hello, {product.Name}. This HTTP triggered function executed successfully."; - - return product; -} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithDefaultPK/run.csx b/samples/samples-csx/OutputBindingSamples/AddProductWithDefaultPK/run.csx deleted file mode 100644 index 01c0d3aad..000000000 --- a/samples/samples-csx/OutputBindingSamples/AddProductWithDefaultPK/run.csx +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -#load "../../Common/product.csx" -#r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" - -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Primitives; -using Newtonsoft.Json; - -public static ProductWithDefaultPK Run(HttpRequest req, ILogger log, [Sql("dbo.ProductsWithDefaultPK", "SqlConnectionString")] out ProductWithDefaultPK product) -{ - log.LogInformation("C# HTTP trigger function processed a request."); - - - string requestBody = new StreamReader(req.Body).ReadToEnd(); - product = JsonConvert.DeserializeObject(requestBody); - - string responseMessage = string.IsNullOrEmpty(product.Name) - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : $"Hello, {product.Name}. This HTTP triggered function executed successfully."; - - return product; -} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx b/samples/samples-csx/OutputBindingSamples/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx deleted file mode 100644 index 41f076f45..000000000 --- a/samples/samples-csx/OutputBindingSamples/AddProductWithMultiplePrimaryColumnsAndIdentity/run.csx +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -#load "../../Common/product.csx" -#r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" - -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Primitives; -using Newtonsoft.Json; - -public static MultiplePrimaryKeyProductWithoutId Run(HttpRequest req, ILogger log, [Sql("dbo.ProductsWithMultiplePrimaryColumnsAndIdentity", "SqlConnectionString")] out MultiplePrimaryKeyProductWithoutId product) -{ - log.LogInformation("C# HTTP trigger function processed a request."); - - product = product = new MultiplePrimaryKeyProductWithoutId - { - ExternalId = int.Parse(req.Query["externalId"]), - Name = req.Query["name"], - Cost = int.Parse(req.Query["cost"]) - }; - - string responseMessage = string.IsNullOrEmpty(product.Name) - ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." - : $"Hello, {product.Name}. This HTTP triggered function executed successfully."; - - return product; -} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/AddProductsArray/run.csx b/samples/samples-csx/OutputBindingSamples/AddProductsArray/run.csx deleted file mode 100644 index 96a0120ac..000000000 --- a/samples/samples-csx/OutputBindingSamples/AddProductsArray/run.csx +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -#load "../../Common/product.csx" -#r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" - -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Primitives; -using Newtonsoft.Json; - -public static Product[] Run(HttpRequest req, ILogger log, [Sql("dbo.Products", "SqlConnectionString")] out Product[] products) -{ - log.LogInformation("C# HTTP trigger function processed a request."); - - - string requestBody = new StreamReader(req.Body).ReadToEnd(); - products = JsonConvert.DeserializeObject(requestBody); - - string responseMessage = products.Length > 0 - ? "This HTTP triggered function executed successfully." - : "No data passed, Please pass the objects to upsert in the request body."; - - return products; -} \ No newline at end of file diff --git a/samples/samples-csx/OutputBindingSamples/host.json b/samples/samples-csx/OutputBindingSamples/host.json deleted file mode 100644 index b402e0789..000000000 --- a/samples/samples-csx/OutputBindingSamples/host.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": "2.0", - "logging": { - "applicationInsights": { - "samplingSettings": { - "isEnabled": true, - "excludedTypes": "Request" - } - }, - "logLevel": { - "default": "Trace" - } - }, - "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", - "version": "[4.*, 5.0.0)" - } -} diff --git a/samples/samples-csx/OutputBindingSamples/QueueTriggerProducts/function.json b/samples/samples-csx/QueueTriggerProducts/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/QueueTriggerProducts/function.json rename to samples/samples-csx/QueueTriggerProducts/function.json diff --git a/samples/samples-csx/OutputBindingSamples/QueueTriggerProducts/run.csx b/samples/samples-csx/QueueTriggerProducts/run.csx similarity index 75% rename from samples/samples-csx/OutputBindingSamples/QueueTriggerProducts/run.csx rename to samples/samples-csx/QueueTriggerProducts/run.csx index 42f7f0ee3..a2be84e50 100644 --- a/samples/samples-csx/OutputBindingSamples/QueueTriggerProducts/run.csx +++ b/samples/samples-csx/QueueTriggerProducts/run.csx @@ -1,14 +1,12 @@ -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" -#r "Microsoft.Azure.WebJobs.Extensions.Sql" using System; using System.Collections.Generic; using System.Diagnostics; using Newtonsoft.Json; -public static void Run(string queueMessage, ILogger log, - [Sql("[dbo].[Products]", "SqlConnectionString")] ICollector products) +public static void Run(string queueMessage, ILogger log, ICollector products) { int totalUpserts = 100; log.LogInformation($"[QueueTrigger]: {DateTime.Now} starting execution {queueMessage}. Rows to generate={totalUpserts}."); diff --git a/samples/samples-csx/OutputBindingSamples/TimerTriggerProducts/function.json b/samples/samples-csx/TimerTriggerProducts/function.json similarity index 100% rename from samples/samples-csx/OutputBindingSamples/TimerTriggerProducts/function.json rename to samples/samples-csx/TimerTriggerProducts/function.json diff --git a/samples/samples-csx/OutputBindingSamples/TimerTriggerProducts/run.csx b/samples/samples-csx/TimerTriggerProducts/run.csx similarity index 82% rename from samples/samples-csx/OutputBindingSamples/TimerTriggerProducts/run.csx rename to samples/samples-csx/TimerTriggerProducts/run.csx index 4f040acf3..c8c17d682 100644 --- a/samples/samples-csx/OutputBindingSamples/TimerTriggerProducts/run.csx +++ b/samples/samples-csx/TimerTriggerProducts/run.csx @@ -1,4 +1,4 @@ -#load "../../Common/product.csx" +#load "../Common/product.csx" #r "Newtonsoft.Json" #r "Microsoft.Azure.WebJobs.Extensions.Sql" @@ -8,8 +8,7 @@ using System.Diagnostics; using Newtonsoft.Json; private static int _executionNumber = 0; -public static void Run(TimerInfo myTimer, ILogger log, - [Sql("Products", "SqlConnectionString")] ICollector products) +public static void Run(TimerInfo myTimer, ILogger log, ICollector products) { int totalUpserts = 1000; log.LogInformation($"{DateTime.Now} starting execution #{_executionNumber}. Rows to generate={totalUpserts}."); diff --git a/samples/samples-csx/InputBindingSamples/host.json b/samples/samples-csx/host.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/host.json rename to samples/samples-csx/host.json diff --git a/samples/samples-csx/InputBindingSamples/local.settings.json b/samples/samples-csx/local.settings.json similarity index 100% rename from samples/samples-csx/InputBindingSamples/local.settings.json rename to samples/samples-csx/local.settings.json diff --git a/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj b/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj index b8ac96a4e..ef533f160 100644 --- a/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj +++ b/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj @@ -67,16 +67,10 @@ - <_CsxCopyItems Include="..\samples\samples-csx\InputBindingSamples\**\*.*" /> - <_CsxCopyItems Include="..\samples\samples-csx\OutputBindingSamples\**\*.*" /> - <_CsxCopyItems Include="..\samples\samples-csx\TriggerBindingSamples\**\*.*" /> + <_CsxCopyItems Include="..\samples\samples-csx\**\*.*" /> <_CsxCopyItems Include="Integration\test-csx\**\*.*" /> - - <_CommonCopyItems Include="..\samples\samples-csx\Common\**\*.*" /> - - - + From 845a27fcfb88dbb7d5eab11049e1c767c19db2c4 Mon Sep 17 00:00:00 2001 From: Maddy Koripalli Date: Wed, 26 Apr 2023 10:29:08 -0700 Subject: [PATCH 2/3] remove TriggerSamples folder --- .../ProductsTrigger/function.json | 0 .../ProductsTrigger/run.csx | 0 .../.vscode/extensions.json | 5 ----- .../TriggerBindingSamples/host.json | 18 ------------------ 4 files changed, 23 deletions(-) rename samples/samples-csx/{TriggerBindingSamples => }/ProductsTrigger/function.json (100%) rename samples/samples-csx/{TriggerBindingSamples => }/ProductsTrigger/run.csx (100%) delete mode 100644 samples/samples-csx/TriggerBindingSamples/.vscode/extensions.json delete mode 100644 samples/samples-csx/TriggerBindingSamples/host.json diff --git a/samples/samples-csx/TriggerBindingSamples/ProductsTrigger/function.json b/samples/samples-csx/ProductsTrigger/function.json similarity index 100% rename from samples/samples-csx/TriggerBindingSamples/ProductsTrigger/function.json rename to samples/samples-csx/ProductsTrigger/function.json diff --git a/samples/samples-csx/TriggerBindingSamples/ProductsTrigger/run.csx b/samples/samples-csx/ProductsTrigger/run.csx similarity index 100% rename from samples/samples-csx/TriggerBindingSamples/ProductsTrigger/run.csx rename to samples/samples-csx/ProductsTrigger/run.csx diff --git a/samples/samples-csx/TriggerBindingSamples/.vscode/extensions.json b/samples/samples-csx/TriggerBindingSamples/.vscode/extensions.json deleted file mode 100644 index dde673dcd..000000000 --- a/samples/samples-csx/TriggerBindingSamples/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "ms-azuretools.vscode-azurefunctions" - ] -} \ No newline at end of file diff --git a/samples/samples-csx/TriggerBindingSamples/host.json b/samples/samples-csx/TriggerBindingSamples/host.json deleted file mode 100644 index b402e0789..000000000 --- a/samples/samples-csx/TriggerBindingSamples/host.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": "2.0", - "logging": { - "applicationInsights": { - "samplingSettings": { - "isEnabled": true, - "excludedTypes": "Request" - } - }, - "logLevel": { - "default": "Trace" - } - }, - "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", - "version": "[4.*, 5.0.0)" - } -} From d2e41f67d5005023422ce5551761d6680658291f Mon Sep 17 00:00:00 2001 From: Maddy Koripalli Date: Wed, 26 Apr 2023 10:56:47 -0700 Subject: [PATCH 3/3] update trigger docs for csx --- docs/SetupGuide_DotnetCSharpScript.md | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/docs/SetupGuide_DotnetCSharpScript.md b/docs/SetupGuide_DotnetCSharpScript.md index 535f8ea13..d27d222f9 100644 --- a/docs/SetupGuide_DotnetCSharpScript.md +++ b/docs/SetupGuide_DotnetCSharpScript.md @@ -21,6 +21,9 @@ - [Array](#array) - [Single Row](#single-row) - [Sample with multiple Bindings](#sample-with-multiple-bindings) + - [Trigger Binding](#trigger-binding) + - [function.json Properties for Trigger Bindings](#functionjson-properties-for-trigger-bindings) + - [Setup for Trigger Bindings](#setup-for-trigger-bindings) ## CSharp Scripting @@ -226,3 +229,67 @@ See the [AddProduct](https://github.com/Azure/azure-functions-sql-extension/tree ### Sample with multiple Bindings See the [GetAndAddProducts](https://github.com/Azure/azure-functions-sql-extension/tree/main/samples/samples-csx/GetAndAddProducts) sample + + +## Trigger Binding + +See [Trigger Binding Overview](./BindingsOverview.md#trigger-binding) for general information about the Azure SQL Trigger binding. + +### function.json Properties for Trigger Bindings + +The following table explains the binding configuration properties that you set in the *function.json* file. + +|function.json property | Description| +|---------|----------------------| +|**type** | Required. Must be set to `sqlTrigger`.| +|**direction** | Required. Must be set to `in`. | +|**name** | Required. The name of the variable that represents the set of changes that triggered the function code. Must be set to `changes`. | +| **tableName** | Required. The name of the table to be monitored for changes. | +| **connectionStringSetting** | Required. The name of an app setting that contains the SQL connection string used to connect to a database. The connection string must follow the format specified [here](https://docs.microsoft.com/dotnet/api/microsoft.data.sqlclient.sqlconnection.connectionstring?view=sqlclient-dotnet-core-2.0). | + +### Setup for Trigger Bindings + +Note: This tutorial requires that a SQL database is setup as shown in [Create a SQL Server](./GeneralSetup.md#create-a-sql-server). + +- Open your app in VS Code +- Press 'F1' and search for 'Azure Functions: Create Function' +- Choose HttpTrigger -> (Provide a function name) -> anonymous +- In the folder that is created with the provided function name, open the file (`run.csx`), replace its contents block with the below code. Note that the casing of the Object field names and the table column names must match. + + ```csharp + #load "Product.csx" + #r "Newtonsoft.Json" + #r "Microsoft.Azure.WebJobs.Extensions.Sql" + + using System.Net; + using Microsoft.AspNetCore.Mvc; + using Microsoft.Extensions.Primitives; + using Newtonsoft.Json; + using Microsoft.Azure.WebJobs.Extensions.Sql; + + public static void Run(IReadOnlyList> changes, ILogger log) + { + log.LogInformation("SQL Changes: " + JsonConvert.SerializeObject(changes)); + } + ``` + +- We also need to add the SQL trigger binding for the Products table by defining `bindings.changes` property. Open the function.json file. +- Paste the below in the file as an additional entry to the "bindings": [] array. + + ```json + { + "name": "changes", + "type": "sqlTrigger", + "direction": "in", + "tableName": "dbo.Products", + "connectionStringSetting": "SqlConnectionString" + } + ``` + + *In the above, "dbo.Products" is the name of the table our trigger binding is triggered on. The line below is similar to the input binding and specifies where our SqlConnectionString is. For more information on this, see the [function.json Properties for Trigger Bindings](#functionjson-properties-for-trigger-bindings) section* + +- Open the local.settings.json file, and in the brackets for "Values," verify there is a 'SqlConnectionString.' If not, add it. +- Hit 'F5' to run your code. +- Update, insert, or delete rows in your SQL table while the function app is running and observe the function logs. +- You should see the new log messages in the Visual Studio Code terminal containing the values of row-columns after the update operation. +- Congratulations! You have successfully created your first SQL trigger binding! \ No newline at end of file