1
1
import {
2
2
BadRequestException ,
3
+ ForbiddenException ,
3
4
HttpException ,
4
5
HttpStatus ,
5
6
Injectable ,
7
+ NotFoundException ,
6
8
} from '@nestjs/common' ;
7
9
import { CreateUserDto } from './dto/create-user.dto' ;
8
10
import { Keyword , User , UserKeyword } from './user.entity' ;
@@ -24,11 +26,11 @@ export class UserService {
24
26
}
25
27
26
28
async auth ( req : UserRequest ) : Promise < User > {
27
- return await this . authService . login ( req . user ! ) ;
29
+ return await this . authService . login ( req . user ) ;
28
30
}
29
31
30
32
async getUserMe ( req : UserRequest ) : Promise < User | undefined > {
31
- return await User . findOneWithKeyword ( { id : req . user ! . id } ) ;
33
+ return await User . findOneWithKeyword ( { id : req . user . id } ) ;
32
34
}
33
35
34
36
async update (
@@ -42,23 +44,23 @@ export class UserService {
42
44
) ;
43
45
}
44
46
if ( Object . keys ( userData ) . length != 0 ) {
45
- await User . update ( req . user ! , userData ) ;
47
+ await User . update ( req . user , userData ) ;
46
48
}
47
- return User . findOneWithKeyword ( { id : req . user ! . id } ) ;
49
+ return User . findOneWithKeyword ( { id : req . user . id } ) ;
48
50
}
49
51
50
52
async createKeyword (
51
53
req : UserRequest ,
52
54
keywordData : KeywordDto ,
53
- ) : Promise < User | undefined > {
54
- let keyword : Keyword = ( await Keyword . findOne ( {
55
+ ) : Promise < User > {
56
+ let keyword : Keyword | undefined = await Keyword . findOne ( {
55
57
name : keywordData . keyword ,
56
- } ) ) ! ;
58
+ } ) ;
57
59
if ( keyword ) {
58
- const userKeyword : UserKeyword = ( await UserKeyword . findOne ( {
60
+ const userKeyword : UserKeyword | undefined = await UserKeyword . findOne ( {
59
61
user : req . user ,
60
62
keyword,
61
- } ) ) ! ;
63
+ } ) ;
62
64
if ( userKeyword )
63
65
throw new BadRequestException ( 'keyword already added to this user' ) ;
64
66
} else {
@@ -71,23 +73,29 @@ export class UserService {
71
73
keyword,
72
74
} ) ;
73
75
await UserKeyword . save ( userKeyword ) ;
74
- return User . findOneWithKeyword ( { id : req . user ! . id } ) ;
76
+ const user : User | undefined = await User . findOneWithKeyword ( {
77
+ id : req . user . id ,
78
+ } ) ;
79
+ if ( ! user ) throw new BadRequestException ( ) ;
80
+ return user ;
75
81
}
76
82
77
83
async deleteKeyword (
78
84
req : UserRequest ,
79
85
keywordData : KeywordDto ,
80
- ) : Promise < User | undefined > {
81
- let keyword : Keyword = ( await Keyword . findOne ( {
86
+ ) : Promise < User > {
87
+ let keyword : Keyword | undefined = await Keyword . findOne ( {
82
88
name : keywordData . keyword ,
83
- } ) ) ! ;
89
+ } ) ;
90
+
91
+ if ( ! keyword ) throw new BadRequestException ( ) ;
84
92
85
- const userKeyword = keyword
93
+ const userKeyword : UserKeyword | undefined = keyword
86
94
? await UserKeyword . findOne ( {
87
95
user : req . user ,
88
96
keyword : keyword ,
89
97
} )
90
- : null ;
98
+ : undefined ;
91
99
92
100
if ( ! userKeyword ) {
93
101
throw new HttpException (
@@ -98,7 +106,7 @@ export class UserService {
98
106
) ;
99
107
}
100
108
await UserKeyword . delete ( userKeyword . id ) ;
101
- keyword = ( await Keyword . findOne ( keyword . id ) ) ! ;
109
+ keyword = await Keyword . findOne ( keyword . id ) ;
102
110
if (
103
111
keyword &&
104
112
! ( await UserKeyword . findOne ( {
@@ -108,6 +116,11 @@ export class UserService {
108
116
await Keyword . delete ( keyword ) ;
109
117
}
110
118
111
- return User . findOneWithKeyword ( { id : req . user ! . id } ) ;
119
+ const user : User | undefined = await User . findOneWithKeyword ( {
120
+ id : req . user . id ,
121
+ } ) ;
122
+ if ( ! user ) throw ForbiddenException ;
123
+
124
+ return user ;
112
125
}
113
126
}
0 commit comments