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 + 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..eed09a5 100644 --- a/product-service/controller/product.controller.js +++ b/product-service/controller/product.controller.js @@ -1,11 +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 764b8b4..205d036 100644 --- a/product-service/get-product.js +++ b/product-service/get-product.js @@ -2,18 +2,22 @@ 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) { status = 500; } else { const id = event[`pathParameters`].productId; - product = getById(id); + product = await getById(id); if(product === undefined) { status = 404 + product = { + message: 'Product not found' + } } } + console.log(product); return { statusCode: status, headers: { diff --git a/product-service/get-products.js b/product-service/get-products.js index 66477b1..d194d9d 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 () => { - const products = selectAll(); + console.log('getProductsList Started') + const products = await 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..efa19d2 100644 --- a/product-service/serverless.yml +++ b/product-service/serverless.yml @@ -26,6 +26,15 @@ 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 @@ -47,23 +56,23 @@ functions: - X-Amz-Security-Token - X-Amz-User-Agent allowCredentials: false - getProductsById: + getProductById: 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/test/lambda.product.test.js b/product-service/test/lambda.product.test.js index c2c0fb1..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', () => { @@ -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 () => { 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'], +};