postCtrl.js
Wed Nov 03 2021 13:19:51 GMT+0000 (Coordinated Universal Time)
Saved by @devdave
// [=>] IMPORT SECT.
// -
// User model
const { User, Post, Comment, Like } = require("../config/database");
// File system
const fs = require("fs");
// dotEnv variables
const dotEnv = require("dotenv").config({ path: "./config/.env" });
// [=>] DISPLAY [ALL] Posts
// -
exports.findAll = async function (req, res, next) {
try {
console.log("=> findAll function");
const posts = await Post.findAll({
order: [["createdAt", "DESC"]],
include: [
{ model: User },
{ model: Comment, include: [{ model: User }] },
{ model: Like },
],
});
res.status(200).json(posts);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
// [=>] DISPLAY [ONE] Post
// -
exports.findOne = async function (req, res, next) {
try {
console.log("=> findOne function");
let id = req.params.id;
const post = await Post.findByPk(id, {
include: [{ model: Like }],
});
res.status(200).json(post);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
// [=>] DISPLAY [user] Post
// -
exports.findByUser = async function (req, res, next) {
console.log("=> findByUser function");
try {
const posts = await Post.findAll({
where: { UserId: req.params.id },
order: [["createdAt", "DESC"]],
include: [
{ model: User },
{ model: Comment, include: [{ model: User }] },
{ model: Like },
],
});
res.status(200).json(posts);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
exports.createOne = async function (req, res, next) {
console.log("=> Create Post Function");
let postObject = req.body;
if (req.file) {
postObject = JSON.parse(req.body.post);
postObject.imageUrl = `${req.protocol}://${req.get("host")}/images/${
req.file.filename
}`;
}
try {
let post = await Post.create({
...postObject,
userId: req.user.id,
});
post = await Post.findOne({
where: { id: post.id },
include: [{ model: User }],
});
res.status(201).json({ post });
} catch (error) {
res.status(500).json({ message: error.message });
}
};
// [=>] UPDATE Post
// -
exports.updateOne = async function (req, res, next) {
console.log("=> UPDATE POST Function");
try {
const post = await Post.findByPk(req.params.id);
post.content = req.body.content;
post.imageUrl = req.body.imageUrl;
await post.save();
res.status(200).json(post);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
// [=>] DELETE Post
// -
exports.deleteOne = async function (req, res, next) {
console.log("=> DELETE POST Function");
try {
const post = await Post.findByPk(req.params.id);
post.destroy();
res.status(200).end();
} catch (error) {
res.status(500).json({ message: error.message });
}
};



Comments