Node/modules/blogs/middlewares/proccess.js

68 lines
2.2 KiB
JavaScript

const { buildDatetime } = require("../../../middlewares/general/datatime");
exports.editedListPosts = async function(blogs, reBlogs){
const blogsId = blogs.map(get => get.id);
const reBlogsId = new Array();
const result = new Array(...blogs);
reBlogs.map(res => {
if(res.blog){
editedReBlog(res);
if(!blogsId.includes(res.blog.id) && !reBlogsId.includes(res.blog.id)){
res.blog.dataValues.reblog = true;
res.blog.dataValues.reUser = res.user;
result.push(res.blog);
reBlogsId.push(res.blog.id);
};
};
});
result.map(res => {
editedPost(res);
});
result.sort((a, b) => {
aDate = (a.dataValues.reblog === true) ? a.dataValues.reBlog.date.createdAt.default : a.dataValues.date.createdAt.default;
bDate = (b.dataValues.reblog === true) ? b.dataValues.reBlog.date.createdAt.default : b.dataValues.date.createdAt.default;
return bDate - aDate;
});
return result;
};
const editedPost = function(data){
data.dataValues.date = new Object();
data.dataValues.date.createdAt = buildDatetime({date: data.createdAt});
data.dataValues.date.updatedAt = buildDatetime({date: data.updatedAt});
data.dataValues.date.createdAt.default = data.createdAt;
data.dataValues.date.updatedAt.default = data.updatedAt;
};
exports.editedPost = editedPost;
const editedReBlog = function(data){
data.blog.dataValues.reBlog = new Object({
date: new Object()
});
data.blog.dataValues.reBlog.date.createdAt = buildDatetime({date: data.createdAt});
data.blog.dataValues.reBlog.date.updatedAt = buildDatetime({date: data.updatedAt});
data.blog.dataValues.reBlog.date.createdAt.default = data.createdAt;
data.blog.dataValues.reBlog.date.updatedAt.default = data.updatedAt;
};
exports.editedReBlog = editedReBlog;
const startAndEndDates = function(blogs, endDate){
if(blogs.length > 0){
return {
status: true,
startDate: (endDate) ?? blogs[0].createdAt,
endDate: blogs[blogs.length - 1].createdAt
};
}else {
return {
status: false
};
};
};
exports.startAndEndDates = startAndEndDates;