-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathUser.ts
53 lines (48 loc) · 1.45 KB
/
User.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import {
JsonController,
Get,
Authorized,
QueryParams,
Param,
Patch,
Body
} from 'routing-controllers';
import { ResponseSchema } from 'routing-controllers-openapi';
import { User, Query, Object as LCObject } from 'leanengine';
import { fetchPage } from '../utility';
import { BaseQuery, UserRole, UserModel, UserList } from '../model';
@JsonController('/user')
export class UserController {
@Get()
@Authorized(UserRole.Admin)
@ResponseSchema(UserList)
getList(
@QueryParams() { keyword, pageSize: size, pageIndex: index }: BaseQuery
) {
return fetchPage(
Query.or(
new Query(User).contains('username', keyword),
new Query(User).contains('email', keyword),
new Query(User).contains('mobilePhoneNumber', keyword)
),
{ size, index },
{ useMasterKey: true }
);
}
@Get('/:id')
@ResponseSchema(UserModel)
async getOne(@Param('id') id: string) {
const user = await LCObject.createWithoutData(User, id).fetch();
return user.toJSON() as UserModel;
}
@Patch('/:id')
@Authorized(UserRole.Admin)
@ResponseSchema(UserModel)
async editUser(@Param('id') id: string, @Body() data: UserModel) {
return (
await LCObject.createWithoutData(User, id).save(data, {
useMasterKey: true
})
).toJSON() as UserModel;
}
}