From 2704577d391adedad2c3b26518f30349bfe5abef Mon Sep 17 00:00:00 2001 From: Will Baumbach Date: Fri, 25 Jul 2025 16:33:34 -0500 Subject: [PATCH] mostly adding posts controller and model but also updating some users stuff --- api/controllers/postsController.js | 58 ++++++++++++++++++++++++++++++ api/controllers/usersController.js | 39 ++++++++++++++++++-- api/models/postModel.js | 30 ++++++++++++++++ api/routes/posts.js | 21 +++++++++++ api/routes/users.js | 8 ++++- 5 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 api/controllers/postsController.js create mode 100644 api/models/postModel.js create mode 100644 api/routes/posts.js diff --git a/api/controllers/postsController.js b/api/controllers/postsController.js new file mode 100644 index 0000000..5cd6faa --- /dev/null +++ b/api/controllers/postsController.js @@ -0,0 +1,58 @@ +import Post from '../models/postModel.js'; + +export const getAllPosts = async (req, res, next) => { + const allPosts = await Post.find({}).exec(); + 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) => { + const post = await Post.find({email: req.params.user}).exec(); + if (!post) { + return next('No document found with that id', 404); + } + res.status(200).json({ + status: 'success', + data: post + }); +} + +export const createPost = async (req, res, next) => { + Post.create(req.body).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 + }); + }); +} \ No newline at end of file diff --git a/api/controllers/usersController.js b/api/controllers/usersController.js index e394a83..366e5f2 100644 --- a/api/controllers/usersController.js +++ b/api/controllers/usersController.js @@ -2,11 +2,46 @@ import User from '../models/userModel.js'; export const getAllUsers = async (req, res, next) => { const allUsers = await User.find({}).exec(); - res.send(allUsers); + res.status(200).json({ + status: 'success', + data: allUsers + }) +} + +export const getUser = async (req, res, next) => { + const user = await User.findById(req.params.id).exec(); + if (!user) { + return next('No document found with that id', 404); + } + res.status(200).json({ + status: 'success', + data: user + }); } export const createUser = async (req, res, next) => { User.create(req.body).then(result => { - res.send(result) + res.status(200).json({ + status: 'success', + data: result + }); }); } + +export const updateUser = async (req, res, next) => { + User.updateOne({_id: req.params.id},{$set: req.body}).then(result => { + res.status(200).json({ + status: 'success', + data: result + }); + }); +} + +export const deleteUser = async (req, res, next) => { + User.deleteOne({_id: req.params.id}).then(result => { + res.status(200).json({ + status: 'success', + data: result + }); + }); +} \ No newline at end of file diff --git a/api/models/postModel.js b/api/models/postModel.js new file mode 100644 index 0000000..f59801e --- /dev/null +++ b/api/models/postModel.js @@ -0,0 +1,30 @@ + +import mongoose from 'mongoose'; +import User from './userModel'; + +const postSchema = new mongoose.Schema({ + user: { + type: User, + required: true + }, + date: { + type: Date, + required: true + }, + photo: { + type: String, + required: true + }, + notes: { + type: String, + }, + status: { + type: String, + enum: ['created', 'pending', 'denied', 'approved'], + default: 'created' + } +}); + +const Post = mongoose.model('User', postSchema); + +export default Post; \ No newline at end of file diff --git a/api/routes/posts.js b/api/routes/posts.js new file mode 100644 index 0000000..9f0e398 --- /dev/null +++ b/api/routes/posts.js @@ -0,0 +1,21 @@ + +import express from 'express'; +import { createPost, deletePost, getAllPosts, getAllPostsByUser, getPost, updatePost } from './../controllers/usersController.js'; +const router = express.Router(); + +router + .route('/') + .get(getAllPosts) + .post(createPost); + +router + .route('/:id') + .get(getPost) + .patch(updatePost) + .delete(deletePost); + +router + .route('/:user') + .get(getAllPostsByUser) + +export default router; diff --git a/api/routes/users.js b/api/routes/users.js index 8980e53..30d6f52 100644 --- a/api/routes/users.js +++ b/api/routes/users.js @@ -1,6 +1,6 @@ import express from 'express'; -import { createUser, getAllUsers } from './../controllers/usersController.js'; +import { createUser, deleteUser, getAllUsers, getUser, updateUser } from './../controllers/usersController.js'; const router = express.Router(); router @@ -8,4 +8,10 @@ router .get(getAllUsers) .post(createUser); +router + .route('/:id') + .get(getUser) + .patch(updateUser) + .delete(deleteUser); + export default router;