├── hexalDelete.js ├── hexalGetItems.js ├── hexalPut.js └── hexalUpdateItem.js /hexalDelete.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | const { id } = event.pathParameters; 11 | 12 | const params = { 13 | TableName: "Products", 14 | Key: { 15 | id: id 16 | } 17 | }; 18 | 19 | try { 20 | const data = await documentClient.delete(params).promise(); 21 | responseBody = JSON.stringify(data); 22 | statusCode = 204; 23 | } catch(err) { 24 | responseBody = `Unable to delete product: ${err}`; 25 | statusCode = 403; 26 | } 27 | 28 | const response = { 29 | statusCode: statusCode, 30 | headers: { 31 | "Content-Type": "application/json" 32 | }, 33 | body: responseBody 34 | }; 35 | 36 | return response; 37 | }; -------------------------------------------------------------------------------- /hexalGetItems.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | const params = { 11 | TableName: "Products" 12 | }; 13 | 14 | try { 15 | const data = await documentClient.scan(params).promise(); 16 | responseBody = JSON.stringify(data.Items); 17 | statusCode = 200; 18 | } catch(err) { 19 | responseBody = `Unable to get products: ${err}`; 20 | statusCode = 403; 21 | } 22 | 23 | const response = { 24 | statusCode: statusCode, 25 | headers: { 26 | "Content-Type": "application/json" 27 | }, 28 | body: responseBody 29 | }; 30 | 31 | return response; 32 | }; -------------------------------------------------------------------------------- /hexalPut.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | const { id, productname } = JSON.parse(event.body); 11 | 12 | const params = { 13 | TableName: "Products", 14 | Item: { 15 | id: id, 16 | productname: productname 17 | } 18 | }; 19 | 20 | try { 21 | const data = await documentClient.put(params).promise(); 22 | responseBody = JSON.stringify(data); 23 | statusCode = 201; 24 | } catch(err) { 25 | responseBody = `Unable to put product: ${err}`; 26 | statusCode = 403; 27 | } 28 | 29 | const response = { 30 | statusCode: statusCode, 31 | headers: { 32 | "Content-Type": "application/json" 33 | }, 34 | body: responseBody 35 | }; 36 | 37 | return response; 38 | }; -------------------------------------------------------------------------------- /hexalUpdateItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | const { id, productname } = JSON.parse(event.body); 11 | 12 | const params = { 13 | TableName: "Products", 14 | Key: { 15 | id: id 16 | }, 17 | UpdateExpression: "set productname = :n", 18 | ExpressionAttributeValues: { 19 | ":n": productname 20 | }, 21 | ReturnValues: "UPDATED_NEW" 22 | }; 23 | 24 | try { 25 | const data = await documentClient.update(params).promise(); 26 | responseBody = JSON.stringify(data); 27 | statusCode = 204; 28 | } catch(err) { 29 | responseBody = `Unable to update product: ${err}`; 30 | statusCode = 403; 31 | } 32 | 33 | const response = { 34 | statusCode: statusCode, 35 | headers: { 36 | "Content-Type": "application/json" 37 | }, 38 | body: responseBody 39 | }; 40 | 41 | return response; 42 | }; --------------------------------------------------------------------------------