Copy @ Module ({
imports : [ TypeOrmModule .forFeature ([User])] ,
controllers : [UsersController] ,
providers : [UsersService] ,
})
export class UsersModule {}
Copy @ Controller ( 'users' )
export class UsersController {
constructor ( private readonly usersService : UsersService ) {}
@ Post ()
create (@ Body () createUserDto : CreateUserDto ) {
return this . usersService .create (createUserDto);
}
@ Get ()
findAll () {
return this . usersService .findAll ();
}
@ Get ( ':id' )
findOne (@ Param () { id } : IdDto ) {
return this . usersService .findOne (id);
}
@ Patch ( ':id' )
update (@ Param () { id } : IdDto , @ Body () updateUserDto : UpdateUserDto ) {
return this . usersService .update (id , updateUserDto);
}
@ Delete ( ':id' )
remove (@ Param () { id } : IdDto ) {
return this . usersService .remove (id);
}
}
Copy @Injectable()
export class UsersService {
constructor(
@InjectRepository(User)
private readonly usersRepository: Repository<User>,
) {}
create(createUserDto: CreateUserDto) {
const user = this.usersRepository.create(createUserDto);
return this.usersRepository.save(user);
}
findAll() {
return this.usersRepository.find();
}
async findOne(id: number) {
return this.usersRepository.findOneByOrFail({ id });
}
async update(id: number, updateUserDto: UpdateUserDto) {
const user = await this.usersRepository.preload({
id,
...updateUserDto,
});
if (!user) {
throw new NotFoundException('User not found');
}
return this.usersRepository.save(user);
}
async remove(id: number) {
const user = await this.findOne(id);
return this.usersRepository.remove(user);
}
}
We do this to be more straightforward in our studies. But don't worry, this will not be committed. At the end of this module, this will be stashed .