public static async Task <IActionResult> UpdateItem( [HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "UpdateItem/{id}")] FoodfestItemPatchBindingModel bindingModel, [Table("FoodfestItems", "Foods", Connection = "AzureWebJobsStorage")] CloudTable foodfestItemsTable, ILogger log, string id) { try { var findOperation = TableOperation.Retrieve <FoodfestItem>("Foods", id); var findResult = await foodfestItemsTable.ExecuteAsync(findOperation); if (findResult.Result == null) { return(new NotFoundResult()); } var existingRow = (FoodfestItem)findResult.Result; existingRow.Food = bindingModel.Food ?? existingRow.Food; existingRow.Amount = bindingModel.Amount ?? existingRow.Amount; var replaceOperation = TableOperation.Replace(existingRow); await foodfestItemsTable.ExecuteAsync(replaceOperation); return(new OkObjectResult(FoodfestFactory.GetBindingModelFor(existingRow))); } catch { return(new BadRequestResult()); } }
public static async Task <IEnumerable <FoodfestItemBindingModel> > GetItems( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, [Table("FoodfestItems", "Foods", Connection = "AzureWebJobsStorage")] CloudTable foodfestItemsTable, ILogger log) { var query = new TableQuery <FoodfestItem>(); var segment = await foodfestItemsTable.ExecuteQuerySegmentedAsync(query, null); return(segment.Results.Select(tableModel => FoodfestFactory.GetBindingModelFor(tableModel))); }
public static async Task <IActionResult> AddItem( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] FoodfestItemPostBindingModel bindingModel, [Table("FoodfestItems", "Foods", Connection = "AzureWebJobsStorage")] IAsyncCollector <FoodfestItem> foodfestItemsTable, ILogger log) { try { var tableModel = FoodfestFactory.GetTableModelFor(bindingModel); await foodfestItemsTable.AddAsync(tableModel); log.LogInformation($"Added {tableModel.RowKey}: {tableModel.Food} by {tableModel.FullName}"); return(new OkObjectResult(FoodfestFactory.GetBindingModelFor(tableModel))); } catch { return(new BadRequestResult()); } }