import type {InfoViewerItem} from '../../../../../components/InfoViewer'; import {formatObject} from '../../../../../components/InfoViewer'; import { formatPQGroupItem, formatPQPartitionConfig, formatPQPartitionStrategy, formatPQTabletConfig, } from '../../../../../components/InfoViewer/formatters'; import type { TEvDescribeSchemeResult, TPQPartitionConfig, TPQPartitionStrategy, TPQTabletConfig, TPersQueueGroupDescription, } from '../../../../../types/api/schema'; import {EPQPartitionStrategyType} from '../../../../../types/api/schema'; export const prepareTopicSchemaInfo = (data?: TEvDescribeSchemeResult): Array => { const pqGroupData = data?.PathDescription?.PersQueueGroup; if (!pqGroupData) { return []; } const {Partitions = [], PQTabletConfig} = pqGroupData; const {Codecs, MeteringMode, PartitionStrategy, PartitionConfig} = PQTabletConfig ?? {}; const {WriteSpeedInBytesPerSecond, StorageLimitBytes} = PartitionConfig ?? {}; //@ts-expect-error const pqGeneralInfo = formatObject(formatPQGroupItem, { Partitions, PQTabletConfig, }); //@ts-expect-error const pqPartitionInfo = formatObject(formatPQPartitionConfig, { StorageLimitBytes, WriteSpeedInBytesPerSecond, }); //@ts-expect-error const pqTabletInfo = formatObject(formatPQTabletConfig, { Codecs, MeteringMode, }); let pqAutopartitioningInfo: InfoViewerItem[] = []; const strategyType = PartitionStrategy?.PartitionStrategyType; if (PartitionStrategy && strategyType) { // For a disabled strategy only the state itself is meaningful; otherwise show the bounds. const strategyFields: TPQPartitionStrategy = strategyType === EPQPartitionStrategyType.DISABLED ? {PartitionStrategyType: strategyType} : { PartitionStrategyType: strategyType, MinPartitionCount: PartitionStrategy.MinPartitionCount, MaxPartitionCount: PartitionStrategy.MaxPartitionCount, }; pqAutopartitioningInfo = formatObject( formatPQPartitionStrategy, strategyFields, ); } return [...pqGeneralInfo, ...pqPartitionInfo, ...pqTabletInfo, ...pqAutopartitioningInfo]; };