public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "Contact/{id}")] HttpRequest req, string id) { IActionResult result = null; try { QueryDefinition queryDefinition = new QueryDefinition( $"SELECT * FROM {_contactContainer.Id} c WHERE c.id = @id") .WithParameter("@id", id); FeedIterator <Contact> iterator = _contactContainer.GetItemQueryIterator <Contact> ( queryDefinition, requestOptions: new QueryRequestOptions() { MaxItemCount = 1 } ); while (iterator.HasMoreResults) { FeedResponse <Contact> response = await iterator.ReadNextAsync(); Contact contact = response.First(); if (contact == null) { _logger.LogWarning($"Contact with id: {id} doesn't exist"); result = new StatusCodeResult(StatusCodes.Status404NotFound); } ItemResponse <Contact> itemResponse = await _contactContainer.DeleteItemAsync <Contact> ( id, new PartitionKey(contact.ContactType) ); result = new StatusCodeResult(StatusCodes.Status204NoContent); } } catch (CosmosException cex) { var statusCode = cex.StatusCode; _logger.LogError($"Cosmos DB Exception. Status code {statusCode}. Error thrown: {cex.Message}"); result = CosmosExceptionHandler.HandleCosmosException(statusCode); } catch (Exception ex) { _logger.LogError($"Internal Server Error. Exception thrown: {ex.Message}"); result = new StatusCodeResult(StatusCodes.Status500InternalServerError); } return(result); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Contacts")] HttpRequest req) { IActionResult result = null; string continuationToken = null; try { QueryDefinition query = new QueryDefinition($"SELECT * FROM {_contactContainer.Id} c"); do { FeedIterator <Contact> feed = _contactContainer.GetItemQueryIterator <Contact>( query, continuationToken, new QueryRequestOptions() { MaxItemCount = 50 }); while (feed.HasMoreResults) { FeedResponse <Contact> response = await feed.ReadNextAsync(); continuationToken = response.ContinuationToken; result = new OkObjectResult(response); } } while (continuationToken != null); } catch (CosmosException cex) { var statusCode = cex.StatusCode; _logger.LogError($"Cosmos DB Exception. Status code {statusCode}. Error thrown: {cex.Message}"); result = CosmosExceptionHandler.HandleCosmosException(statusCode); } catch (Exception ex) { _logger.LogError($"Internal Server Error. Exception thrown: {ex.Message}"); result = new StatusCodeResult(StatusCodes.Status500InternalServerError); } return(result); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Contact/{contactType}/{id}")] HttpRequest req, string id, string contactType) { IActionResult result = null; try { QueryDefinition queryDefinition = new QueryDefinition( $"SELECT * FROM {_contactContainer.Id} c WHERE c.id = @id AND c.ContactType = @contactType") .WithParameter("@id", id) .WithParameter("@contactType", contactType); FeedIterator <Contact> iterator = _contactContainer.GetItemQueryIterator <Contact>( queryDefinition, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey(contactType), MaxItemCount = 1 }); while (iterator.HasMoreResults) { FeedResponse <Contact> response = await iterator.ReadNextAsync(); result = new OkObjectResult(response); } } catch (CosmosException cex) { var statusCode = cex.StatusCode; _logger.LogError($"Cosmos DB Exception. Status code {statusCode}. Error thrown: {cex.Message}"); result = CosmosExceptionHandler.HandleCosmosException(statusCode); } catch (Exception ex) { _logger.LogError($"Internal Server Error. Exception thrown: {ex.Message}"); result = new StatusCodeResult(StatusCodes.Status500InternalServerError); } return(result); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Contact")] HttpRequest req) { IActionResult result = null; try { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var input = JsonConvert.DeserializeObject <Contact>(requestBody); var contact = new Contact { ContactId = Guid.NewGuid().ToString(), FirstName = input.FirstName, LastName = input.LastName, BirthDate = input.BirthDate, Email = input.Email, PhoneNumber = input.PhoneNumber, Gender = input.Gender, ContactType = input.ContactType }; ItemResponse <Contact> response = await _contactContainer.CreateItemAsync( contact, new PartitionKey(contact.ContactType)); result = new StatusCodeResult(StatusCodes.Status201Created); } catch (CosmosException cex) { var statusCode = cex.StatusCode; _logger.LogError($"Cosmos DB Exception. Status code {statusCode}. Error thrown: {cex.Message}"); result = CosmosExceptionHandler.HandleCosmosException(statusCode); } catch (Exception ex) { _logger.LogError($"Internal Server Error. Exception thrown: {ex.Message}"); result = new StatusCodeResult(StatusCodes.Status500InternalServerError); } return(result); }