import{Body,Controller,Delete,Get,HttpCode,HttpException,Param,Patch,Post,}from"@nestjs/common";import{CreateUserDto}from"./dto/create-user.dto";import{UpdateUserDto}from"./dto/update-user.dto";import{User}from"./entities/user.entity";import{UserNotFoundError}from"./errors/user-not-found-error";import{UsersService}from"./users.service";@Controller("users")exportclassUsersController{constructor(privatereadonlyusersService:UsersService){}@Post()asynccreate(@Body()createUserDto:CreateUserDto):Promise<User>{try{returnawaitthis.usersService.create(createUserDto);}catch(error:any){this.catchError(error);}}@Get()asyncfindAll():Promise<User[]>{returnawaitthis.usersService.findAll();}@Get(":id")asyncfindOne(@Param("id")id:string):Promise<User>{try{returnawaitthis.usersService.findOne(id);}catch(error:any){this.catchError(error);}}@Patch(":id")asyncupdate(@Param("id")id:string,@Body()updateUserDto:UpdateUserDto):Promise<User>{try{awaitthis.usersService.update(id,updateUserDto);returnawaitthis.usersService.findOne(id);}catch(error:any){this.catchError(error);}}@Delete(":id")@HttpCode(204)asyncremove(@Param("id")id:string):Promise<void>{try{returnawaitthis.usersService.remove(id);}catch(error:any){this.catchError(error);}}privatecatchError(error:any){if(errorinstanceofUserNotFoundError){thrownewHttpException("User not found",404);}else{thrownewHttpException("Internal server error",500);}}}