Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

80 create endpoints for activity type #107

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
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
5 changes: 4 additions & 1 deletion server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const dotenv = require("dotenv");

///////////////////////////////////////////// Configurations ////////////////////////////////////////
const User = require('./models/user.model'); // register schema for model User
const ActivityType = require('./models/ActivityType.model'); // register schema for model Activity Type
Sooraj-beep marked this conversation as resolved.
Show resolved Hide resolved

const app = express();

Expand All @@ -20,6 +21,7 @@ const password = process.env.MONGO_PASSWORD;
const mongoURI = "mongodb+srv://" + username + ":" + password + "@cluster0.dxhaxm8.mongodb.net/?retryWrites=true&w=majority";
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Sooraj-beep marked this conversation as resolved.
Show resolved Hide resolved
//////////////////////////// Database connection /////////////////////////
mongoose.connect(mongoURI)
.then(
Expand All @@ -31,6 +33,7 @@ mongoose.connect(mongoURI)

///////////////////// Import routes ////////////////////
const userRouter = require('./routes/user.route');
const activityTypeRouter = require('./routes/ActivityType.route');
///////////////////////////////////////////////////////


Expand All @@ -40,14 +43,14 @@ app.use(cors());
app.use(express.json());

app.use('/user', userRouter);
app.use('/activity_types', activityTypeRouter);

app.use((req, res) => {
res.status(404).send({url: req.originalUrl + 'not found'});
});
////////////////////////////////////////////////////////////////////////////////////////////////////////



///////// Exports /////////
module.exports = app;
//////////////////////////
61 changes: 61 additions & 0 deletions server/controllers/ActivityType.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
///////////////////////////// Import dependencies ///////////////////////////////
const ActivityType = require('../models/ActivityType.model');
/////////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////// CRUD Callbacks for Activity Types ///////////////////////////////////////////
exports.getAllActivityTypes = (req, res) => {
Sooraj-beep marked this conversation as resolved.
Show resolved Hide resolved
ActivityType.find({}, (err, types) => {
if (err) {return res.status(400).json({ message: `Failed to find activity types. ${err}` });}
else {
if (types.length === 0) {return res.status(404).json({ message: "No activity type exists." });}
else {
return res.status(200).json({ success: true, activity_types: types.map((typeObject) => {return typeObject.name;}) });
}
}
});
}

exports.createNewActivityType = (req, res) => {
Sooraj-beep marked this conversation as resolved.
Show resolved Hide resolved
const activityTypeName = req.body.activityTypeName;
const newActivityType = new ActivityType({ name: activityTypeName });
newActivityType.save(
(err) => {
if (err) {
return res.status(400).send({message: `Failed to save new activity type. ${err}`});
}
else {
return res.json({success: true, name: activityTypeName});
}
}
);
}

exports.updateActivityType = (req, res) => {
Sooraj-beep marked this conversation as resolved.
Show resolved Hide resolved
const activityTypeName = req.body.activityTypeName;
const newActivityTypeName = req.body.newActivityTypeName;
ActivityType.findOneAndUpdate(
{ name: activityTypeName },
{ $set: {name: newActivityTypeName} },
(err, updatedActivityType) => {
if (err) {return res.status(400).json({ message: `Failed to update activity type. ${err}` });}
else {
return res.status(200).json({ success: true, name: updatedActivityType.name });
}
}
);
}

exports.deleteActivityType = (req, res) => {
Sooraj-beep marked this conversation as resolved.
Show resolved Hide resolved
const activityTypeToDelete = req.body.activityTypeName;
ActivityType.findOneAndDelete(
{ name: activityTypeToDelete },
(err) => {
if (err) {return res.status(400).json({ message: `Failed to delete activity type. ${err}` });}
else {
return res.status(200).json({ success: true, deleted_activity: activityTypeToDelete});
}
}
);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2 changes: 1 addition & 1 deletion server/controllers/user.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const NewUserCreator = require('../services/NewUserCreator');
/////////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////// Functions to be executed for HTTP routes ///////////////////////////////////////////
/////////////////////////////////////////// Callbacks to be executed for HTTP routes ///////////////////////////////////////////
exports.register = (req, res) => {
const username = req.body.username;
const role = req.body.role;
Expand Down
21 changes: 21 additions & 0 deletions server/models/ActivityType.model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
////////////// Import dependencies //////
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
////////////////////////////////////////


//////// Create a database model //////
const ActivityTypeSchema = new Schema({
name: {
type: String,
unique: true,
trim: true,
required: true,
},
});
//////////////////////////////////////


/////////////////////////////// Exports /////////////////////////////
module.exports = mongoose.model('ActivityType', ActivityTypeSchema);
////////////////////////////////////////////////////////////////////
25 changes: 25 additions & 0 deletions server/routes/ActivityType.route.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/////////////////////// Import dependencies /////////////////////
const express = require('express');
const activityTypeController = require('../controllers/ActivityType.controller');
const router = express.Router();
/////////////////////////////////////////////////////////////////


/////////////////////////// Routes ///////////////////////////
router.route('/all')
.get(activityTypeController.getAllActivityTypes);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will need API_KEY verification called before crud operations can run for all routes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done with JWT instead.


router.route('/create')
.post(activityTypeController.createNewActivityType);

router.route('/update')
.put(activityTypeController.updateActivityType);

router.route('/delete')
.delete(activityTypeController.deleteActivityType);
//////////////////////////////////////////////////////////////


///////// Exports /////////
module.exports = router;
//////////////////////////
5 changes: 4 additions & 1 deletion server/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ const app = require('./app');
const dotenv = require("dotenv");
/////////////////////////////////////////////////


/////////////////////////////////// Configurations //////////////////////////////////
dotenv.config(); // allow access to .env file

const port = process.env.PORT || 5000;

app.listen(port, () => console.log('RESTful API server started on: ' + port + '.'));
app.listen(port, () => console.log('RESTful API server started on: ' + port + '.'));
///////////////////////////////////////////////////////////////////////////////////