get pagination working

This commit is contained in:
Moriz Wahl 2022-01-14 13:13:48 +01:00
parent 9244fc4e1a
commit d441931125
2 changed files with 18 additions and 5 deletions

View File

@ -1,4 +1,4 @@
import { ObjectType, Field } from 'type-graphql'
import { ObjectType, Field, Int } from 'type-graphql'
@ObjectType()
export class UserAdmin {
@ -20,3 +20,12 @@ export class UserAdmin {
@Field(() => Boolean)
emailChecked: boolean
}
@ObjectType()
export class SearchUsersResult {
@Field(() => Int)
userCount: number
@Field(() => [UserAdmin])
userList: UserAdmin[]
}

View File

@ -3,7 +3,7 @@
import { Resolver, Query, Arg, Args, Authorized, Mutation, Ctx } from 'type-graphql'
import { getCustomRepository, Raw } from 'typeorm'
import { UserAdmin } from '../model/UserAdmin'
import { UserAdmin, SearchUsersResult } from '../model/UserAdmin'
import { PendingCreation } from '../model/PendingCreation'
import { CreatePendingCreations } from '../model/CreatePendingCreations'
import { UpdatePendingCreation } from '../model/UpdatePendingCreation'
@ -27,10 +27,10 @@ import { LoginUserRepository } from '../../typeorm/repository/LoginUser'
@Resolver()
export class AdminResolver {
@Authorized([RIGHTS.SEARCH_USERS])
@Query(() => [UserAdmin])
@Query(() => SearchUsersResult)
async searchUsers(
@Args() { searchText, currentPage = 1, pageSize = 25, notActivated = false }: SearchUsersArgs,
): Promise<UserAdmin[]> {
): Promise<SearchUsersResult> {
const userRepository = getCustomRepository(UserRepository)
const users = await userRepository.findBySearchCriteria(searchText)
let adminUsers = await Promise.all(
@ -46,7 +46,11 @@ export class AdminResolver {
}),
)
if (notActivated) adminUsers = adminUsers.filter((u) => !u.emailChecked)
return adminUsers.slice(currentPage - 1, currentPage + pageSize - 1)
const first = (currentPage - 1) * pageSize
return {
userCount: adminUsers.length,
userList: adminUsers.slice(first, first + pageSize),
}
}
@Authorized([RIGHTS.CREATE_PENDING_CREATION])