post creation and adding ribbon functionality

This commit is contained in:
Arjun Patel
2019-04-12 11:51:33 -07:00
parent ee52f38d48
commit a43e1d8dfd
5 changed files with 100 additions and 3 deletions
+2 -1
View File
@@ -10,5 +10,6 @@ module.exports = {
auth: require('./auth.controller'),
charge: require('./charge.controller'),
project: require('./project.controller'),
image: require('./image.controller')
image: require('./image.controller'),
post: require('./post.controller')
};
+54
View File
@@ -0,0 +1,54 @@
const db = require('../../models'),
errorMaker = require('../helpers/error.maker'),
textCleaner = require('../helpers/text_cleaner');
const { Post, sequelize } = db;
exports.createStatusUpdate = async (req, res, next) => {
const { text } = req.body;
try {
const organization_id = req.user.id;
console.log(organization_id);
const post = await Post.create({ text, organization_id });
return res.status(201).json(post);
} catch (error) {
next(error);
}
};
// query params: {postId}
exports.addRibbon = async (req, res, next) => {
const { update_id } = req.params;
try {
const posts = await sequelize.query(
`
SELECT num_ribbons
FROM posts
WHERE id = :update_id`,
{ type: db.Sequelize.QueryTypes.SELECT, replacements: { update_id } }
);
const newNumRibbons = posts[0].num_ribbons + 1;
const update = await sequelize.query(
`
UPDATE posts
SET num_ribbons = :newNumRibbons
WHERE id = :update_id`,
{
type: db.Sequelize.QueryTypes.UPDATE,
replacements: { newNumRibbons, update_id }
}
);
return res
.status(200)
.json({ message: 'Successfully added ribbon to post!' });
} catch (error) {
next(error);
}
};
+8 -1
View File
@@ -8,7 +8,8 @@ const {
grant,
stripe,
organization,
charge
charge,
post
} = require('../controllers');
// POST donor signup
@@ -54,6 +55,12 @@ router.get('/dashboard', checkAuth(roles.DONOR), donor.getDashboardData);
router.get('/charges', checkAuth(roles.DONOR), charge.getAllChargesbyDonor);
router.put(
'/statusupdate/ribbon/:update_id',
checkAuth(roles.DONOR),
post.addRibbon
);
// // Retrieve a single Donor by Id
// router.get('/:donor_id', donor.findById);
+8 -1
View File
@@ -9,7 +9,8 @@ const {
region,
stripe,
project,
image
image,
post
} = require('../controllers');
// Charity signup route
@@ -34,6 +35,12 @@ router.get(
router.post('/project', checkAuth(roles.ORGANIZATION), project.createProject);
router.post(
'/statusupdate',
checkAuth(roles.ORGANIZATION),
post.createStatusUpdate
);
// // Add cause
// router.post('/cause', checkAuth(roles.ORGANIZATION), cause.createCause);
+28
View File
@@ -0,0 +1,28 @@
const Organization = require('./Organization');
module.exports = (sequelize, DataTypes) => {
const Post = sequelize.define('Post', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
text: {
type: DataTypes.STRING(350),
allowNull: false
},
organization_id: {
type: DataTypes.UUID,
allowNull: false,
references: {
model: Organization(sequelize, DataTypes),
key: 'id'
}
},
num_ribbons: {
type: DataTypes.INTEGER,
defaultValue: 0
}
});
return Post;
};