Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
83e5a07
[Chore #163415675] Remove admin modules
oldmonad Jan 23, 2019
5fdc56c
[Chore #163415675] Added module for custom error messages
oldmonad Jan 23, 2019
4620b3c
[Chore #163415675] Added module for formatting responses
oldmonad Jan 23, 2019
9233b2f
[Chore #163415675] Added a try-catch module
oldmonad Jan 23, 2019
10f6ed5
[Chore #163415675] Validated signup route
oldmonad Jan 23, 2019
c5cfbe8
[Chore #163415675] Validated signup route
oldmonad Jan 23, 2019
6482f88
[Chore #163415675] Validated login route and rearranged route flow
oldmonad Jan 23, 2019
47d0e53
[Chore #163415675] Refactored the sign up controller to use custom er…
oldmonad Jan 23, 2019
10123fd
[Chore #163415675] Refactored the login controller to use custom erro…
oldmonad Jan 23, 2019
5cf3065
[Chore #163415675] Removed admin modules from test files
oldmonad Jan 23, 2019
5cdd95b
[Chore #163415664] Added script for seeding admin
oldmonad Jan 23, 2019
31344c4
[Chore #163415664] Added validation for questions user input
oldmonad Jan 23, 2019
8f852f1
[Chore #163415664] Updated auth key settings
oldmonad Jan 23, 2019
5fc6804
[Chore #163415664] Updated auth key settings
oldmonad Jan 23, 2019
393f447
[Bug #163415664] Fix .env issue
oldmonad Jan 23, 2019
d3080d4
[Bug #163415664] Fix .env issue
oldmonad Jan 23, 2019
2ff5cfc
[Feature #163421750] Added delete meetup functionality
oldmonad Jan 24, 2019
a52c433
[Chore #163421750] Added tryCatch module to routes
oldmonad Jan 24, 2019
0422e58
[Chore #163421750] Added default routes m
oldmonad Jan 24, 2019
d46cd21
[Chore ] amended import order in mygrationCreate file
oldmonad Jan 24, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
534 changes: 518 additions & 16 deletions package-lock.json

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"eslint-plugin-import": "^2.14.0",
"istanbul": "^0.4.5",
"mocha": "^5.2.0",
"nodemon": "^1.18.9",
"nyc": "^13.1.0",
"supertest": "^3.3.0"
},
Expand All @@ -63,6 +64,7 @@
"moment": "^2.23.0",
"morgan": "^1.9.1",
"pg": "^7.8.0",
"uuid": "^3.3.2"
"uuid": "^3.3.2",
"validatorjs": "^3.15.1"
}
}
}
38 changes: 14 additions & 24 deletions server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,47 +7,37 @@ import bodyParser from 'body-parser';

// Set up express app
const app = express();
import expressValidation from 'express-validation';
import userRoutes from './routes/user';
import AdminRoutes from './routes/admin';
import meetupRoutes from './routes/meetups';
import questionsRoute from './routes/questions';
// import commentRoutes from './routes/comments';
import routes from './routes';

// Log requests to the console
app.use(logger('dev'));


// Parse incoming request data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false,
}));

app.use('/api/v1/admin', AdminRoutes);
app.use('/api/v1', userRoutes);
app.use('/api/v1/meetups', meetupRoutes);
app.use('/api/v1/questions', questionsRoute);
// app.use('api/v1/comments', commentRoutes);
app.use('/api/v1', routes);

app.all('/api/v1', (req, res) => {
res.status(200).json({
status: 200,
message: 'Welcome to the Questioner API.',
});
});

app.all('/*', (req, res) => res.status(404).json({
status: 404,
message: 'This route does not exist you might want to check your route specification on postman.',
}));

app.use((req, res, next) => {
const error = new Error('Invalid route');
error.status = 404;
next(error);
});

app.use((error, req, res, next) => {
if (error instanceof expressValidation.ValidationError) {
res.status(error.status).json(error);
} else {
res.status(500)
.json({
status: error.status,
message: error.messages,
});
}
});

app.use((error, req, res) => {
res.status(error.status || 500);
res.json({
Expand Down
79 changes: 0 additions & 79 deletions server/controller/admin.js

This file was deleted.

38 changes: 20 additions & 18 deletions server/controller/comments.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
/* eslint-disable eol-last */
// import CommentsModel from '../models/comments';
// import QuestionModel from '../models/question';
import QuestionModel from '../models/question';

// const commentsController = {
const commentsController = {

// async createComment(req, res) {
// const comment = req.body;
// const checkquestion = await QuestionModel.getcommentById(comment.commentId);
// if (!checkquestion) {
// res.status(404).json({
// status: 404,
// error: 'comment does not exist',
// });
async createComment(req, res) {
const comment = req.body;
const checkquestion = await QuestionModel.getcommentById(comment.commentId);
if (!checkquestion) {
res.status(404).json({
status: 404,
error: 'comment does not exist',
});

// comment.title = checkquestion.title;
// comment.body = checkquestion.body;
// comment.userid = req.user.id;
comment.title = checkquestion.title;
comment.body = checkquestion.body;
comment.userid = req.user.id;

// const newComment = new CommentsModel(comment);
// const createdComment = await CommentsModel.createComment(newComment);
// }
// },
// };
const newComment = new CommentsModel(comment);
const createdComment = await CommentsModel.createComment(newComment);
}
},
};

export default commentsController;
76 changes: 25 additions & 51 deletions server/controller/meetups.js
Original file line number Diff line number Diff line change
@@ -1,51 +1,27 @@
/* eslint-disable eol-last */
import MeetupModels from '../models/meetup';
import {
errorResponse,
successResponse,
} from '../utilities/responseformat';


const MeetupController = {

async createMeetup(req, res) {
const {
topic,
location,
date,
image,
tags,
} = req.body;

const formatedTags = tags.trim().split('');

const newMeetUp = {
topic,
location,
date,
image,
formatedTags,
};

const meetupData = new MeetupModels(newMeetUp);
const meetupData = new MeetupModels(req.body);
const createdMeetup = await meetupData.createMeetup();
res.status(201).json({
status: 201,
message: 'Meetup created',
data: createdMeetup,
});
return successResponse(res, 201, 'Meetup created', createdMeetup);
},

async getAllMeetups(req, res) {
const allMeetups = await MeetupModels.retrieveAllMeetups();

if (allMeetups.length === 0) {
res.status(204).json({
status: 204,
error: 'Empty resource',
});
return errorResponse(res, 204, 'Empty Resource');
}

return res.status(200).json({
status: 200,
data: allMeetups,
});
return successResponse(res, 200, 'All available meetups', allMeetups);
},

async getSingleMeetup(req, res) {
Expand All @@ -55,37 +31,35 @@ const MeetupController = {
const retrievedMeetup = await MeetupModels.retrieveSingleMeetup(id);

if (!retrievedMeetup) {
res.status(404).json({
status: 404,
error: 'Meetup not found',
});
return errorResponse(res, 404, 'Meetup not found');
}

return res.status(200).json({
status: 200,
message: 'Meetup Found!',
data: retrievedMeetup,
});
return successResponse(res, 200, 'Meetup Found', retrievedMeetup);
},

async getUpcomingMeetups(req, res) {
const currentDate = new Date(Date.now() / 1000) + 39;
const currentDate = new Date(Date.now());

const upcomingMeetups = await MeetupModels.retrieveUpcomingMeetups(currentDate);

if (upcomingMeetups.length === 0) {
return res.status(404).json({
status: 404,
err0r: 'No upcoming meetups found',
});
return errorResponse(res, 404, 'No upcoming meetups');
}
return res.status(200).json({
status: 200,
message: 'These are pending meetups',
data: upcomingMeetups,
});

return successResponse(res, 200, 'These are the upcoming meetups', upcomingMeetups);
},


async deleteMeetup(req, res) {
const {
id,
} = req.params;
const meetup = await MeetupModels.retrieveSingleMeetup(id);

if (!meetup) return errorResponse(res, 404, 'Meetup not found.');
await MeetupModels.deleteMeetup(id);
return successResponse(res, 200, 'Meetup deleted successfully.', null);
},
};


Expand Down
15 changes: 6 additions & 9 deletions server/controller/questions.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
/* eslint-disable eol-last */
import Question from '../models/question';
import Meetup from '../models/meetup';
import {
errorResponse,
successResponse,
} from '../utilities/responseformat';

export default {
async createQuestion(req, res) {
Expand All @@ -13,17 +17,10 @@ export default {

const meetupExists = await Meetup.retrieveSingleMeetup(question.meetupid);
if (!meetupExists) {
return res.status(404).json({
status: 404,
error: 'Meetup not found',
});
return errorResponse(res, 404, 'Meetup not found');
}

const newQuestion = await question.postQuestion();
return res.status(201).json({
status: 201,
message: 'Question created',
data: [newQuestion],
});
return successResponse(res, 201, 'Question created', newQuestion);
},
};
Loading