Fix subscription cross tenant issue (#16670)

As title
This commit is contained in:
martmull
2025-12-18 15:22:17 +01:00
committed by GitHub
parent c36bb8f3a1
commit 52cf3775b3
13 changed files with 178 additions and 105 deletions
@@ -1,34 +1,11 @@
import { Inject, Module, type OnModuleDestroy } from '@nestjs/common';
import { Module } from '@nestjs/common';
import { RedisPubSub } from 'graphql-redis-subscriptions';
import { RedisClientService } from 'src/engine/core-modules/redis-client/redis-client.service';
import { SubscriptionsResolver } from 'src/engine/subscriptions/subscriptions.resolver';
import { SubscriptionsService } from 'src/engine/subscriptions/subscriptions.service';
import { SubscriptionService } from 'src/engine/subscriptions/subscription.service';
import { RedisClientModule } from 'src/engine/core-modules/redis-client/redis-client.module';
@Module({
providers: [
{
provide: 'PUB_SUB',
inject: [RedisClientService],
useFactory: (redisClientService: RedisClientService) =>
new RedisPubSub({
publisher: redisClientService.getClient().duplicate(),
subscriber: redisClientService.getClient().duplicate(),
}),
},
SubscriptionsResolver,
SubscriptionsService,
],
exports: ['PUB_SUB', SubscriptionsService],
imports: [RedisClientModule],
providers: [SubscriptionService],
exports: [SubscriptionService],
})
export class SubscriptionsModule implements OnModuleDestroy {
constructor(@Inject('PUB_SUB') private readonly pubSub: RedisPubSub) {}
async onModuleDestroy() {
if (this.pubSub) {
await this.pubSub.close();
}
}
}
export class SubscriptionsModule {}