typescript-express-mongoose-starter
Version:
TypeScript + Express + Mongoose + MongoDB
66 lines (53 loc) • 2.05 kB
text/typescript
import { NextFunction, Request, Response } from 'express';
import { CreateUserDto } from '@dtos/users.dto';
import { User } from '@interfaces/users.interface';
import userService from '@services/users.service';
class UsersController {
public userService = new userService();
public getUsers = async (req: Request, res: Response, next: NextFunction) => {
try {
const findAllUsersData: User[] = await this.userService.findAllUser();
res.status(200).json({ data: findAllUsersData, message: 'findAll' });
} catch (error) {
next(error);
}
};
public getUserById = async (req: Request, res: Response, next: NextFunction) => {
try {
const userId: string = req.params.id;
const findOneUserData: User = await this.userService.findUserById(userId);
res.status(200).json({ data: findOneUserData, message: 'findOne' });
} catch (error) {
next(error);
}
};
public createUser = async (req: Request, res: Response, next: NextFunction) => {
try {
const userData: CreateUserDto = req.body;
const createUserData: User = await this.userService.createUser(userData);
res.status(201).json({ data: createUserData, message: 'created' });
} catch (error) {
next(error);
}
};
public updateUser = async (req: Request, res: Response, next: NextFunction) => {
try {
const userId: string = req.params.id;
const userData: CreateUserDto = req.body;
const updateUserData: User = await this.userService.updateUser(userId, userData);
res.status(200).json({ data: updateUserData, message: 'updated' });
} catch (error) {
next(error);
}
};
public deleteUser = async (req: Request, res: Response, next: NextFunction) => {
try {
const userId: string = req.params.id;
const deleteUserData: User = await this.userService.deleteUser(userId);
res.status(200).json({ data: deleteUserData, message: 'deleted' });
} catch (error) {
next(error);
}
};
}
export default UsersController;