public async Task Get()

in PetAdoptions/petsearch/petsearch/Controllers/SearchController.cs [114:147]


        public async Task<string> Get([FromQuery] SearchParams searchParams)
        {
            try
            {
                AWSXRayRecorder.Instance.BeginSubsegment("Scanning DynamoDB Table");

                ScanFilter scanFilter = new ScanFilter();

                if (!String.IsNullOrEmpty(searchParams.petcolor)) scanFilter.AddCondition("petcolor", ScanOperator.Equal, searchParams.petcolor);
                if (!String.IsNullOrEmpty(searchParams.pettype)) scanFilter.AddCondition("pettype", ScanOperator.Equal, searchParams.pettype);
                if (!String.IsNullOrEmpty(searchParams.petid)) scanFilter.AddCondition("petid", ScanOperator.Equal, searchParams.petid);

                var scanquery = new ScanRequest
                {
                    TableName = _configuration["dynamodbtablename"],
                    ScanFilter = scanFilter.ToConditions()
                };

                // This line is intentional. Delays searches 
                if (!String.IsNullOrEmpty(searchParams.pettype) && searchParams.pettype == "bunny") Thread.Sleep(3000);


                AWSXRayRecorder.Instance.AddAnnotation("Query", $"petcolor:{searchParams.petcolor}-pettype:{searchParams.pettype}-petid:{searchParams.petid}");
                Console.WriteLine($"[{AWSXRayRecorder.Instance.GetEntity().TraceId}] - {searchParams}");

                var response = await ddbClient.ScanAsync(scanquery);
                AWSXRayRecorder.Instance.EndSubsegment();
                return BuildPets(response.Items);
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }