Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }