import { useParams } from 'common' import Link from 'next/link' import { Badge, Button, Input, InputGroup, InputGroupAddon, InputGroupInput, Tooltip, TooltipContent, TooltipTrigger, } from 'ui' import { Admonition } from 'ui-patterns/admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { ProjectUpgradeAlert } from '../General/Infrastructure/ProjectUpgradeAlert' import { ReadReplicasWarning, ValidationErrorsWarning, ValidationWarningsAdmonition, } from './UpgradeWarnings' import { NoticeBar } from '@/components/interfaces/DiskManagement/ui/NoticeBar' import { ScaffoldContainer, ScaffoldDivider, ScaffoldSection, ScaffoldSectionContent, ScaffoldSectionDetail, } from '@/components/layouts/Scaffold' import AlertError from '@/components/ui/AlertError' import { useProjectUpgradeEligibilityQuery } from '@/data/config/project-upgrade-eligibility-query' import { useProjectServiceVersionsQuery } from '@/data/projects/project-service-versions' import { useReadReplicasQuery } from '@/data/read-replicas/replicas-query' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { useIsOrioleDb, useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' export const InfrastructureInfo = () => { const { ref } = useParams() const { data: project } = useSelectedProjectQuery() const { projectAuthAll: authEnabled, projectSettingsDatabaseUpgrades: showDatabaseUpgrades, databaseReplication: showReplication, } = useIsFeatureEnabled([ 'project_auth:all', 'project_settings:database_upgrades', 'database:replication', ]) const { data, error, isPending: isLoadingUpgradeEligibility, isError: isErrorUpgradeEligibility, isSuccess: isSuccessUpgradeEligibility, } = useProjectUpgradeEligibilityQuery({ projectRef: ref, }) const { data: serviceVersions, error: serviceVersionsError, isPending: isLoadingServiceVersions, isError: isErrorServiceVersions, isSuccess: isSuccessServiceVersions, } = useProjectServiceVersionsQuery({ projectRef: ref }) const { data: databases } = useReadReplicasQuery({ projectRef: ref }) const { current_app_version, current_app_version_release_channel, latest_app_version } = data || {} const isOnLatestVersion = current_app_version === latest_app_version const currentPgVersion = (current_app_version ?? '') .split('briven-postgres-')[1] ?.replace('-orioledb', '') const isVisibleReleaseChannel = current_app_version_release_channel && !['ga', 'withdrawn'].includes(current_app_version_release_channel) ? current_app_version_release_channel : undefined const isOrioleDb = useIsOrioleDb() const latestPgVersion = (latest_app_version ?? '').split('briven-postgres-')[1] const isInactive = project?.status === 'INACTIVE' const hasReadReplicas = (databases ?? []).length > 1 return ( <> {project?.cloud_provider !== 'FLY' && showReplication && ( Go to Replication } /> )}

Service versions

Service versions and upgrade eligibility for your provisioned instance.

{isInactive ? ( ) : ( <> {/* [Joshen] Double check why we need this waterfall loading behaviour here */} {isLoadingUpgradeEligibility && } {isErrorUpgradeEligibility && ( )} {isSuccessUpgradeEligibility && ( <> {isLoadingServiceVersions && } {isErrorServiceVersions && ( )} {isSuccessServiceVersions && ( <> {authEnabled && ( )} {[ isVisibleReleaseChannel && ( {isVisibleReleaseChannel} This project uses a {isVisibleReleaseChannel} database version release ), isOrioleDb && ( OrioleDB This project uses OrioleDB ), isOnLatestVersion && ( Latest Project is on the latest version of Postgres that Briven supports ), ]} )} {showDatabaseUpgrades && data && data.eligible ? ( hasReadReplicas ? ( ) : ( ) ) : null} {showDatabaseUpgrades && data && !data.eligible && ( )} {showDatabaseUpgrades && data && data.warnings && ( )} )} )}
) }