hayat / routes /post.js
Mohamed Abu Basith
addded all files
97f53b4
const express = require("express");
const router = express.Router();
const mongoose = require("mongoose");
const multer = require('multer');
const User = require('../Database/models/user');
const Post = require('../Database/models/postNews');
const Comment = require('../Database/models/comments');
const firebase = require("../utils/firebase")
var imageUrl = ""
//Disk storage where image store
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/dairy');
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
//Check the image formate
const fileFilter = (req, file, cb) => {
// reject a file
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png' || file.mimetype === 'image/jpg') {
cb(null, true);
} else {
cb(null, false);
}
};
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 5
},
fileFilter: fileFilter
});
function failedResponse(message) {
return {
"status": 500,
"connection": "Disconnected",
"message": message,
"userData": {
}
}
}
router.get("/", async (req, res) => {
Post.find()
.then((post) => {
const response = {
count: post.length,
products: post.map(doc => {
return {
_id: doc._id,
postId: doc.postId,
postedBy: doc.postedBy,
caption: doc.caption,
imageUrl: doc.imageUrl,
liked: doc.liked,
request: {
type: "GET",
url: "http://localhost:4000/products/" + doc._id
}
};
})
};
res.status(200).json(response);
})
.catch((error) => {
res.status(500).json({ error: 'An error occurred while retrieving posts.' });
});
})
// Route to create a post
router.post('/', upload.single('file'), async (req, res) => {
const { caption } = req.body;
await firebase.uploadFile(req.file.path, req.file.filename)
await firebase.generateSignedUrl(req.file.filename).then(res => {
imageUrl = res
})
if (imageUrl == "") {
imageUrl = req.file.path
}
User.findOne({ unique_id: req.body.userId }, function (err, data) {
if (!data) {
res.send(failedResponse('Data not found!'))
} else {
console.log(" Data => " + data)
const post = Post({
postId: data,
postedBy: req.body.userId,
caption: caption,
imageUrl: imageUrl,
liked: req.body.liked,
});
post.save()
.then((post) => {
res.status(200).json(post);
})
.catch((error) => {
res.status(500).json({ error: 'An error occurred while creating the post.' });
});
}
});
});
module.exports = router;