Files
cm-app-comment/index.js

129 lines
3.0 KiB
JavaScript

const Sequelize = require('sequelize');
const sequelize = new Sequelize('mysql://alex:alex88003@localhost:3306/crossmap_dev', {
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
});
const express = require("express");
const bodyParser = require('body-parser');
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
class Comment extends Sequelize.Model { }
Comment.init({
commentID: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
postID: Sequelize.INTEGER,
userID: Sequelize.INTEGER,
parentID: Sequelize.INTEGER,
comment: Sequelize.STRING,
like_count: Sequelize.INTEGER,
bad_count: Sequelize.INTEGER,
datePosted: Sequelize.DATE,
dateUpdated: Sequelize.DATE,
dateDeleted: Sequelize.DATE
}, { sequelize, modelName: 'cm_comment', freezeTableName: true, timestamps: false });
var app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.listen(20002, () => {
console.log("Server running on port 20002");
});
/**
* Encrypts a password using sha256 and a salt value.
*
* @param password The password to hash.
* @param salt The salt value to hash with.
*/
function SHA256Encrypt(password, salt) {
var saltedpassword = salt + password;
var sha256 = crypto.createHash('sha256');
sha256.update(saltedpassword);
return sha256.digest('base64');
}
/**
* Validates a password sent by an end user by comparing it to the
* hashed password stored in the database.
*
* @param password The password sent by the end user.
* @param dbPassword The hashed password stored in the database, encoded in Base64.
* @param dbSalt The encryption salt stored in the database. This should be a raw blob.
*/
function validatePassword(password, dbPassword, dbSalt) {
var hashed = SHA256Encrypt(password, dbSalt.toString('binary'));
return hashed === dbPassword;
}
app.get('/v1/comments/:siteKey/:postID', (req, res, next) => {
var siteKey = req.params.siteKey;
Comment.findAll({ where: { postID: req.params.postID } }).then(comment => {
res.json(comment);
})
})
app.put('/v1/comment/:commentID', (req, res, next) => {
console.log(req.body)
Comment.update(
{
comment: req.body.comment,
},
{
where: {
commentID: req.params.commentID
}
}
).then(updated => {
res.json({
code: 200
});
});
})
app.delete('/comment', (req, res, next) => {
Comment.update(
{
dateDeleted: Date.now(),
},
{
where: {
commentID: req.params.commentID
}
}
).then(updated => {
res.json({
code: 200
});
});
})
app.post('/comment', (req, res, next) => {
Comment.findOne({ where: { commentID: 1 } }).then(comment => {
res.json(comment);
})
})