@@ -8,12 +8,25 @@ export class UserDataService {
8
8
this . _db = getConnection ( ) . getMongoRepository ( UserModel ) ;
9
9
}
10
10
11
+ public async create ( newUser : UserModel ) : Promise < UserModel > {
12
+ const userModel : UserModel = new UserModel ( ) ;
13
+ userModel . id = newUser . id ;
14
+ userModel . email = newUser . email ;
15
+ userModel . extensionId = newUser . extensionId ;
16
+ try {
17
+ const user = await this . _db . save ( userModel ) ;
18
+ return user ;
19
+ } catch ( error ) {
20
+ throw error ;
21
+ }
22
+ }
23
+
11
24
public async findBy ( query : UserModel , skip : number , take : number ) : Promise < UserModel [ ] > {
12
25
if ( ! skip ) skip = 0 ;
13
26
if ( ! take ) take = 10 ;
14
27
query . deleted = false ;
15
28
try {
16
- const users : Array < UserModel > = await this . _db . find ( {
29
+ const users : UserModel [ ] = await this . _db . find ( {
17
30
where : query ,
18
31
skip,
19
32
take,
@@ -34,30 +47,52 @@ export class UserDataService {
34
47
}
35
48
}
36
49
37
- public async create ( newUser : UserModel ) : Promise < UserModel > {
38
- const userModel : UserModel = new UserModel ( ) ;
39
- userModel . id = newUser . id ;
40
- userModel . email = newUser . email ;
41
- userModel . extensionId = newUser . extensionId ;
42
- try {
43
- const user = await this . _db . save ( userModel ) ;
44
- return user ;
45
- } catch ( error ) {
50
+ public async update ( user : UserModel ) : Promise < UserModel > {
51
+ if ( ! user . id ) {
52
+ try {
53
+ const newUser = this . create ( user ) ;
54
+ return newUser ;
55
+ } catch ( error ) {
56
+ throw error ;
57
+ }
58
+ } else {
59
+ user . deleted = false ;
60
+ try {
61
+ await this . _db . findOneAndUpdate ( { id : user . id } , {
62
+ $set : {
63
+ email : user . email ,
64
+ extensionId : user . extensionId ,
65
+ } ,
66
+ } ) ;
67
+ return user ;
68
+ } catch ( error ) {
69
+ throw error ;
70
+ }
71
+ }
72
+ }
73
+
74
+ public async countBy ( query : UserModel ) : Promise < number > {
75
+ query . deleted = false ;
76
+ try {
77
+ const count = await this . _db . count ( query ) ;
78
+ return count ;
79
+ } catch ( error ) {
46
80
throw error ;
47
81
}
48
82
}
49
83
50
- public async deleteBy ( query : UserModel , userId : number ) : Promise < UpdateWriteOpResult > {
51
- try {
84
+ public async deleteBy ( query : UserModel , userId : number ) : Promise < UpdateWriteOpResult > {
85
+ query . deleted = false ;
86
+ try {
52
87
const result : UpdateWriteOpResult = await this . _db . updateMany ( query , {
53
88
$set : {
54
89
deleted : true ,
55
- deleteBy : userId
56
- }
90
+ deleteBy : userId ,
91
+ } ,
57
92
} ) ;
58
93
return result ;
59
- } catch ( error ) {
94
+ } catch ( error ) {
60
95
throw error ;
61
96
}
62
97
}
63
- }
98
+ }
0 commit comments