import {Label} from '@gravity-ui/uikit'; import type {YDBDefinitionListItem} from '../../../../../../components/YDBDefinitionList/YDBDefinitionList'; import type {TPartitionConfig, TTTLSettings} from '../../../../../../types/api/schema'; import {formatBytes} from '../../../../../../utils/bytesParsers'; import {READ_REPLICAS_MODE} from '../constants'; import i18n from '../i18n'; import {prepareTTL} from './prepareTTL'; import type {PartitionProgressConfig} from './renderHelpers'; import { renderBloomFilterStatusIcon, renderCompressionGroupsContent, renderCurrentPartitionsContent, } from './renderHelpers'; /** * Prepares general information sections for row tables (EPathTypeTable) */ export function prepareRowTableGeneralInfo( PartitionConfig: TPartitionConfig, Progress: PartitionProgressConfig, TTLSettings?: TTTLSettings, ) { const {PartitioningPolicy = {}, FollowerGroups, EnableFilterByKey} = PartitionConfig; const left: YDBDefinitionListItem[] = []; const right: YDBDefinitionListItem[] = []; const splitByLoadEnabled = Boolean(PartitioningPolicy?.SplitByLoadSettings?.Enabled); const partitioningByLoad = splitByLoadEnabled ? ( ) : ( ); // SizeToSplit is unset (or 0) when splitting by size is disabled — it is not // a "use the 2 GB default" signal, see FillPartitioningSettings on the server. const splitBySizeEnabled = Boolean( PartitioningPolicy.SizeToSplit && Number(PartitioningPolicy.SizeToSplit) > 0, ); const partitioningBySize = splitBySizeEnabled ? ( ) : ( ); left.push( { name: i18n('field_current-partitions'), content: renderCurrentPartitionsContent(Progress), }, { name: i18n('field_partitioning-by-size'), content: partitioningBySize, }, {name: i18n('field_partitioning-by-load'), content: partitioningByLoad}, ); if (TTLSettings) { const ttlInfo = prepareTTL(TTLSettings); if (ttlInfo) { left.push({ ...ttlInfo, content: ( {ttlInfo.content} ), }); } } let readReplicasConfig; if (FollowerGroups && FollowerGroups.length) { const {RequireAllDataCenters, FollowerCountPerDataCenter, FollowerCount} = FollowerGroups[0]; readReplicasConfig = RequireAllDataCenters && FollowerCountPerDataCenter ? `${READ_REPLICAS_MODE.PER_AZ}: ${FollowerCount}` : `${READ_REPLICAS_MODE.ANY_AZ}: ${FollowerCount}`; } else { readReplicasConfig = i18n('value_no'); } right.push( {name: i18n('field_read-replicas'), content: readReplicasConfig}, { name: i18n('field_bloom-filter'), content: renderBloomFilterStatusIcon(Boolean(EnableFilterByKey)), }, { name: i18n('field_compression-groups'), content: renderCompressionGroupsContent(PartitionConfig), }, ); return {left, right}; }