From 6a9cda75ef4a6b107f18b91c7250274056dcbcdb Mon Sep 17 00:00:00 2001
From: clauspeterhuebner
Date: Thu, 27 Nov 2025 13:56:42 +0100
Subject: [PATCH] correct accessing redisClient over AppDatabase
---
.../graphql/resolver/ContributionResolver.ts | 47 +++++++++----------
.../resolver/TransactionLinkResolver.ts | 5 +-
2 files changed, 25 insertions(+), 27 deletions(-)
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 {