mirror of
https://github.com/UniversityOfHelsinkiCS/ohtuilmo.git
synced 2026-10-12 19:03:41 +03:00
Merge master
This commit is contained in:
@@ -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' })
|
||||
})
|
||||
|
||||
@@ -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' })
|
||||
|
||||
@@ -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
@@ -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' })
|
||||
})
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Generated
+437
-963
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user