Skip to content

Commit d70916c

Browse files
committed
add user entity
1 parent 4ba9216 commit d70916c

12 files changed

+615
-45
lines changed

package-lock.json

Lines changed: 464 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@
3434
"@nestjs/common": "^8.0.0",
3535
"@nestjs/config": "^1.2.0",
3636
"@nestjs/core": "^8.0.0",
37+
"@nestjs/mapped-types": "^1.0.1",
3738
"@nestjs/platform-express": "^8.0.0",
3839
"@nestjs/typeorm": "^8.0.3",
40+
"bcrypt": "^5.0.1",
3941
"class-transformer": "^0.5.1",
4042
"class-validator": "^0.13.2",
4143
"joi": "^17.6.0",

src/app.controller.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/app.module.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ import { Module } from '@nestjs/common';
22
import { ConfigModule, ConfigType } from '@nestjs/config';
33
import { TypeOrmModule } from '@nestjs/typeorm';
44
import * as Joi from 'joi';
5-
import { AppController } from './app.controller';
6-
import { AppService } from './app.service';
75
import config from './config';
86
import { enviroments } from './environments';
7+
import { UsersModule } from './users/users.module';
98

109
@Module({
1110
imports: [
@@ -36,8 +35,9 @@ import { enviroments } from './environments';
3635
};
3736
},
3837
}),
38+
UsersModule,
3939
],
40-
controllers: [AppController],
41-
providers: [AppService],
40+
controllers: [],
41+
providers: [],
4242
})
4343
export class AppModule {}

src/app.service.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/users/dto/create-user.dto.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { IsEmail, IsNotEmpty } from 'class-validator';
2+
3+
export class CreateUserDto {
4+
@IsEmail()
5+
email: string;
6+
7+
@IsNotEmpty()
8+
password: string;
9+
10+
@IsNotEmpty()
11+
firstName: string;
12+
13+
@IsNotEmpty()
14+
lastName: string;
15+
}

src/users/dto/update-user.dto.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { PartialType } from '@nestjs/mapped-types';
2+
import { CreateUserDto } from './create-user.dto';
3+
4+
export class UpdateUserDto extends PartialType(CreateUserDto) {}

src/users/entities/user.entity.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import * as bcrypt from 'bcrypt';
2+
import { BeforeInsert, Column, Entity } from 'typeorm';
3+
import { DefaultEntity } from '../../utils/entities/default.entity';
4+
5+
@Entity('users')
6+
export class User extends DefaultEntity {
7+
@Column({ unique: true })
8+
email: string;
9+
10+
@Column({ select: false })
11+
password: string;
12+
13+
@Column({
14+
name: 'first_name',
15+
})
16+
firstName: string;
17+
18+
@Column({
19+
name: 'last_name',
20+
})
21+
lastName: string;
22+
23+
@BeforeInsert()
24+
async hashPassword() {
25+
if (this.password) {
26+
this.password = await bcrypt.hash(this.password, 10);
27+
}
28+
}
29+
}

src/users/users.controller.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import {
2+
Body,
3+
Controller,
4+
Delete,
5+
Get,
6+
Param,
7+
Patch,
8+
Post,
9+
} from '@nestjs/common';
10+
import { CreateUserDto } from './dto/create-user.dto';
11+
import { UpdateUserDto } from './dto/update-user.dto';
12+
import { UsersService } from './users.service';
13+
14+
@Controller('users')
15+
export class UsersController {
16+
constructor(private readonly usersService: UsersService) {}
17+
18+
@Post()
19+
create(@Body() createUserDto: CreateUserDto) {
20+
return this.usersService.create(createUserDto);
21+
}
22+
23+
@Get()
24+
findAll() {
25+
return this.usersService.findAll();
26+
}
27+
28+
@Get(':id')
29+
findOne(@Param('id') id: string) {
30+
return this.usersService.findOne(+id);
31+
}
32+
33+
@Patch(':id')
34+
update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
35+
return this.usersService.update(+id, updateUserDto);
36+
}
37+
38+
@Delete(':id')
39+
remove(@Param('id') id: string) {
40+
return this.usersService.remove(+id);
41+
}
42+
}

src/users/users.module.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { Module } from '@nestjs/common';
2+
import { UsersController } from './users.controller';
3+
import { UsersService } from './users.service';
4+
5+
@Module({
6+
controllers: [UsersController],
7+
providers: [UsersService],
8+
})
9+
export class UsersModule {}

0 commit comments

Comments
 (0)