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;
}
}