diff --git a/redisinsight/api/src/modules/database/providers/database-overview.provider.spec.ts b/redisinsight/api/src/modules/database/providers/database-overview.provider.spec.ts index 1da998495c..de4c080380 100644 --- a/redisinsight/api/src/modules/database/providers/database-overview.provider.spec.ts +++ b/redisinsight/api/src/modules/database/providers/database-overview.provider.spec.ts @@ -5,11 +5,14 @@ import { mockStandaloneRedisClient, mockClusterRedisClient, mockStandaloneRedisInfoReply, + mockFeatureService, } from 'src/__mocks__'; import { DatabaseOverview } from 'src/modules/database/models/database-overview'; import { DatabaseOverviewProvider } from 'src/modules/database/providers/database-overview.provider'; +import { DatabaseInfoProvider } from 'src/modules/database/providers/database-info.provider'; import * as Utils from 'src/modules/redis/utils/keys.util'; import { DatabaseOverviewKeyspace } from 'src/modules/database/constants/overview'; +import { FeatureService } from 'src/modules/feature/feature.service'; const mockServerInfo = { redis_version: '6.2.4', @@ -78,7 +81,14 @@ describe('OverviewService', () => { beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [DatabaseOverviewProvider], + providers: [ + DatabaseInfoProvider, + DatabaseOverviewProvider, + { + provide: FeatureService, + useFactory: mockFeatureService, + }, + ], }).compile(); service = await module.get(DatabaseOverviewProvider); diff --git a/redisinsight/api/src/modules/database/providers/database-overview.provider.ts b/redisinsight/api/src/modules/database/providers/database-overview.provider.ts index 431ad8a979..3abac81ee7 100644 --- a/redisinsight/api/src/modules/database/providers/database-overview.provider.ts +++ b/redisinsight/api/src/modules/database/providers/database-overview.provider.ts @@ -8,19 +8,21 @@ import { sumBy, isNumber, } from 'lodash'; -import { - convertRedisInfoReplyToObject, -} from 'src/utils'; import { getTotalKeys, convertMultilineReplyToObject } from 'src/modules/redis/utils'; import { DatabaseOverview } from 'src/modules/database/models/database-overview'; import { ClientMetadata } from 'src/common/models'; import { RedisClient, RedisClientConnectionType, RedisClientNodeRole } from 'src/modules/redis/client'; import { DatabaseOverviewKeyspace } from '../constants/overview'; +import { DatabaseInfoProvider } from './database-info.provider'; @Injectable() export class DatabaseOverviewProvider { private previousCpuStats = new Map(); + constructor( + private readonly databaseInfoProvider: DatabaseInfoProvider, + ) {} + /** * Calculates redis database metrics based on connection type (eg Cluster or Standalone) * @param clientMetadata @@ -74,13 +76,14 @@ export class DatabaseOverviewProvider { */ private async getNodeInfo(client: RedisClient) { const { host, port } = client.options; + let infoData; + + try { + infoData = await this.databaseInfoProvider.getRedisInfo(client); + } catch (e) {} + return { - ...convertRedisInfoReplyToObject( - await client.sendCommand( - ['info'], - { replyEncoding: 'utf8' }, - ) as string, - ), + ...infoData, host, port, };