From ac254986b1a6aad3a879922aec45bdcd52f93c73 Mon Sep 17 00:00:00 2001 From: Ben Ramey Date: Thu, 20 Sep 2018 06:59:22 -0500 Subject: [PATCH] refactor to include both get and post in one function --- handlers/courses/get.js | 16 ---------------- handlers/courses/index.js | 38 ++++++++++++++++++++++++++++++++++++++ handlers/courses/post.js | 16 ---------------- serverless.yml | 7 ++----- 4 files changed, 40 insertions(+), 37 deletions(-) delete mode 100644 handlers/courses/get.js create mode 100644 handlers/courses/index.js delete mode 100644 handlers/courses/post.js diff --git a/handlers/courses/get.js b/handlers/courses/get.js deleted file mode 100644 index 44fffc3..0000000 --- a/handlers/courses/get.js +++ /dev/null @@ -1,16 +0,0 @@ -const {createResponse} = require('../../helpers'); -const db = require('../../services/db'); -const {COURSES_TABLE} = require('../../constants'); - -module.exports.default = async () => { - try { - const courses = await db.scan(COURSES_TABLE); - - return createResponse(200, { - courses: courses - }) - } catch (err) { - const statusCode = (err && err.statusCode) || 500; - return createResponse(statusCode, err.message || err); - } -}; diff --git a/handlers/courses/index.js b/handlers/courses/index.js new file mode 100644 index 0000000..e44e6c1 --- /dev/null +++ b/handlers/courses/index.js @@ -0,0 +1,38 @@ +const {createResponse} = require('../../helpers'); +const {parseAndValidateBody} = require('../../validators'); +const courseSchema = require('./schema'); +const {COURSES_TABLE} = require('../../constants'); +const db = require('../../services/db'); + +const get = async (event, context, callback) => { + const courses = await db.scan(COURSES_TABLE); + + return createResponse(200, { + courses: courses + }); +}; + +const post = async (event, context, callback) => { + const course = await parseAndValidateBody(courseSchema, event.body); + const createCourseResult = await db.create(COURSES_TABLE, course); + + return createResponse(200, { + course: createCourseResult + }); +}; + +module.exports.default = async (event, context, callback) => { + try { + + if (event.httpMethod === "GET") { + return get(event, context, callback); + } + if (event.httpMethod === "POST") { + return post(event, context, callback); + } + + } catch (err) { + const statusCode = (err && err.statusCode) || 500; + return createResponse(statusCode, err.message || err); + } +}; diff --git a/handlers/courses/post.js b/handlers/courses/post.js deleted file mode 100644 index 51ea121..0000000 --- a/handlers/courses/post.js +++ /dev/null @@ -1,16 +0,0 @@ -const {createResponse} = require('../../helpers'); -const {parseAndValidateBody} = require('../../validators'); -const courseSchema = require('./schema'); -const {COURSES_TABLE} = require('../../constants'); -const db = require('../../services/db'); - -module.exports.default = async (event, context, callback) => { - try { - const course = await parseAndValidateBody(courseSchema, event.body); - const createCourseResult = await db.create(COURSES_TABLE, course); - return createResponse(200, {course: createCourseResult}); - } catch (err) { - const statusCode = (err && err.statusCode) || 500; - return createResponse(statusCode, err.message || err); - } -}; diff --git a/serverless.yml b/serverless.yml index 71810e8..afb31e8 100644 --- a/serverless.yml +++ b/serverless.yml @@ -66,16 +66,13 @@ provider: # - exclude-me-dir/** functions: - courses-get: - handler: handlers/courses/get.default + courses: + handler: handlers/courses.default events: - http: path: courses method: get cors: true - courses-post: - handler: handlers/courses/post.default - events: - http: path: courses method: post