Refactor to have filters GQL object and input for usererSearch, a start

This commit is contained in:
Wolfgang Huß 2022-05-18 14:45:36 +02:00
parent 946280a6db
commit 0f8ffb5860
7 changed files with 78 additions and 19 deletions

View File

@ -12,7 +12,7 @@ export const searchUsers = gql`
searchText: $searchText
currentPage: $currentPage
pageSize: $pageSize
filterByActivated: $filterByActivated
filterByActivated: $filterByActivated # Wolle: put in 'filters' object?
filterByDeleted: $filterByDeleted
) {
userCount

View File

@ -82,7 +82,7 @@ describe('UserSearch', () => {
searchText: '',
currentPage: 1,
pageSize: 25,
filterByActivated: null,
filterByActivated: null, // Wolle: put in 'filters' object?
filterByDeleted: null,
},
}),
@ -101,7 +101,7 @@ describe('UserSearch', () => {
searchText: '',
currentPage: 1,
pageSize: 25,
filterByActivated: false,
filterByActivated: false, // Wolle: put in 'filters' object?
filterByDeleted: null,
},
}),
@ -121,7 +121,7 @@ describe('UserSearch', () => {
searchText: '',
currentPage: 1,
pageSize: 25,
filterByActivated: null,
filterByActivated: null, // Wolle: put in 'filters' object?
filterByDeleted: true,
},
}),
@ -141,7 +141,7 @@ describe('UserSearch', () => {
searchText: '',
currentPage: 2,
pageSize: 25,
filterByActivated: null,
filterByActivated: null, // Wolle: put in 'filters' object?
filterByDeleted: null,
},
}),
@ -161,7 +161,7 @@ describe('UserSearch', () => {
searchText: 'search string',
currentPage: 1,
pageSize: 25,
filterByActivated: null,
filterByActivated: null, // Wolle: put in 'filters' object?
filterByDeleted: null,
},
}),
@ -178,7 +178,7 @@ describe('UserSearch', () => {
searchText: '',
currentPage: 1,
pageSize: 25,
filterByActivated: null,
filterByActivated: null, // Wolle: put in 'filters' object?
filterByDeleted: null,
},
}),

View File

@ -97,7 +97,7 @@ export default {
searchText: this.criteria,
currentPage: this.currentPage,
pageSize: this.perPage,
filterByActivated: this.filterByActivated,
filterByActivated: this.filterByActivated, // Wolle: put in 'filters' object?
filterByDeleted: this.filterByDeleted,
},
fetchPolicy: 'no-cache',

View File

@ -1,4 +1,5 @@
import { ArgsType, Field, Int } from 'type-graphql'
import { Args, ArgsType, Field, Int } from 'type-graphql'
import SearchUsersFilters from '@arg/SearchUsersFilters'
@ArgsType()
export default class SearchUsersArgs {
@ -11,9 +12,13 @@ export default class SearchUsersArgs {
@Field(() => Int, { nullable: true })
pageSize?: number
@Field(() => Boolean, { nullable: true })
filterByActivated?: boolean | null
// Wolle: @Field(() => Boolean, { nullable: true })
// filterByActivated?: boolean | null
@Field(() => Boolean, { nullable: true })
filterByDeleted?: boolean | null
// Wolle: @Field(() => Boolean, { nullable: true })
// filterByDeleted?: boolean | null
// Wolle: shall this be nullable?
@Field()
filters: SearchUsersFilters
}

View File

@ -0,0 +1,13 @@
// Wolle: import { ArgsType, Field, InputType } from 'type-graphql'
import { Field, InputType, ObjectType } from 'type-graphql'
@ObjectType()
@InputType('SearchUsersFiltersInput')
// Wolle: @ArgsType()
export default class SearchUsersFilters {
@Field(() => Boolean, { nullable: true, defaultValue: null })
filterByActivated?: boolean | null
@Field(() => Boolean, { nullable: true, defaultValue: null })
filterByDeleted?: boolean | null
}

View File

@ -56,19 +56,27 @@ export class AdminResolver {
searchText,
currentPage = 1,
pageSize = 25,
filterByActivated = null,
filterByDeleted = null,
// Wolle: filters = {
// filterByActivated: null,
// filterByDeleted: null,
// },
filters = {
filterByActivated: null,
filterByDeleted: null,
},
}: SearchUsersArgs,
): Promise<SearchUsersResult> {
// Wolle
console.log('filters: ', filters)
const userRepository = getCustomRepository(UserRepository)
const filterCriteria: ObjectLiteral[] = []
if (filterByActivated !== null) {
filterCriteria.push({ emailChecked: filterByActivated })
if (filters.filterByActivated !== null) {
filterCriteria.push({ emailChecked: filters.filterByActivated })
}
if (filterByDeleted !== null) {
filterCriteria.push({ deletedAt: filterByDeleted ? Not(IsNull()) : IsNull() })
if (filters.filterByDeleted !== null) {
filterCriteria.push({ deletedAt: filters.filterByDeleted ? Not(IsNull()) : IsNull() })
}
const userFields = ['id', 'firstName', 'lastName', 'email', 'emailChecked', 'deletedAt']

View File

@ -107,6 +107,39 @@ export const unDeleteUser = gql`
}
`
export const searchUsers = gql`
query (
$searchText: String!
$currentPage: Int
$pageSize: Int
# Wolle $filterByActivated: Boolean
# $filterByDeleted: Boolean
$filters: SearchUsersFiltersInput!
) {
searchUsers(
searchText: $searchText
currentPage: $currentPage
pageSize: $pageSize
# Wolle filterByActivated: $filterByActivated # Wolle: put in 'filters' object?
# filterByDeleted: $filterByDeleted
filters: $filters
) {
userCount
userList {
userId
firstName
lastName
email
creation
emailChecked
hasElopage
emailConfirmationSend
deletedAt
}
}
}
`
export const createPendingCreations = gql`
mutation ($pendingCreations: [CreatePendingCreationArgs!]!) {
createPendingCreations(pendingCreations: $pendingCreations) {