diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 6a6555c84..167677152 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -1,8 +1,9 @@ import { + AppDatabase, Contribution as DbContribution, Transaction as DbTransaction, User as DbUser, - DltTransaction as DbDltTransaction, + getLastTransaction, UserContact, } from 'database' import { Decimal } from 'decimal.js-light' @@ -10,26 +11,7 @@ import { GraphQLResolveInfo } from 'graphql' import { Arg, Args, Authorized, Ctx, Info, Int, Mutation, Query, Resolver } from 'type-graphql' import { EntityManager, IsNull } from 'typeorm' -import { AdminCreateContributionArgs } from '@arg/AdminCreateContributionArgs' -import { AdminUpdateContributionArgs } from '@arg/AdminUpdateContributionArgs' -import { ContributionArgs } from '@arg/ContributionArgs' -import { Paginated } from '@arg/Paginated' -import { SearchContributionsFilterArgs } from '@arg/SearchContributionsFilterArgs' -import { ContributionStatus } from '@enum/ContributionStatus' -import { ContributionType } from '@enum/ContributionType' -import { AdminUpdateContribution } from '@model/AdminUpdateContribution' -import { Contribution, ContributionListResult } from '@model/Contribution' -import { OpenCreation } from '@model/OpenCreation' -import { UnconfirmedContribution } from '@model/UnconfirmedContribution' import { RIGHTS } from '@/auth/RIGHTS' -import { - fullName, - sendContributionChangedByModeratorEmail, - sendContributionConfirmedEmail, - sendContributionDeletedEmail, - sendContributionDeniedEmail, - TransactionTypeId -} from 'core' import { EVENT_ADMIN_CONTRIBUTION_CONFIRM, EVENT_ADMIN_CONTRIBUTION_CREATE, @@ -43,12 +25,32 @@ import { import { UpdateUnconfirmedContributionContext } from '@/interactions/updateUnconfirmedContribution/UpdateUnconfirmedContribution.context' import { LogError } from '@/server/LogError' import { Context, getClientTimezoneOffset, getUser } from '@/server/context' +import { AdminCreateContributionArgs } from '@arg/AdminCreateContributionArgs' +import { AdminUpdateContributionArgs } from '@arg/AdminUpdateContributionArgs' +import { ContributionArgs } from '@arg/ContributionArgs' +import { Paginated } from '@arg/Paginated' +import { SearchContributionsFilterArgs } from '@arg/SearchContributionsFilterArgs' +import { ContributionStatus } from '@enum/ContributionStatus' +import { ContributionType } from '@enum/ContributionType' +import { AdminUpdateContribution } from '@model/AdminUpdateContribution' +import { Contribution, ContributionListResult } from '@model/Contribution' +import { OpenCreation } from '@model/OpenCreation' +import { UnconfirmedContribution } from '@model/UnconfirmedContribution' +import { + fullName, + sendContributionChangedByModeratorEmail, + sendContributionConfirmedEmail, + sendContributionDeletedEmail, + sendContributionDeniedEmail, + TransactionTypeId +} from 'core' import { calculateDecay, Decay } from 'shared' +import { contributionTransaction } from '@/apis/dltConnector' import { LOG4JS_BASE_CATEGORY_NAME } from '@/config/const' import { ContributionMessageType } from '@enum/ContributionMessageType' -import { AppDatabase } from 'database' import { getLogger } from 'log4js' +import { Mutex } from 'redis-semaphore' import { contributionFrontendLink, loadAllContributions, @@ -57,9 +59,6 @@ import { import { getOpenCreations, getUserCreation, validateContribution } from './util/creations' import { extractGraphQLFields } from './util/extractGraphQLFields' import { findContributions } from './util/findContributions' -import { getLastTransaction } from 'database' -import { contributionTransaction } from '@/apis/dltConnector' -import { Mutex } from 'redis-semaphore' const db = AppDatabase.getInstance() const createLogger = () => getLogger(`${LOG4JS_BASE_CATEGORY_NAME}.graphql.resolver.ContributionResolver`) diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 7d56a7925..e834ae305 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -85,7 +85,6 @@ export const transactionLinkCode = (date: Date): string => { const db = AppDatabase.getInstance() -const redisClient = new Redis() export const transactionLinkExpireDate = (date: Date): Date => { const validUntil = new Date(date) @@ -241,7 +240,7 @@ export class TransactionLinkResolver { if (code.match(/^CL-/)) { // acquire lock // const releaseLock = await TRANSACTIONS_LOCK.acquire() - const mutex = new Mutex(redisClient, 'TRANSACTIONS_LOCK') + const mutex = new Mutex(db.getRedisClient(), 'TRANSACTIONS_LOCK') await mutex.acquire() try { methodLogger.info('redeem contribution link...') @@ -403,7 +402,7 @@ export class TransactionLinkResolver { return true } else { // const releaseLinkLock = await TRANSACTION_LINK_LOCK.acquire() - const mutex = new Mutex(redisClient, 'TRANSACTION_LINK_LOCK') + const mutex = new Mutex(db.getRedisClient(), 'TRANSACTION_LINK_LOCK') await mutex.acquire() const now = new Date() try {