First Commit

This commit is contained in:
Luke Vella 2015-01-10 15:43:05 +01:00
commit 2630cc237a
527 changed files with 104273 additions and 0 deletions

View file

@ -0,0 +1,48 @@
var express = require('express');
var Event = require('./event.model');
var debug = require('debug')('myapp');
exports.create = function(req, res){
Event.create(req.body, function(err, event){
if (err) return handleError(res, err);
if (!event) return res.status(404);
return res.json(event);
});
}
exports.show = function(req, res, next){
Event.findById(req.params.id, function(err, event){
if (err) return handleError(res, err);
if (!event) return res.status(404);
return res.json(event);
});
}
exports.createParticipant = function(req, res, next){
var eventId = req.params.id;
var participant = req.body;
Event.findById(eventId, function(err, event){
if (err) return handleError(res, err);
event.participants.push(participant);
event.save(function(err, event){
if (err) return next(err);
res.json(event);
});
});
}
exports.deleteParticipant = function(req, res, next){
var eventId = req.params.id;
var participantId = req.params.pid;
Event.findById(eventId, function(err, event){
if (err) return handleError(res, err);
event.participants.pull({ '_id' : participantId });
event.save(function(err, event){
res.json(event);
})
});
}
function handleError(res, err) {
return res.status(500).send(err);
}

59
api/event/event.model.js Normal file
View file

@ -0,0 +1,59 @@
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var debug = require('debug')('event.model');
var ShortId = require('mongoose-shortid');
var EventSchema = new Schema({
_id : ShortId,
description : String,
creator : {
name : String,
email : String
},
title : String,
dates : [Date],
emails : [String],
participants : [{
id : Schema.Types.ObjectId,
name : String,
dates : [Boolean]
}],
comments : [{
id : Schema.Types.ObjectId,
author : String,
comment : String,
}]
});
var model = mongoose.model('Event', EventSchema);
model.schema
.path('title')
.required('You need to give your event a title');
model.schema
.path('creator.name')
.required('You need to type in your name')
model.schema
.path('creator.email')
.required('You need to type in your email')
.validate(function(email) {
debug("email: " + email);
var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return emailRegex.test(email);
}, 'You need to type in a valid email')
model.schema
.path('dates')
.validate(function(dates){
return dates.length
}, 'You didn\'t select any dates');
model.schema
.path('participants')
.validate(function(participants){
for (var i = 0; i < participants.length; i++){
if (!participants[i].name){
return false;
}
}
return true;
}, 'Participants must have a name')
module.exports = model

11
api/event/index.js Normal file
View file

@ -0,0 +1,11 @@
var express = require('express');
var router = express.Router();
var controller = require('./event.controller');
var debug = require('debug')('api/event/index');
/* GET home page. */
router.post('/', controller.create);
router.get('/:id', controller.show);
router.post('/:id/participant', controller.createParticipant);
router.delete('/:id/participant/:pid', controller.deleteParticipant);
module.exports = router;