45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { Router } from "express";
|
|
import { UserController } from "../controllers/UserController.js";
|
|
import { CreateUserRequestDto } from "../dtos/CreateUserRequestDto.js";
|
|
import { UserRepository } from "../repositories/UserRepository.js";
|
|
import { UserDtoEntityMapper } from "../mappers/UserDtoEntityMapper.js";
|
|
import { asyncHandler } from "../utils/asyncHandler.js";
|
|
|
|
/**
|
|
* Handles all user related routes
|
|
*/
|
|
const router = Router();
|
|
|
|
// Inject repo + mapper here
|
|
const userRepository = new UserRepository();
|
|
const userMapper = new UserDtoEntityMapper();
|
|
const userController = new UserController(userRepository, userMapper);
|
|
|
|
/**
|
|
* Create a new user
|
|
*/
|
|
router.post(
|
|
"/",
|
|
asyncHandler(async (req, res) => {
|
|
const requestDto: CreateUserRequestDto = req.body;
|
|
const responseDto = await userController.createUser(requestDto);
|
|
res.status(201).json(responseDto);
|
|
})
|
|
);
|
|
|
|
/**
|
|
* Get user data for current user
|
|
*/
|
|
router.get("/me",
|
|
asyncHandler(async (req, res) => {
|
|
|
|
const id = req.currentUser?.id;
|
|
if(id){
|
|
// it breaks here because id is no longer a uuid
|
|
const responseDto = await userController.getUserById(id);
|
|
res.status(201).json(responseDto);
|
|
}
|
|
})
|
|
);
|
|
|
|
export default router;
|