add paged userlist api

This commit is contained in:
rubikscraft
2022-03-19 22:04:55 +01:00
parent 94c2a16bc9
commit 509dda78ea
4 changed files with 124 additions and 43 deletions

View File

@@ -7,10 +7,13 @@ import {
Post
} from '@nestjs/common';
import {
UserCreateRequest,
UserCreateResponse,
UserDeleteRequest,
UserDeleteResponse,
UserInfoRequest,
UserInfoResponse,
UserListRequest,
UserListResponse,
UserUpdateRolesRequest,
UserUpdateRolesResponse
@@ -29,7 +32,18 @@ export class UserManageController {
@Get('list')
async listUsers(): Promise<UserListResponse> {
const users = await this.usersService.findAll();
const body = new UserListRequest();
body.count = 20;
body.page = 0;
return this.listUsersPaged(body);
}
@Post('list')
async listUsersPaged(
@Body() body: UserListRequest,
): Promise<UserListResponse> {
const users = await this.usersService.findMany(body.count, body.page);
if (HasFailed(users)) {
this.logger.warn(users.getReason());
throw new InternalServerErrorException('Could not list users');
@@ -37,10 +51,27 @@ export class UserManageController {
return {
users,
total: users.length,
count: users.length,
page: body.page,
};
}
@Post('create')
async register(
@Body() create: UserCreateRequest,
): Promise<UserCreateResponse> {
const user = await this.usersService.create(
create.username,
create.password,
);
if (HasFailed(user)) {
this.logger.warn(user.getReason());
throw new InternalServerErrorException('Could not create user');
}
return user;
}
@Post('delete')
async delete(
@Body() deleteData: UserDeleteRequest,
@@ -54,6 +85,18 @@ export class UserManageController {
return user;
}
@Post('info')
async getUser(@Body() body: UserInfoRequest): Promise<UserInfoResponse> {
console.log(body);
const user = await this.usersService.findOne(body.username);
if (HasFailed(user)) {
this.logger.warn(user.getReason());
throw new InternalServerErrorException('Could not find user');
}
return user;
}
@Post('roles')
async setPermissions(
@Body() body: UserUpdateRolesRequest,
@@ -70,16 +113,4 @@ export class UserManageController {
return updatedUser;
}
@Post('info')
async getUser(@Body() body: UserInfoRequest): Promise<UserInfoResponse> {
console.log(body);
const user = await this.usersService.findOne(body.username);
if (HasFailed(user)) {
this.logger.warn(user.getReason());
throw new InternalServerErrorException('Could not find user');
}
return user;
}
}