Merge pull request #2061 from gradido/add_count_to_list_contributions

Fix: Add count to list contributions
This commit is contained in:
Hannes Heine 2022-07-19 01:59:49 +02:00 committed by GitHub
commit 298f76de0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 34 deletions

View File

@ -48,13 +48,13 @@ export class Contribution {
@ObjectType()
export class ContributionListResult {
constructor(count: number, list: Contribution[]) {
this.linkCount = count
this.linkList = list
this.contributionCount = count
this.contributionList = list
}
@Field(() => Int)
linkCount: number
contributionCount: number
@Field(() => [Contribution])
linkList: Contribution[]
contributionList: Contribution[]
}

View File

@ -193,18 +193,21 @@ describe('ContributionResolver', () => {
).resolves.toEqual(
expect.objectContaining({
data: {
listContributions: expect.arrayContaining([
expect.objectContaining({
id: expect.any(Number),
memo: 'Herzlich Willkommen bei Gradido!',
amount: '1000',
}),
expect.objectContaining({
id: expect.any(Number),
memo: 'Test env contribution',
amount: '100',
}),
]),
listContributions: {
contributionCount: 2,
contributionList: expect.arrayContaining([
expect.objectContaining({
id: expect.any(Number),
memo: 'Herzlich Willkommen bei Gradido!',
amount: '1000',
}),
expect.objectContaining({
id: expect.any(Number),
memo: 'Test env contribution',
amount: '100',
}),
]),
},
},
}),
)
@ -226,13 +229,16 @@ describe('ContributionResolver', () => {
).resolves.toEqual(
expect.objectContaining({
data: {
listContributions: expect.arrayContaining([
expect.objectContaining({
id: expect.any(Number),
memo: 'Test env contribution',
amount: '100',
}),
]),
listContributions: {
contributionCount: 1,
contributionList: expect.arrayContaining([
expect.objectContaining({
id: expect.any(Number),
memo: 'Test env contribution',
amount: '100',
}),
]),
},
},
}),
)
@ -496,8 +502,8 @@ describe('ContributionResolver', () => {
expect.objectContaining({
data: {
listAllContributions: {
linkCount: 2,
linkList: expect.arrayContaining([
contributionCount: 2,
contributionList: expect.arrayContaining([
expect.objectContaining({
id: expect.any(Number),
memo: 'Herzlich Willkommen bei Gradido!',

View File

@ -39,21 +39,21 @@ export class ContributionResolver {
}
@Authorized([RIGHTS.LIST_CONTRIBUTIONS])
@Query(() => [Contribution])
@Query(() => ContributionListResult)
async listContributions(
@Args()
{ currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated,
@Arg('filterConfirmed', () => Boolean)
filterConfirmed: boolean | null,
@Ctx() context: Context,
): Promise<Contribution[]> {
): Promise<ContributionListResult> {
const user = getUser(context)
const where: {
userId: number
confirmedBy?: FindOperator<number> | null
} = { userId: user.id }
if (filterConfirmed) where.confirmedBy = IsNull()
const contributions = await dbContribution.find({
const [contributions, count] = await dbContribution.findAndCount({
where,
order: {
createdAt: order,
@ -62,7 +62,10 @@ export class ContributionResolver {
skip: (currentPage - 1) * pageSize,
take: pageSize,
})
return contributions.map((contribution) => new Contribution(contribution, new User(user)))
return new ContributionListResult(
count,
contributions.map((contribution) => new Contribution(contribution, new User(user))),
)
}
@Authorized([RIGHTS.LIST_ALL_CONTRIBUTIONS])

View File

@ -185,9 +185,12 @@ export const listContributions = gql`
order: $order
filterConfirmed: $filterConfirmed
) {
id
amount
memo
contributionCount
contributionList {
id
amount
memo
}
}
}
`
@ -195,8 +198,8 @@ export const listContributions = gql`
export const listAllContributions = `
query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC) {
listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order) {
linkCount
linkList {
contributionCount
contributionList {
id
firstName
lastName