create, update, delete and get employee
This commit is contained in:
parent
c466e59d35
commit
40a542a7e6
@ -5,6 +5,6 @@ EMAIL_USERNAME=krish@sentientgeeks.com
|
||||
EMAIL_PASSWORD=123456
|
||||
NODE_ENV=development
|
||||
PORT=3000
|
||||
MONGO_URI_TESTS=mongodb://mongodb:27017/sg-node-express-rest-api
|
||||
MONGO_URI=mongodb://mongodb:27017/sg-node-express-rest-api
|
||||
MONGO_URI_TESTS=mongodb://localhost:27017/sg-node-express-rest-api
|
||||
MONGO_URI=mongodb://localhost:27017/sg-node-express-rest-api
|
||||
JWT_EXPIRATION_MINUTES=300
|
60
src/api/controllers/emp.controller.js
Normal file
60
src/api/controllers/emp.controller.js
Normal file
@ -0,0 +1,60 @@
|
||||
const Employee = require("../models/employee.model");
|
||||
|
||||
exports.empreg = async (req, res, next) => {
|
||||
try {
|
||||
const employee = new Employee(req.body);
|
||||
const savedEmployee = await employee.save();
|
||||
res.status(201).send(employee);
|
||||
} catch (error) {
|
||||
res.status(400).send(error);
|
||||
}
|
||||
};
|
||||
|
||||
// router.get('/student/:id',
|
||||
exports.empget = async (req, res) => {
|
||||
const employee = await Employee.findById(req.params.id);
|
||||
res.send(employee);
|
||||
};
|
||||
|
||||
//router.put("/updatestudent/:id",
|
||||
exports.empupdate = async (req, res, next) => {
|
||||
Employee.findByIdAndUpdate(
|
||||
req.params.id,
|
||||
{ $set: req.body },
|
||||
function (err, employee) {
|
||||
if (err) return next(err);
|
||||
res.send("data udpated");
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
//router.delete("/deletestudent/:id",
|
||||
exports.empdel = async (req, res) => {
|
||||
Employee.findByIdAndRemove(req.params.id, function (err) {
|
||||
if (err) return next(err);
|
||||
res.send("data Deleted");
|
||||
});
|
||||
};
|
||||
|
||||
//post with id
|
||||
exports.emppost = async (req, res, next) => {
|
||||
try {
|
||||
const id = req.params.id
|
||||
const employee = new Employee({...req.body, user_id:id});
|
||||
const savedEmployee = await employee.save();
|
||||
res.status(201).send(employee);
|
||||
} catch (error) {
|
||||
res.status(400).send(error);
|
||||
}
|
||||
};
|
||||
// router.get('/showstudent',
|
||||
exports.empshow = async (req, res) => {
|
||||
const employee = await Employee.find(
|
||||
{},
|
||||
{
|
||||
_id: 0,
|
||||
}
|
||||
);
|
||||
res.send(employee);
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
const httpStatus = require('http-status');
|
||||
const { omit } = require('lodash');
|
||||
const User = require('../models/user.model');
|
||||
const httpStatus = require("http-status");
|
||||
const { omit } = require("lodash");
|
||||
const User = require("../models/user.model");
|
||||
|
||||
/**
|
||||
* Load user and append to req.
|
||||
@ -51,9 +51,8 @@ exports.replace = async (req, res, next) => {
|
||||
try {
|
||||
const { user } = req.locals;
|
||||
const newUser = new User(req.body);
|
||||
const ommitRole = user.role !== 'admin' ? 'role' : '';
|
||||
const newUserObject = omit(newUser.toObject(), '_id', ommitRole);
|
||||
|
||||
const ommitRole = user.role !== "admin" ? "role" : "";
|
||||
const newUserObject = omit(newUser.toObject(), "_id", ommitRole);
|
||||
|
||||
res.json(savedUser.transform());
|
||||
} catch (error) {
|
||||
@ -66,13 +65,14 @@ exports.replace = async (req, res, next) => {
|
||||
* @public
|
||||
*/
|
||||
exports.update = (req, res, next) => {
|
||||
const ommitRole = req.locals.user.role !== 'admin' ? 'role' : '';
|
||||
const ommitRole = req.locals.user.role !== "admin" ? "role" : "";
|
||||
const updatedUser = omit(req.body, ommitRole);
|
||||
const user = Object.assign(req.locals.user, updatedUser);
|
||||
|
||||
user.save()
|
||||
.then(savedUser => res.json(savedUser.transform()))
|
||||
.catch(e => next(User.checkDuplicateEmail(e)));
|
||||
user
|
||||
.save()
|
||||
.then((savedUser) => res.json(savedUser.transform()))
|
||||
.catch((e) => next(User.checkDuplicateEmail(e)));
|
||||
};
|
||||
|
||||
/**
|
||||
@ -82,7 +82,7 @@ exports.update = (req, res, next) => {
|
||||
exports.list = async (req, res, next) => {
|
||||
try {
|
||||
const users = await User.list(req.query);
|
||||
const transformedUsers = users.map(user => user.transform());
|
||||
const transformedUsers = users.map((user) => user.transform());
|
||||
res.json(transformedUsers);
|
||||
} catch (error) {
|
||||
next(error);
|
||||
@ -96,7 +96,8 @@ exports.list = async (req, res, next) => {
|
||||
exports.remove = (req, res, next) => {
|
||||
const { user } = req.locals;
|
||||
|
||||
user.remove()
|
||||
user
|
||||
.remove()
|
||||
.then(() => res.status(httpStatus.NO_CONTENT).end())
|
||||
.catch(e => next(e));
|
||||
.catch((e) => next(e));
|
||||
};
|
||||
|
35
src/api/models/employee.model.js
Normal file
35
src/api/models/employee.model.js
Normal file
@ -0,0 +1,35 @@
|
||||
const mongoose = require("mongoose");
|
||||
|
||||
const employeeSchema = new mongoose.Schema({
|
||||
fname: {
|
||||
type: String,
|
||||
maxlength: 128,
|
||||
trim: true,
|
||||
},
|
||||
lastname: {
|
||||
type: String,
|
||||
maxlength: 128,
|
||||
trim: true,
|
||||
},
|
||||
empid: {
|
||||
type: String,
|
||||
required: true,
|
||||
unique: true,
|
||||
},
|
||||
designation: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
dateofjoining: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
// userid (fkey of user)
|
||||
user_id: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: "User",
|
||||
required: true
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = mongoose.model("Employee", employeeSchema);
|
@ -4,7 +4,8 @@ const { omitBy, isNil } = require('lodash');
|
||||
const bcrypt = require('bcryptjs');
|
||||
const moment = require('moment-timezone');
|
||||
const jwt = require('jwt-simple');
|
||||
const uuidv4 = require('uuid/v4');
|
||||
// const uuidv4 = require('uuid/v4');
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
const APIError = require('../utils/APIError');
|
||||
const { env, jwtSecret, jwtExpirationInterval } = require('../../config/vars');
|
||||
|
||||
@ -55,6 +56,11 @@ const userSchema = new mongoose.Schema({
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
userSchema.virtual('employee', {
|
||||
ref: 'employee',
|
||||
localField: '_id',
|
||||
foreignField: 'user_id'
|
||||
})
|
||||
/**
|
||||
* Add your
|
||||
* - pre-save hooks
|
||||
|
@ -43,7 +43,6 @@ const router = express.Router();
|
||||
router.route('/register')
|
||||
.post(validate(register), controller.register);
|
||||
|
||||
|
||||
/**
|
||||
* @api {post} v1/auth/login Login
|
||||
* @apiDescription Get an accessToken
|
||||
|
17
src/api/routes/v1/emp.route.js
Normal file
17
src/api/routes/v1/emp.route.js
Normal file
@ -0,0 +1,17 @@
|
||||
const express = require('express');
|
||||
const controller = require('../../controllers/emp.controller');
|
||||
const {employee} = require('../../validations/emp.validation');
|
||||
const { validate, ValidationError, Joi } = require('express-validation')
|
||||
const router = express.Router();
|
||||
|
||||
router.route('/reg')
|
||||
.post(validate(employee), controller.empreg)
|
||||
.get( controller.empshow);
|
||||
|
||||
router.route('/emp/:id')
|
||||
.post(validate(employee), controller.emppost)
|
||||
.get(controller.empget)
|
||||
.put(validate(employee), controller.empupdate)
|
||||
.delete(controller.empdel)
|
||||
|
||||
module.exports = router;
|
@ -1,6 +1,7 @@
|
||||
const express = require('express');
|
||||
const userRoutes = require('./user.route');
|
||||
const authRoutes = require('./auth.route');
|
||||
const empRoutes = require('./emp.route')
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@ -16,5 +17,6 @@ router.use('/docs', express.static('docs'));
|
||||
|
||||
router.use('/users', userRoutes);
|
||||
router.use('/auth', authRoutes);
|
||||
router.use('/emp', empRoutes);
|
||||
|
||||
module.exports = router;
|
||||
|
@ -6,7 +6,7 @@ const {
|
||||
listUsers,
|
||||
createUser,
|
||||
replaceUser,
|
||||
updateUser,
|
||||
updateUser
|
||||
} = require('../../validations/user.validation');
|
||||
|
||||
const router = express.Router();
|
||||
@ -40,7 +40,8 @@ router
|
||||
* @apiError (Unauthorized 401) Unauthorized Only authenticated users can access the data
|
||||
* @apiError (Forbidden 403) Forbidden Only admins can access the data
|
||||
*/
|
||||
.get(authorize(ADMIN), validate(listUsers), controller.list)
|
||||
.get( validate(listUsers), controller.list)
|
||||
//authorize(ADMIN),
|
||||
/**
|
||||
* @api {post} v1/users Create User
|
||||
* @apiDescription Create a new user
|
||||
@ -66,8 +67,8 @@ router
|
||||
* @apiError (Unauthorized 401) Unauthorized Only authenticated users can create the data
|
||||
* @apiError (Forbidden 403) Forbidden Only admins can create the data
|
||||
*/
|
||||
.post(authorize(ADMIN), validate(createUser), controller.create);
|
||||
|
||||
.post( validate(createUser), controller.create);
|
||||
//authorize(ADMIN),
|
||||
|
||||
router
|
||||
.route('/profile')
|
||||
@ -89,8 +90,8 @@ router
|
||||
*
|
||||
* @apiError (Unauthorized 401) Unauthorized Only authenticated Users can access the data
|
||||
*/
|
||||
.get(authorize(), controller.loggedIn);
|
||||
|
||||
.get( controller.loggedIn);
|
||||
//authorize(),
|
||||
|
||||
router
|
||||
.route('/:userId')
|
||||
@ -114,7 +115,8 @@ router
|
||||
* @apiError (Forbidden 403) Forbidden Only user with same id or admins can access the data
|
||||
* @apiError (Not Found 404) NotFound User does not exist
|
||||
*/
|
||||
.get(authorize(LOGGED_USER), controller.get)
|
||||
.get(controller.get)
|
||||
//authorize(LOGGED_USER),
|
||||
/**
|
||||
* @api {put} v1/users/:id Replace User
|
||||
* @apiDescription Replace the whole user document with a new one
|
||||
@ -189,5 +191,4 @@ router
|
||||
*/
|
||||
.delete(authorize(LOGGED_USER), controller.remove);
|
||||
|
||||
|
||||
module.exports = router;
|
||||
|
@ -66,4 +66,5 @@ module.exports = {
|
||||
resetToken: Joi.string().required(),
|
||||
}),
|
||||
},
|
||||
|
||||
};
|
||||
|
19
src/api/validations/emp.validation.js
Normal file
19
src/api/validations/emp.validation.js
Normal file
@ -0,0 +1,19 @@
|
||||
const Joi = require('joi');
|
||||
const Employee = require('../models/employee.model');
|
||||
|
||||
module.exports = {
|
||||
employee : {
|
||||
body: Joi.object({
|
||||
fname: Joi.string()
|
||||
.required()
|
||||
.max(128),
|
||||
lastname: Joi.string()
|
||||
.required()
|
||||
.max(128),
|
||||
empid: Joi.string().required(),
|
||||
designation: Joi.string().required(),
|
||||
dateofjoining: Joi.string().required(),
|
||||
user_id: Joi.required()
|
||||
})
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
const Joi = require('joi');
|
||||
const User = require('../models/user.model');
|
||||
// const Employee = require('../models/employee.model');
|
||||
|
||||
module.exports = {
|
||||
|
||||
@ -48,5 +49,5 @@ module.exports = {
|
||||
params: {
|
||||
userId: Joi.string().regex(/^[a-fA-F0-9]{24}$/).required(),
|
||||
},
|
||||
},
|
||||
}
|
||||
};
|
||||
|
@ -1,7 +1,7 @@
|
||||
const path = require('path');
|
||||
|
||||
// import .env variables
|
||||
require('dotenv-safe').load({
|
||||
require('dotenv-safe').config({
|
||||
path: path.join(__dirname, '../../.env'),
|
||||
sample: path.join(__dirname, '../../.env.example'),
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user