From 0fde28a08a3d82b371cbbf858f462648376a318a Mon Sep 17 00:00:00 2001 From: Kamil Sobol Date: Tue, 15 Aug 2023 11:39:08 -0700 Subject: [PATCH] feat: add list all to lambda crud template (#13116) --- .../src/__tests__/function_2d.test.ts | 11 ++++++++ .../resources/lambda/crud/app.js.ejs | 27 ++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/amplify-e2e-tests/src/__tests__/function_2d.test.ts b/packages/amplify-e2e-tests/src/__tests__/function_2d.test.ts index 338fb49d325..2f881d3a036 100644 --- a/packages/amplify-e2e-tests/src/__tests__/function_2d.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/function_2d.test.ts @@ -110,6 +110,17 @@ describe('nodejs', () => { expect(JSON.parse(response.Payload.toString()).statusCode).toEqual(200); expect(JSON.parse(JSON.parse(response.Payload.toString()).body)).toEqual(item2); + response = await functionCloudInvoke(projRoot, { + funcName, + payload: JSON.stringify({ + path: '/item', + httpMethod: 'GET', + }), + }); + expect(JSON.parse(response.Payload.toString()).statusCode).toEqual(200); + expect(JSON.parse(JSON.parse(response.Payload.toString()).body)).toContainEqual(item1); + expect(JSON.parse(JSON.parse(response.Payload.toString()).body)).toContainEqual(item2); + response = await functionCloudInvoke(projRoot, { funcName, payload: JSON.stringify({ diff --git a/packages/amplify-nodejs-function-template-provider/resources/lambda/crud/app.js.ejs b/packages/amplify-nodejs-function-template-provider/resources/lambda/crud/app.js.ejs index c0a20579713..811d723c888 100644 --- a/packages/amplify-nodejs-function-template-provider/resources/lambda/crud/app.js.ejs +++ b/packages/amplify-nodejs-function-template-provider/resources/lambda/crud/app.js.ejs @@ -9,7 +9,7 @@ See the License for the specific language governing permissions and limitations <%= props.topLevelComment %> const { DynamoDBClient } = require('@aws-sdk/client-dynamodb'); -const { DeleteCommand, DynamoDBDocumentClient, GetCommand, PutCommand, QueryCommand, } = require('@aws-sdk/lib-dynamodb'); +const { DeleteCommand, DynamoDBDocumentClient, GetCommand, PutCommand, QueryCommand, ScanCommand } = require('@aws-sdk/lib-dynamodb'); const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware') const bodyParser = require('body-parser') const express = require('express') @@ -55,9 +55,28 @@ const convertUrlType = (param, type) => { } } -/******************************** - * HTTP Get method for list objects * - ********************************/ +/************************************ +* HTTP Get method to list objects * +************************************/ + +app.get(path, async function(req, res) { + var params = { + TableName: tableName, + Select: 'ALL_ATTRIBUTES', + }; + + try { + const data = await ddbDocClient.send(new ScanCommand(params)); + res.json(data.Items); + } catch (err) { + res.statusCode = 500; + res.json({error: 'Could not load items: ' + err.message}); + } +}); + +/************************************ + * HTTP Get method to query objects * + ************************************/ app.get(path + hashKeyPath, async function(req, res) { const condition = {}