Files
tattletires/api/controllers/postsController.js

90 lines
2.3 KiB
JavaScript

import AWSUtil from '../bin/aws.js'
import Post from '../models/postModel.js'
export const getAllPosts = async (req, res, next) => {
const allPosts = await Post.find({}).exec()
allPosts.map((el) => {
el.photo = process.env.CLOUDFRONT_URL + el.photo
})
res.status(200).json({
status: 'success',
data: allPosts
})
}
export const getAllPostsByStatus = async (req, res, next) => {
console.log(req.params.status)
const allPosts = await Post.find({ status: req.params.status }).exec()
allPosts.map((el) => {
el.photo = process.env.CLOUDFRONT_URL + el.photo
})
res.status(200).json({
status: 'success',
data: allPosts
})
}
export const getPost = async (req, res, next) => {
const post = await Post.findById(req.params.id).exec()
if (!post) {
return next('No document found with that id', 404)
}
res.status(200).json({
status: 'success',
data: post
})
}
export const getAllPostsByUser = async (req, res, next) => {
console.log(req.params)
const posts = await Post.find({ clerkUserID: req.params.id }).exec()
posts.map((el) => {
el.photo = process.env.CLOUDFRONT_URL + el.photo
})
if (!posts) {
return next('No document found with that id', 404)
}
res.status(200).json({
status: 'success',
data: posts
})
}
export const createPost = async (req, res, next) => {
const aws = new AWSUtil()
// Grab base64 photo from the req body
const fileName = await aws.uploadFile(req.body.photo)
const payload = {
...req.body,
photo: fileName
}
console.log(payload)
Post.create(payload).then((result) => {
res.status(200).json({
status: 'success',
data: result
})
})
}
export const updatePost = async (req, res, next) => {
Post.updateOne({ _id: req.params.id }, { $set: req.body }).then((result) => {
res.status(200).json({
status: 'success',
data: result
})
})
}
export const deletePost = async (req, res, next) => {
Post.deleteOne({ _id: req.params.id }).then((result) => {
res.status(200).json({
status: 'success',
data: result
})
})
}