From 07e4a27a1a12cb8f56813496d9147f25eb859b3c Mon Sep 17 00:00:00 2001 From: Ben Ramey Date: Wed, 19 Sep 2018 06:16:25 -0500 Subject: [PATCH] courses get and post --- handlers/courses/get.js | 3 +-- handlers/courses/post.js | 15 +++++++++++++++ serverless.yml | 9 ++++++++- validators/schemas.js | 27 +++++++++++++-------------- 4 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 handlers/courses/post.js diff --git a/handlers/courses/get.js b/handlers/courses/get.js index 051677f..a54965c 100644 --- a/handlers/courses/get.js +++ b/handlers/courses/get.js @@ -11,6 +11,5 @@ module.exports.default = async () => { } 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 new file mode 100644 index 0000000..3205f90 --- /dev/null +++ b/handlers/courses/post.js @@ -0,0 +1,15 @@ +const {createResponse} = require('../../helpers'); +const {parseAndValidateBody} = require('../../validators'); +const {courseSchema} = require('../../validators/schemas'); +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('gt_courses', 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 c266ed8..71810e8 100644 --- a/serverless.yml +++ b/serverless.yml @@ -66,13 +66,20 @@ provider: # - exclude-me-dir/** functions: - courses: + courses-get: handler: handlers/courses/get.default events: - http: path: courses method: get cors: true + courses-post: + handler: handlers/courses/post.default + events: + - http: + path: courses + method: post + cors: true # The following are a few example events you can configure # NOTE: Please make sure to change your handler code to work with those events diff --git a/validators/schemas.js b/validators/schemas.js index 1b73ca3..1a1142e 100644 --- a/validators/schemas.js +++ b/validators/schemas.js @@ -1,16 +1,15 @@ -// const answerSchema = { -// "type": "object", -// "properties": { -// "user_id": {"type": "string"}, -// "question_id": {"type": "string"}, -// "is_correct": {"type": "boolean"} -// }, -// "required": ["user_id", "question_id", "is_correct"] -// }; - -module.exports = { - answerSchema, - userSchema, - loginFollowUpSchema +const courseSchema = { + "type": "object", + "properties": { + "course_name": {"type": "string"}, + "num_tests": {"type": "number"}, + "num_questions_per_test": {"type": "number"}, + "answers": {"type": "array"} + }, + "required": ["course_name", "num_tests", "num_questions_per_test", "answers"] +}; + +module.exports = { + courseSchema };