socialbot/routes/message.js

108 lines
2.6 KiB
JavaScript
Raw Normal View History

2022-02-07 07:29:07 +01:00
var express = require('express');
const db = require('../models');
var router = express.Router();
2022-02-11 21:36:43 +01:00
var lib = require('../lib');
2022-02-13 21:48:01 +01:00
var Message = db.Message;
var User = db.User;
var Op = db.Sequelize.Op;
async function getAllMessages(user) {
if(user) {
var follows = await user.getFollow();
var timelineMessages = [];
for(var i = 0; i < follows.length; i++) {
timelineMessages[i] = follows[i]
timelineMessages[i].messages = [];
var messages = await follows[i].getMessages();
for(var j = 0; j < messages.length; j++) {
timelineMessages[i].messages.push(messages[j]);
}
}
//var messages = fore
return timelineMessages;
}
}
2022-02-11 21:36:43 +01:00
2022-02-11 21:39:04 +01:00
/* POST a new message */
2022-02-11 21:36:43 +01:00
router.post('/add', async function(req, res, next) {
var sessionId = req.cookies.sessionid;
var user = await lib.getAuthUser(sessionId);
if(user) {
2022-02-23 23:33:17 +01:00
var message = await user.createMessage({ body: req.body.body });
console.log(message);
message.setUser(user);
2022-02-11 21:36:43 +01:00
res.redirect('/');
} else {
res.redirect('/login');
}
});
2022-02-13 21:48:01 +01:00
router.get('/timeline', async function(req, res, next) {
var sessionId = req.cookies.sessionid;
var user = await lib.getAuthUser(sessionId);
var timeline = await getAllMessages(user);
res.send(timeline);
});
router.get('/timeline2', async function(req, res, next) {
var sessionId = req.cookies.sessionid;
var user = await lib.getAuthUser(sessionId);
if(user) {
var follows = await user.getFollow();
var userList = [];
follows.forEach(element => {
userList.push(element.id);
});
var userMessages = await db.User.findAll({
include: Message,
//required: true,
where: {
id: userList,
'$Messages.createdAt$': {
[Op.like]: '2022%',
}
},
});
res.send(userMessages);
} else {
res.redirect('/login');
}
});
2022-02-23 23:33:17 +01:00
router.get('/timeline3', async function(req, res, next) {
var sessionId = req.cookies.sessionid;
var user = await lib.getAuthUser(sessionId);
if(user) {
2022-02-27 23:02:08 +01:00
var follows = await user.getFollow({
attributes: {
include: [
'id',
]
}
});
2022-02-23 23:33:17 +01:00
var userList = [];
2022-02-27 23:02:08 +01:00
userList.push(user.id);
2022-02-23 23:33:17 +01:00
follows.forEach(element => {
userList.push(element.id);
});
var userMessages = await db.Message.findAll({
include: User,
where: {
2022-02-27 23:02:08 +01:00
'$User.id$': {
[Op.in]: userList
}
},
order: [
['updatedAt', 'DESC']
]
2022-02-23 23:33:17 +01:00
});
//console.log(await userMessages[0].getUsers());
res.send(userMessages);
} else {
res.redirect('/login');
}
});
2022-02-07 07:29:07 +01:00
module.exports = router;