Skip to content

Commit

Permalink
implemented crud for Users
Browse files Browse the repository at this point in the history
  • Loading branch information
waqasraza123 committed Nov 19, 2022
1 parent 639cdeb commit 4aaa223
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 71 deletions.
56 changes: 31 additions & 25 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,35 @@
const userSchema = require('../schemas/users');
const mongoose = require("mongoose")

let user;
let promise = new Promise(async function(resolve, reject){

try{
user = await userSchema.create(
{
name: "Waqas 3",
email: "waqas@gmail.com",
password: "123456"
}
);
}catch (exception){
reject(exception); //reject the promise
}

//runs when the user is created
if(user){
resolve(user);//resolve the promise
//create user schema
const users = mongoose.Schema({
name: {
type: String,
required: true,
},
email: {
type: String,
required: true,
lowercase: true
},
password: {
type: String,
required: true,
minLength: 6
},
createdAt: {
type: Date,
default: () => Date.now()
},
updatedAt: {
type: Date,
default: () => Date.now()
}

});

//once the promise is returned
promise.then(
result => {console.log(result)}, //result = user
error => {console.log(error)} //error = exception
);
/**
*
* create user model - similar to eloquent models
* first argument : name of the model
* second argument : schema object
*/
module.exports = mongoose.model('User', users);
103 changes: 92 additions & 11 deletions routes/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,116 @@ const User = require("../models/user");

//all the routes are prefixed by /users

//Get all users
/**
* returns all users
* required : nothing
*/
router.get("/", async function (req, res){
try {
//wait for the results
const users = await User.find();
res.status(200).json(users);
}
catch (exception){
catch (err){
//handle errors here
//500 server error code
res.status(500).json(
{
message: exception.message
message: err.message
}
)
}

});

//Get one user
router.get("/:id", function (req, res){});
/**
* returns one user
* required : email
*/
router.get("/user", async function (req, res){
const email = req.body.email;

//Create one
router.post("/", function (req, res){});
try{
const user = await User.find({email: email});
if(user){
res.status(200).json(user);
}
}catch(err){
res.status(500).json({message: err.message})
}

});

/**
* creates one user
* required : all
*/
router.post("/", async function (req, res){

try {
const user = await User.create(
{
name: req.body.name,
email: req.body.email,
password: req.body.password
}
);

if(user){
res.status(201).json(user);
}

}catch (err){
res.status(500).json({message: err.message});
}

});

//Update one user
router.patch("/:id", function (req, res){});
/**
* updates a user
* required : email and/or other data to update
*/
router.patch("/user", async function (req, res){

//Delete one user
router.delete("/:id", function (req, res){});
try{
const email = req.body.email;
const filter = {email: email};
const newData = req.body;

//new: true sends back the new data after update
let user = await User.findOneAndUpdate(filter, newData, {new: true});

if(user == null){
res.status(404).json({message: "User not found!"});
}
else{
//send back the updated user
res.json(user);
}

}catch (err){
res.status(500).json({message: err.message});
}

});

/**
* deletes a user
* required : email
*/
router.delete("/user", async function (req, res){

try{
const email = req.body.email;
await User.deleteOne({email});

res.json({message: `User ${email} is deleted.`});

}catch (err){
res.status(500).json(err.message);
}

});


module.exports = router;
35 changes: 0 additions & 35 deletions schemas/users.js

This file was deleted.

0 comments on commit 4aaa223

Please sign in to comment.