mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
let handle mysql the paging
This commit is contained in:
parent
89a8c25b44
commit
6e63bacba7
@ -32,7 +32,13 @@ export class AdminResolver {
|
||||
@Args() { searchText, currentPage = 1, pageSize = 25, notActivated = false }: SearchUsersArgs,
|
||||
): Promise<SearchUsersResult> {
|
||||
const userRepository = getCustomRepository(UserRepository)
|
||||
const users = await userRepository.findBySearchCriteria(searchText)
|
||||
let users: dbUser[]
|
||||
let count: number
|
||||
if(notActivated) {
|
||||
[users, count] = await userRepository.findBySearchCriteriaPagedNotActivated(searchText, currentPage, pageSize)
|
||||
} else {
|
||||
[users, count] = await userRepository.findBySearchCriteriaPaged(searchText, currentPage, pageSize)
|
||||
}
|
||||
let adminUsers = await Promise.all(
|
||||
users.map(async (user) => {
|
||||
const adminUser = new UserAdmin()
|
||||
@ -41,16 +47,14 @@ export class AdminResolver {
|
||||
adminUser.lastName = user.lastName
|
||||
adminUser.email = user.email
|
||||
adminUser.creation = await getUserCreations(user.id)
|
||||
adminUser.emailChecked = await hasActivatedEmail(user.email)
|
||||
adminUser.emailChecked = user.emailChecked
|
||||
adminUser.hasElopage = await hasElopageBuys(user.email)
|
||||
return adminUser
|
||||
}),
|
||||
)
|
||||
if (notActivated) adminUsers = adminUsers.filter((u) => !u.emailChecked)
|
||||
const first = (currentPage - 1) * pageSize
|
||||
return {
|
||||
userCount: adminUsers.length,
|
||||
userList: adminUsers.slice(first, first + pageSize),
|
||||
userCount: count,
|
||||
userList: adminUsers,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { EntityRepository, Repository } from '@dbTools/typeorm'
|
||||
import { User } from '@entity/User'
|
||||
import internal from 'stream'
|
||||
|
||||
@EntityRepository(User)
|
||||
export class UserRepository extends Repository<User> {
|
||||
@ -43,4 +44,34 @@ export class UserRepository extends Repository<User> {
|
||||
)
|
||||
.getMany()
|
||||
}
|
||||
async findBySearchCriteriaPaged(searchCriteria: string, currentPage: number, pageSize: number): Promise<[User[], number]> {
|
||||
return await this.createQueryBuilder('user')
|
||||
.where(
|
||||
'user.firstName like :name or user.lastName like :lastName or user.email like :email',
|
||||
{
|
||||
name: `%${searchCriteria}%`,
|
||||
lastName: `%${searchCriteria}%`,
|
||||
email: `%${searchCriteria}%`,
|
||||
},
|
||||
)
|
||||
.take(pageSize)
|
||||
.skip((currentPage - 1 ) * pageSize)
|
||||
.getManyAndCount()
|
||||
}
|
||||
|
||||
async findBySearchCriteriaPagedNotActivated(searchCriteria: string, currentPage: number, pageSize: number): Promise<[User[], number]> {
|
||||
return await this.createQueryBuilder('user')
|
||||
.where(
|
||||
'user.firstName like :name or user.lastName like :lastName or user.email like :email',
|
||||
{
|
||||
name: `%${searchCriteria}%`,
|
||||
lastName: `%${searchCriteria}%`,
|
||||
email: `%${searchCriteria}%`,
|
||||
emailChecked: false
|
||||
},
|
||||
)
|
||||
.take(pageSize)
|
||||
.skip((currentPage - 1 ) * pageSize)
|
||||
.getManyAndCount()
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user