From 77c742ee7eeaec6a95e560b780a85bde6fe3c22d Mon Sep 17 00:00:00 2001 From: Michelle_Anguiano Date: Tue, 2 Aug 2022 19:57:38 -0500 Subject: [PATCH 1/5] Add gitignore --- .gitignore | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..281aea5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# package directories +../node_modules +../jspm_packages +../.idea + +../package-lock.json + +.env +# Serverless directories +.serverless + +../.env + +.gitignore + From 118ee34db8e180564d525bad21971431b15d841f Mon Sep 17 00:00:00 2001 From: Michelle_Anguiano Date: Tue, 2 Aug 2022 20:04:48 -0500 Subject: [PATCH 2/5] Corrected lambda.product.test.js Corrected get-product.js --- product-service/get-product.js | 3 +++ product-service/test/lambda.product.test.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/product-service/get-product.js b/product-service/get-product.js index 764b8b4..9326561 100644 --- a/product-service/get-product.js +++ b/product-service/get-product.js @@ -12,6 +12,9 @@ module.exports.getProductsById = async (event) => { product = getById(id); if(product === undefined) { status = 404 + product = { + message: 'Product not found' + } } } return { diff --git a/product-service/test/lambda.product.test.js b/product-service/test/lambda.product.test.js index c2c0fb1..5e19260 100644 --- a/product-service/test/lambda.product.test.js +++ b/product-service/test/lambda.product.test.js @@ -35,7 +35,7 @@ describe('product-service', () => { .expectResult(response => response); expect(result.statusCode).equals(404); - expect(result.body).equals(undefined); + expect(JSON.parse(result.body).message).equals('Product not found'); }); it('Should return 200 with productId', async () => { From c97b1f2728dd31a945f5600d8208f96e240e92f9 Mon Sep 17 00:00:00 2001 From: Michelle_Anguiano Date: Tue, 2 Aug 2022 20:46:08 -0500 Subject: [PATCH 3/5] Corrected serverless.yml Added console.log() added webpack.config.js --- package.json | 4 +- .../controller/product.controller.js | 1 + product-service/get-product.js | 3 +- product-service/get-products.js | 3 ++ product-service/path.json | 1 + product-service/serverless.yml | 41 +++++++++++-------- product-service/webpack.config.js | 11 +++++ 7 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 product-service/path.json create mode 100644 product-service/webpack.config.js diff --git a/package.json b/package.json index 8341761..6994632 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,8 @@ "dependencies": { "chai": "^4.3.6", "lambda-tester": "^4.0.1", - "mocha": "^10.0.0" + "mocha": "^10.0.0", + "serverless-webpack": "^5.8.0", + "webpack-node-externals": "^3.0.0" } } diff --git a/product-service/controller/product.controller.js b/product-service/controller/product.controller.js index 0fd534e..fa932e1 100644 --- a/product-service/controller/product.controller.js +++ b/product-service/controller/product.controller.js @@ -2,6 +2,7 @@ const model = require('../model/product.model').products; const selectAll = function () { + console.log(`${model}`) return model; } diff --git a/product-service/get-product.js b/product-service/get-product.js index 9326561..9461213 100644 --- a/product-service/get-product.js +++ b/product-service/get-product.js @@ -2,7 +2,7 @@ const getById = require('./controller/product.controller').selectById; -module.exports.getProductsById = async (event) => { +module.exports.getProductById = async (event) => { let status = 200; let product = {} if (event[`pathParameters`].productId === '' || !event[`pathParameters`].productId) { @@ -17,6 +17,7 @@ module.exports.getProductsById = async (event) => { } } } + console.log(product); return { statusCode: status, headers: { diff --git a/product-service/get-products.js b/product-service/get-products.js index 66477b1..19a12a5 100644 --- a/product-service/get-products.js +++ b/product-service/get-products.js @@ -3,7 +3,10 @@ const selectAll = require('./controller/product.controller').selectAll; module.exports.getProductsList = async () => { + console.log('getProductsList Started') const products = selectAll(); + console.log('getProductsList executed') + console.log(JSON.stringify(products)); return { statusCode: 200, headers: { diff --git a/product-service/path.json b/product-service/path.json new file mode 100644 index 0000000..cdef318 --- /dev/null +++ b/product-service/path.json @@ -0,0 +1 @@ +{"pathParameters":{"productId":"ABCDE102030"}} \ No newline at end of file diff --git a/product-service/serverless.yml b/product-service/serverless.yml index b8493cc..6e94a57 100644 --- a/product-service/serverless.yml +++ b/product-service/serverless.yml @@ -26,12 +26,21 @@ provider: stage: dev region: us-east-1 +plugins: + - serverless-webpack + +custom: + webpack: + webpackConfig: 'webpack.config.js' # Name of webpack configuration file + includeModules: false + packager: 'npm' + # you can overwrite defaults here # stage: dev # region: us-east-1 functions: - getProductsList: + getProductsListTest: handler: get-products.getProductsList events: - http: @@ -47,23 +56,23 @@ functions: - X-Amz-Security-Token - X-Amz-User-Agent allowCredentials: false - getProductsById: + getProductByIdTest: handler: get-product.getProductById events: - http: path: /products/{productId} method: get - cors: - origins: '*' - headers: - - Content-Type - - X-Amz-Date - - Authorization - - X-Api-Key - - X-Amz-Security-Token - - X-Amz-User-Agent - allowCredentials: false - request: - parameters: - paths: - productId: true \ No newline at end of file + cors: + origins: '*' + headers: + - Content-Type + - X-Amz-Date + - Authorization + - X-Api-Key + - X-Amz-Security-Token + - X-Amz-User-Agent + allowCredentials: false + request: + parameters: + paths: + productId: true \ No newline at end of file diff --git a/product-service/webpack.config.js b/product-service/webpack.config.js new file mode 100644 index 0000000..0266cb6 --- /dev/null +++ b/product-service/webpack.config.js @@ -0,0 +1,11 @@ +const slsw = require('serverless-webpack'); +const nodeExternals = require('webpack-node-externals'); +module.exports = { + context: __dirname, + mode: slsw.lib.webpack.isLocal ? 'development' : 'production', + entry: slsw.lib.entries, + target: 'node', + /*target: 'node', + mode: 'none',*/ + externals: [nodeExternals(), 'pg-native'], +}; From 02a0d604f6b1ef478266f2713e4bb4bf6e80d643 Mon Sep 17 00:00:00 2001 From: Michelle_Anguiano Date: Tue, 2 Aug 2022 20:49:33 -0500 Subject: [PATCH 4/5] returned lambdas names --- product-service/serverless.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/product-service/serverless.yml b/product-service/serverless.yml index 6e94a57..efa19d2 100644 --- a/product-service/serverless.yml +++ b/product-service/serverless.yml @@ -40,7 +40,7 @@ custom: # region: us-east-1 functions: - getProductsListTest: + getProductsList: handler: get-products.getProductsList events: - http: @@ -56,7 +56,7 @@ functions: - X-Amz-Security-Token - X-Amz-User-Agent allowCredentials: false - getProductByIdTest: + getProductById: handler: get-product.getProductById events: - http: From 09cf2ff7c20c1800989c2db38258965c8c2bfecd Mon Sep 17 00:00:00 2001 From: Michelle_Anguiano Date: Wed, 3 Aug 2022 00:01:36 -0500 Subject: [PATCH 5/5] added async/await --- product-service/controller/product.controller.js | 4 ++-- product-service/get-product.js | 2 +- product-service/get-products.js | 2 +- product-service/test/lambda.product.test.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/product-service/controller/product.controller.js b/product-service/controller/product.controller.js index fa932e1..eed09a5 100644 --- a/product-service/controller/product.controller.js +++ b/product-service/controller/product.controller.js @@ -1,12 +1,12 @@ 'use strict'; const model = require('../model/product.model').products; -const selectAll = function () { +const selectAll = async () => { console.log(`${model}`) return model; } -const selectById = function (product_id) { +const selectById = async (product_id) => { return model.find(product => product.id === product_id); } diff --git a/product-service/get-product.js b/product-service/get-product.js index 9461213..205d036 100644 --- a/product-service/get-product.js +++ b/product-service/get-product.js @@ -9,7 +9,7 @@ module.exports.getProductById = async (event) => { status = 500; } else { const id = event[`pathParameters`].productId; - product = getById(id); + product = await getById(id); if(product === undefined) { status = 404 product = { diff --git a/product-service/get-products.js b/product-service/get-products.js index 19a12a5..d194d9d 100644 --- a/product-service/get-products.js +++ b/product-service/get-products.js @@ -4,7 +4,7 @@ const selectAll = require('./controller/product.controller').selectAll; module.exports.getProductsList = async () => { console.log('getProductsList Started') - const products = selectAll(); + const products = await selectAll(); console.log('getProductsList executed') console.log(JSON.stringify(products)); return { diff --git a/product-service/test/lambda.product.test.js b/product-service/test/lambda.product.test.js index 5e19260..4b42435 100644 --- a/product-service/test/lambda.product.test.js +++ b/product-service/test/lambda.product.test.js @@ -3,7 +3,7 @@ const expect = require('chai').expect; const lambda = require('lambda-tester'); const getProductList = require('../get-products').getProductsList; -const getProductById = require('../get-product').getProductsById; +const getProductById = require('../get-product').getProductById; describe('product-service', () => {