/* * * { * } */ public object TestCompositeKeyTableLambdaHandler(object input, ILambdaContext context) { //basic elements of our response bool success = true; string message = ""; string responseText = ""; string requestBody = ""; string usersObjectJson = "{}"; string citiesObjectJson = "{}"; try { string environment = Environment.GetEnvironmentVariable("ENVIRONMENT"); string userTableName = Environment.GetEnvironmentVariable("USERTABLE"); string cityTableName = Environment.GetEnvironmentVariable("CITYTABLE"); responseText = "TestCompositeKeyTableLambdaHandler CDK Lambda " + DateTime.Now.ToString("dddd, dd MMMM yyyy HH:mm:ss") + " "; responseText += "User DynamoDB Table:" + userTableName; responseText += "City DynamoDB Table:" + cityTableName; var request = JObject.Parse("" + input); requestBody = request["body"].ToString(); var requestBodyJson = JObject.Parse(requestBody); DynamoDbCityService dbCityService = new DynamoDbCityService(environment); List <ScanCondition> conditions = new List <ScanCondition>(); //Querying all Cities via Scan responseText += "City Table Name :" + cityTableName; responseText += " *(1)Retrieving all Cities (by Scan) By Primary Key and default sort key(city)"; List <ScanCondition> cityConditions = new List <ScanCondition>(); dbCityService.GetCities(conditions).Wait(); responseText += "# Cities (by Scan) By Primary Key and default sort key(city)=" + dbCityService.cities.Count; int index = 0; foreach (City city in dbCityService.cities) { responseText += " City(" + index + "):" + city + " "; index++; } //Querying(Scan) all Cities with a population of at least 1 million conditions = new List <ScanCondition>(); conditions.Add(new ScanCondition("population", ScanOperator.GreaterThanOrEqual, 1000000)); dbCityService.GetCities(conditions).Wait(); responseText += " *(2) Cities with population greater than 1 million (by Scan) =" + dbCityService.cities.Count; index = 0; foreach (City city in dbCityService.cities) { responseText += " City(" + index + "):" + city + " "; index++; } //Query all of New York Cities(using Partition Key and default Sort Key) string state = "New York"; responseText += " *(3) Get all of cities in the state of:" + state + " using the default sort key(Ascending)"; dbCityService.GetCitiesByStateUsingDefaultSortKey(state, true).Wait(); //responseText += "Log = " + dbCityService.log; responseText += "# Cities(By Primary Key) in the state of " + state + "=" + dbCityService.cities.Count + " using the default sort key(Ascending)"; index = 0; foreach (City city in dbCityService.cities) { responseText += "City(" + index + "):" + city + " "; index++; } responseText += " *(4) Get all of cities in the state of:" + state + " using the default sort key(Descending)"; dbCityService.GetCitiesByStateUsingDefaultSortKey(state, false).Wait(); //responseText += "Log = " + dbCityService.log; responseText += "# Cities(By Primary Key) in the state of " + state + "=" + dbCityService.cities.Count + " using the default sort key(Descending)"; index = 0; foreach (City city in dbCityService.cities) { responseText += "City(" + index + "):" + city + " "; index++; } //Query all New York Cities (Using Partition Key but use the Population LSI (Ascending Order) responseText += " *(5) Get all of cities in the state of:" + state + " using the Population Local Secondary Index(Ascending)"; dbCityService.GetCitiesByStateUsingPopulationLSI(state, true).Wait(); //responseText += "Log = " + dbCityService.log; responseText += "# Cities(By Primary Key) in the state of " + state + "=" + dbCityService.cities.Count + " using the Population Local Secondary Index (Ascending)"; index = 0; foreach (City city in dbCityService.cities) { responseText += "City(" + index + "):" + city + " "; index++; } //Query all New York Cities (Using Partition Key but use the Population LSI (Ascending Order) responseText += " *(6) Get all of cities in the state of:" + state + " using the Population Local Secondary Index(Descending)"; dbCityService.GetCitiesByStateUsingPopulationLSI(state, false).Wait(); //responseText += "Log = " + dbCityService.log; responseText += "# Cities(By Primary Key) in the state of " + state + "=" + dbCityService.cities.Count + " using the Population Local Secondary Index(Descending)"; index = 0; foreach (City city in dbCityService.cities) { responseText += "City(" + index + "):" + city + " "; index++; } //Now demonstrate a delete string stateToDelete = "New York"; string cityToDelete = "Albany"; responseText += " *(7) Now trying to delete the city with the composite key of state=" + stateToDelete + " and city=" + cityToDelete; dbCityService.DeleteCitybyCompositeKey(stateToDelete, cityToDelete).Wait(); responseText += " *(8) (Verify the Delete) Get all of cities in the state of:" + state + " using the Population Local Secondary Index(Descending)"; dbCityService.GetCitiesByStateUsingPopulationLSI(state, false).Wait(); //responseText += "Log = " + dbCityService.log; responseText += "# Cities(By Primary Key) in the state of " + state + "=" + dbCityService.cities.Count + " using the Population Local Secondary Index(Descending)"; index = 0; foreach (City city in dbCityService.cities) { responseText += "City(" + index + "):" + city + " "; index++; } //Let's just display the current state of the cities table in the json attribute of the users attribute responseText += " *(9) Retrieving the City Table(Composite Key) contents"; conditions = new List <ScanCondition>(); dbCityService.GetCities(conditions).Wait(); citiesObjectJson = JsonSerializer.Serialize(dbCityService.cities); responseText += " # Cities=" + dbCityService.cities.Count; } catch (Exception exc) { success = false; message += "TestCompositeKeyTableLambdaHandler Exception:" + exc.Message + "," + exc.StackTrace; } //create the responseBody for the response string responseBody = "{"; responseBody += " \"request\":" + requestBody + ",\n"; responseBody += " \"response\":\"" + responseText + "\",\n"; responseBody += " \"users\":" + usersObjectJson + ",\n"; responseBody += " \"cities\":" + citiesObjectJson + ",\n"; responseBody += " \"success\":\"" + success + "\",\n"; responseBody += " \"message\":\"" + message + "\"\n"; responseBody += "}"; var response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = responseBody, Headers = new Dictionary <string, string> { { "Content-Type", "text/plain" } } }; return(response); }
public object InitializeTablesLambdaHandler(object input, ILambdaContext context) { //basic elements of our response bool success = true; string message = ""; string responseText = ""; string requestBody = ""; string usersObjectJson = "{}"; string citiesObjectJson = "{}"; try { string environment = Environment.GetEnvironmentVariable("ENVIRONMENT"); string userTableName = Environment.GetEnvironmentVariable("USERTABLE"); string cityTableName = Environment.GetEnvironmentVariable("CITYTABLE"); responseText = "InitializeTablesLambdaHandler CDK Lambda " + DateTime.Now.ToString("dddd, dd MMMM yyyy HH:mm:ss") + " "; responseText += "User DynamoDB Table:" + userTableName; responseText += "City DynamoDB Table:" + cityTableName; var request = JObject.Parse("" + input); requestBody = request["body"].ToString(); var requestBodyJson = JObject.Parse(requestBody); //Create the user objects to save ArrayList users = new ArrayList(); User user1 = new User(); user1.username = "******"; user1.firstname = "Steve"; user1.lastname = "Jamieson"; user1.email = "*****@*****.**"; users.Add(user1); User user2 = new User(); user2.username = "******"; user2.firstname = "Jenny"; user2.lastname = "Ross"; user2.email = "*****@*****.**"; users.Add(user2); User user3 = new User(); user3.username = "******"; user3.firstname = "Jason"; user3.lastname = "Pratt"; user3.email = "*****@*****.**"; users.Add(user3); User user4 = new User(); user4.username = "******"; user4.firstname = "Thomas"; user4.lastname = "Richards"; user4.email = "*****@*****.**"; users.Add(user4); responseText += " *(1) Populating the User Table(Primary Key)"; //Inserting a set of users DynamoDbUserService dbUserService = new DynamoDbUserService(environment); dbUserService.InsertUsers(users); responseText += " *(2) Retrieving the User Table(Primary Key) contents"; List <ScanCondition> conditions = new List <ScanCondition>(); dbUserService.GetUsersByScan(environment, conditions).Wait(); usersObjectJson = JsonSerializer.Serialize(dbUserService.users); responseText += " # Users=" + dbUserService.users.Count; //Create the city objects to save ArrayList cities = new ArrayList(); City city3 = new City(); city3.state = "California"; city3.city = "San Diego"; city3.iscapital = false; city3.population = 1423851; cities.Add(city3); City city2 = new City(); city2.state = "California"; city2.city = "Sacramento"; city2.iscapital = true; city2.population = 513624; cities.Add(city2); City city1 = new City(); city1.state = "California"; city1.city = "Los Angeles"; city1.iscapital = false; city1.population = 3792621; cities.Add(city1); City city4 = new City(); city4.state = "New York"; city4.city = "New York"; city4.iscapital = false; city4.population = 8175133; cities.Add(city4); City city6 = new City(); city6.state = "New York"; city6.city = "Buffalo"; city6.iscapital = false; city6.population = 261310; cities.Add(city6); City city5 = new City(); city5.state = "New York"; city5.city = "Albany"; city5.iscapital = true; city5.population = 97478; cities.Add(city5); responseText += " *(3) Populating the City Table(Composite Key)"; //Inserting all Cities DynamoDbCityService dbCityService = new DynamoDbCityService(environment); dbCityService.InsertCities(cities); //Let's populate the cities attribute in the response with what is in the table responseText += " *(4) Retrieving the City Table(Composite Key) contents"; conditions = new List <ScanCondition>(); dbCityService.GetCities(conditions).Wait(); citiesObjectJson = JsonSerializer.Serialize(dbCityService.cities); responseText += " # Cities=" + dbCityService.cities.Count; } catch (Exception exc) { success = false; message += "InitializeTablesLambdaHandler Exception:" + exc.Message + "," + exc.StackTrace; } //create the responseBody for the response string responseBody = "{"; responseBody += " \"request\":" + requestBody + ",\n"; responseBody += " \"response\":\"" + responseText + "\",\n"; responseBody += " \"users\":" + usersObjectJson + ",\n"; responseBody += " \"cities\":" + citiesObjectJson + ",\n"; responseBody += " \"success\":\"" + success + "\",\n"; responseBody += " \"message\":\"" + message + "\"\n"; responseBody += "}"; var response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = responseBody, Headers = new Dictionary <string, string> { { "Content-Type", "text/plain" } } }; return(response); }