39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
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);
|
|
}
|
|
};
|