express-api-cli
Version:
Cli tool for generating an express project. Instead of wasting extra time creating your project structure, start building right away
127 lines (118 loc) • 3.14 kB
text/typescript
/* eslint-disable @typescript-eslint/no-explicit-any */
import HttpStatus from 'http-status-codes';
import userService from '../services/user.service';
import { Request, Response, NextFunction } from 'express';
class UserController {
public UserService = new userService();
/**
* Controller to get all users available
* @param {object} Request - request object
* @param {object} Response - response object
* @param {Function} NextFunction
*/
public getAllUsers = async (
req: Request,
res: Response,
next: NextFunction
): Promise<any> => {
try {
const data = await this.UserService.getAllUsers();
res.status(HttpStatus.OK).json({
code: HttpStatus.OK,
data: data,
message: 'All users fetched successfully'
});
} catch (error) {
next(error);
}
};
/**
* Controller to get a single user
* @param {object} Request - request object
* @param {object} Response - response object
* @param {Function} NextFunction
*/
public getUser = async (
req: Request,
res: Response,
next: NextFunction
): Promise<any> => {
try {
const data = await this.UserService.getUser(req.params.id);
res.status(HttpStatus.OK).json({
code: HttpStatus.OK,
data: data,
message: 'User fetched successfully'
});
} catch (error) {
next(error);
}
};
/**
* Controller to create new user
* @param {object} Request - request object
* @param {object} Response - response object
* @param {Function} NextFunction
*/
public newUser = async (
req: Request,
res: Response,
next: NextFunction
): Promise<any> => {
try {
const data = await this.UserService.newUser(req.body);
res.status(HttpStatus.CREATED).json({
code: HttpStatus.CREATED,
data: data,
message: 'User created successfully'
});
} catch (error) {
next(error);
}
};
/**
* Controller to update a user
* @param {object} Request - request object
* @param {object} Response - response object
* @param {Function} NextFunction
*/
public updateUser = async (
req: Request,
res: Response,
next: NextFunction
): Promise<any> => {
try {
const data = await this.UserService.updateUser(req.params.id, req.body);
res.status(HttpStatus.ACCEPTED).json({
code: HttpStatus.ACCEPTED,
data: data,
message: 'User updated successfully'
});
} catch (error) {
next(error);
}
};
/**
* Controller to delete a user
* @param {object} Request - request object
* @param {object} Response - response object
* @param {Function} NextFunction
*/
public deleteUser = async (
req: Request,
res: Response,
next: NextFunction
): Promise<any> => {
try {
await this.UserService.deleteUser(req.params.id);
res.status(HttpStatus.OK).json({
code: HttpStatus.OK,
data: {},
message: 'User deleted successfully'
});
} catch (error) {
next(error);
}
};
}
export default UserController;