Example #1
0
        /*
         *
         *  {
         * }
         */
        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);
        }
Example #2
0
        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);
        }