diff --git a/backend/src/graphql/arg/QueryTransactionLinkArgs.ts b/backend/src/graphql/arg/QueryTransactionLinkArgs.ts deleted file mode 100644 index 2dcd29572..000000000 --- a/backend/src/graphql/arg/QueryTransactionLinkArgs.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ArgsType, Field, Int } from 'type-graphql' - -@ArgsType() -export default class QueryTransactionLinkArgs { - @Field(() => String) - code: string - - @Field(() => Int, { nullable: true }) - redeemUserId?: number -} diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 071444de9..7deb27912 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -5,9 +5,9 @@ import { Resolver, Args, Arg, Authorized, Ctx, Mutation, Query } from 'type-grap import { getCustomRepository } from '@dbTools/typeorm' import { TransactionLink } from '@model/TransactionLink' import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink' -import TransactionLinkArgs from '@arg/TransactionLinkArgs' -import QueryTransactionLinkArgs from '@arg/QueryTransactionLinkArgs' +import { User as dbUser } from '@entity/User' import { UserRepository } from '@repository/User' +import TransactionLinkArgs from '@arg/TransactionLinkArgs' import { calculateBalance } from '@/util/validate' import { RIGHTS } from '@/auth/RIGHTS' import { randomBytes } from 'crypto' @@ -96,30 +96,17 @@ export class TransactionLinkResolver { @Authorized([RIGHTS.QUERY_TRANSACTION_LINK]) @Query(() => TransactionLink) - async queryTransactionLink( - @Args() { code, redeemUserId }: QueryTransactionLinkArgs, - ): Promise { + async queryTransactionLink(@Arg('code') code: string): Promise { const transactionLink = await dbTransactionLink.findOneOrFail({ code }) - const userRepository = getCustomRepository(UserRepository) - const user = await userRepository.findOneOrFail({ id: transactionLink.userId }) - let userRedeem = null - if (redeemUserId && !transactionLink.redeemedBy) { - const redeemedByUser = await userRepository.findOne({ id: redeemUserId }) - if (!redeemedByUser) { - throw new Error('Unable to find user that redeem the link') - } - userRedeem = new User(redeemedByUser) - transactionLink.redeemedBy = userRedeem.id - await dbTransactionLink.save(transactionLink).catch(() => { - throw new Error('Unable to save transaction link') - }) - } else if (transactionLink.redeemedBy) { - const redeemedByUser = await userRepository.findOne({ id: redeemUserId }) - if (!redeemedByUser) { - throw new Error('Unable to find user that has redeemed the link') - } - userRedeem = new User(redeemedByUser) + const user = await dbUser.findOneOrFail({ id: transactionLink.userId }) + let redeemedBy: dbUser | null = null + if (transactionLink && transactionLink.redeemedBy) { + redeemedBy = await dbUser.findOneOrFail({ id: transactionLink.redeemedBy }) } - return new TransactionLink(transactionLink, new User(user), userRedeem) + return new TransactionLink( + transactionLink, + new User(user), + redeemedBy ? new User(redeemedBy) : null, + ) } }