Merge master

This commit is contained in:
vipeeri
2018-11-02 14:58:26 +02:00
10 changed files with 550 additions and 990 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ groupsRouter.post('/', checkLogin, (req, res) => {
.then(group => {
res.status(200).json({ group })
})
.error(error => {
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
+1 -1
View File
@@ -54,7 +54,7 @@ loginRouter.post('/', async (req, res) => {
token,
user: savedUser
})
}).error((error) => {
}).catch((error) => {
//error saving to database
console.log(error)
res.status(500).json({ error: 'database error' })
+63
View File
@@ -0,0 +1,63 @@
const membershipRouter = require('express').Router()
const db = require('../models/index')
const checkLogin = require('../utils/middleware/checkLogin').checkLogin
function checkIfValidRole(role) {
var roles = ['student', 'teacher']
if (roles.includes(role)) return true
return false
}
membershipRouter.post('/', checkLogin, (req, res) => {
if (!req.body.student_number) return res.status(400).json({ error: 'student_number undefined' })
if (!req.body.group_id) return res.status(400).json({ error: 'group_id undefined' })
if (!req.body.role) return res.status(400).json({ error: 'role undefined' })
if (!checkIfValidRole(req.body.role)) return res.status(400).json({ error: 'invalid role' })
db.User.findOne({ where: { student_number: req.body.student_number } })
.then(user => {
if (!user) return res.status(400).json({ error: 'user not found' })
db.Group.findById(req.body.group_id)
.then(group => {
if (!group) return res.status(400).json({ error: 'group not found' })
db.Membership.findOne({
where: {
student_number: req.body.student_number,
group_id: req.body.group_id
}
})
.then(membership => {
if (membership) return res.status(400).json({ error: 'user is already in that group' })
db.Membership.create({
group_id: req.body.group_id,
student_number: req.body.student_number,
role: req.body.role
})
.then(group => {
return res.status(200).json({ group })
})
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
module.exports = membershipRouter
+28 -1
View File
@@ -1,7 +1,10 @@
const topicsRouter = require('express').Router()
const db = require('../models/index')
const checkLogin = require('../utils/middleware/checkLogin').checkLogin
<<<<<<< HEAD
=======
>>>>>>> master
topicsRouter.post('/', (req, res) => {
if (!req.body.content) return res.status(400).json({ error: 'content undefined' })
@@ -11,7 +14,31 @@ topicsRouter.post('/', (req, res) => {
.then(topic => {
res.status(200).json({ topic })
})
.error(error => {
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
topicsRouter.put('/:id', checkLogin, (req, res) => {
db.Topic.findById(req.params.id)
.then(topic => {
if (!topic) return res.status(400).json({ error: 'no topic with that id' })
topic.update({
active: req.body.active,
content: req.body.content
})
.then(topic => {
topic.reload().then(topic => {
res.status(200).json({ topic })
})
})
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
.catch(error => {
console.log(error)
res.status(500).json({ error: 'database error' })
})
+2
View File
@@ -16,10 +16,12 @@ app.use(logger)
const examplesRouter = require('./controllers/examples')
const loginRouter = require('./controllers/login')
const groupsRouter = require('./controllers/groups')
const membershipRouter = require('./controllers/memberships')
const topicsRouter = require('./controllers/topics')
app.use('/api/examples', examplesRouter)
app.use('/api/login', loginRouter)
app.use('/api/groups', groupsRouter)
app.use('/api/memberships', membershipRouter)
app.use('/api/topics', topicsRouter)
// Database connection
+7 -2
View File
@@ -27,21 +27,26 @@ db.connect = () => {
const UserModel = require('./user')
const GroupModel = require('./group')
const MembershipModel = require('./membership')
const TopicModel = require('./topic')
//const Review = require('./review')
//const Review_answer = require('./review_answer')
const User = UserModel(sequelize, Sequelize)
const Group = GroupModel(sequelize, Sequelize)
const Membership = MembershipModel(sequelize, Sequelize)
const Topic = TopicModel(sequelize, Sequelize)
db.User = User
db.Group = Group
db.Membership = Membership
db.Topic = Topic
db.User.associate(db)
db.Group.associate(db)
db.sequelize = sequelize
db.Sequelize = Sequelize
sequelize.sync()
}, 9000)
}
+5 -14
View File
@@ -2,24 +2,15 @@ module.exports = (sequelize, Sequelize) => {
const Membership = sequelize.define('membership', {
membership_id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
answers: {
type: Sequelize.JSONB
role: {
type: Sequelize.STRING
}
}, {
underscored: true
})
Membership.associate = (models) => {
Membership.hasOne(models.Group, {
foreignKey: 'group_id',
})
}
Membership.associate = (models) => {
Membership.hasOne(models.User, {
foreignKey: 'student_number',
})
}
return Membership
}
+5 -7
View File
@@ -1,3 +1,4 @@
'use strict'
module.exports = (sequelize, Sequelize) => {
const User = sequelize.define('user', {
student_number: {
@@ -25,14 +26,11 @@ module.exports = (sequelize, Sequelize) => {
User.associate = (models) => {
User.hasMany(models.Membership, {
foreignKey: 'student_number',
as: 'memberships',
})
}
User.associate = (models) => {
User.hasOne(models.Review_answer, {
foreignKey: 'review_answer_id',
as: 'Memberships',
})
// User.hasOne(models.Review_answer, {
// foreignKey: 'review_answer_id',
// })
}
return User
+437 -963
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -42,7 +42,7 @@
"cross-env": "^5.1.4",
"eslint": "^5.6.1",
"husky": "^1.1.1",
"nodemon": "^1.17.2"
"nodemon": "^1.18.5"
},
"husky": {
"hooks": {