From 14562e9c8abe793bd428eba3a1da196bf03f3e41 Mon Sep 17 00:00:00 2001 From: angelico Date: Wed, 30 Apr 2025 15:29:48 +0800 Subject: [PATCH] chore: init useIsOrioleDbInAws (#35325) * chore: check for cloud provider in useIsOrioleDb * chore: introduce useIsOrioleDbInAwsNew instead * chore: consolidate to using useIsOrioleDb * chore: selectively include useIsOrioleDbInAwsNew in conditionals * fix: prettier * fix: incorrect cloud provider * fix: update conditional instead * fix: prettier * Simplify logic * Smol fix --------- Co-authored-by: Joshen Lim --- .../PostgresVersionSelector.tsx | 2 +- .../interfaces/Settings/Addons/Addons.tsx | 5 ++-- .../Infrastructure/InfrastructureInfo.tsx | 25 +++++++++---------- apps/studio/data/database/backups-query.ts | 9 ++++--- apps/studio/hooks/misc/useSelectedProject.ts | 11 +++++++- .../project/[ref]/database/backups/pitr.tsx | 8 +++--- .../[ref]/database/backups/scheduled.tsx | 8 +++--- 7 files changed, 40 insertions(+), 28 deletions(-) diff --git a/apps/studio/components/interfaces/ProjectCreation/PostgresVersionSelector.tsx b/apps/studio/components/interfaces/ProjectCreation/PostgresVersionSelector.tsx index dd5bb1a399c..cfdcb09cfee 100644 --- a/apps/studio/components/interfaces/ProjectCreation/PostgresVersionSelector.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/PostgresVersionSelector.tsx @@ -76,7 +76,7 @@ export const PostgresVersionSelector = ({ const defaultValue = gaVersion ? formatValue(gaVersion) : formatValue(availableVersions[0]) form.setValue('postgresVersionSelection', defaultValue) } - }, [isSuccess, form]) + }, [isSuccess, availableVersions, form]) return ( diff --git a/apps/studio/components/interfaces/Settings/Addons/Addons.tsx b/apps/studio/components/interfaces/Settings/Addons/Addons.tsx index 16cc9ddf870..9d426018192 100644 --- a/apps/studio/components/interfaces/Settings/Addons/Addons.tsx +++ b/apps/studio/components/interfaces/Settings/Addons/Addons.tsx @@ -32,7 +32,7 @@ import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-que import { useProjectAddonsQuery } from 'data/subscriptions/project-addons-query' import type { ProjectAddonVariantMeta } from 'data/subscriptions/types' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' -import { useIsOrioleDb, useProjectByRef } from 'hooks/misc/useSelectedProject' +import { useIsOrioleDb, useIsOrioleDbInAws, useProjectByRef } from 'hooks/misc/useSelectedProject' import { useFlag } from 'hooks/ui/useFlag' import { getCloudProviderArchitecture } from 'lib/cloudprovider-utils' import { BASE_PATH, INSTANCE_MICRO_SPECS, INSTANCE_NANO_SPECS } from 'lib/constants' @@ -54,6 +54,7 @@ const Addons = () => { const isBranch = parentProject !== undefined const isProjectActive = useIsProjectActive() const isOrioleDb = useIsOrioleDb() + const isOrioleDbInAws = useIsOrioleDbInAws() const { data: settings } = useProjectSettingsV2Query({ projectRef }) const { data: subscription } = useOrgSubscriptionQuery({ orgSlug: selectedOrg?.slug }) @@ -486,7 +487,7 @@ const Addons = () => { - ) : isOrioleDb ? ( + ) : isOrioleDbInAws ? ( { current_app_version_release_channel && current_app_version_release_channel !== 'ga' ? current_app_version_release_channel : undefined - const isOrioleDb = (current_app_version ?? '').includes('orioledb') + const isOrioleDb = useIsOrioleDb() const latestPgVersion = (latest_app_version ?? '').split('supabase-postgres-')[1] const isInactive = project?.status === 'INACTIVE' @@ -147,18 +148,16 @@ const InfrastructureInfo = () => { ), isOrioleDb && ( - <> - - - - OrioleDB - - - - This project uses OrioleDB - - - + + + + OrioleDB + + + + This project uses OrioleDB + + ), isOnLatestVersion && ( diff --git a/apps/studio/data/database/backups-query.ts b/apps/studio/data/database/backups-query.ts index 626ffef968d..7cef5a9462a 100644 --- a/apps/studio/data/database/backups-query.ts +++ b/apps/studio/data/database/backups-query.ts @@ -2,7 +2,7 @@ import { useQuery, UseQueryOptions } from '@tanstack/react-query' import type { components } from 'data/api' import { get, handleError } from 'data/fetchers' -import { useIsOrioleDb } from 'hooks/misc/useSelectedProject' +import { useIsOrioleDbInAws } from 'hooks/misc/useSelectedProject' import type { ResponseError } from 'types' import { databaseKeys } from './keys' @@ -32,11 +32,14 @@ export const useBackupsQuery = ( { enabled = true, ...options }: UseQueryOptions = {} ) => { // [Joshen] Check for specifically false to account for project not loaded yet - const isOrioleDb = useIsOrioleDb() + const isOrioleDbInAws = useIsOrioleDbInAws() return useQuery( databaseKeys.backups(projectRef), ({ signal }) => getBackups({ projectRef }, signal), - { enabled: enabled && isOrioleDb === false && typeof projectRef !== 'undefined', ...options } + { + enabled: enabled && !isOrioleDbInAws && typeof projectRef !== 'undefined', + ...options, + } ) } diff --git a/apps/studio/hooks/misc/useSelectedProject.ts b/apps/studio/hooks/misc/useSelectedProject.ts index 7fb9b5d60e8..c973f22e083 100644 --- a/apps/studio/hooks/misc/useSelectedProject.ts +++ b/apps/studio/hooks/misc/useSelectedProject.ts @@ -1,7 +1,9 @@ +import { useMemo } from 'react' + import { useIsLoggedIn, useParams } from 'common' import { useProjectDetailQuery } from 'data/projects/project-detail-query' import { ProjectInfo, useProjectsQuery } from 'data/projects/projects-query' -import { useMemo } from 'react' +import { PROVIDERS } from 'lib/constants' export function useSelectedProject({ enabled = true } = {}) { const { ref } = useParams() @@ -37,3 +39,10 @@ export const useIsOrioleDb = () => { const isOrioleDb = project?.dbVersion?.endsWith('orioledb') return isOrioleDb } + +export const useIsOrioleDbInAws = () => { + const project = useSelectedProject() + const isOrioleDbInAws = + project?.dbVersion?.endsWith('orioledb') && project?.cloud_provider === PROVIDERS.AWS.id + return isOrioleDbInAws +} diff --git a/apps/studio/pages/project/[ref]/database/backups/pitr.tsx b/apps/studio/pages/project/[ref]/database/backups/pitr.tsx index 166c05189bb..275ae658474 100644 --- a/apps/studio/pages/project/[ref]/database/backups/pitr.tsx +++ b/apps/studio/pages/project/[ref]/database/backups/pitr.tsx @@ -5,6 +5,7 @@ import { useParams } from 'common' import DatabaseBackupsNav from 'components/interfaces/Database/Backups/DatabaseBackupsNav' import { PITRNotice, PITRSelection } from 'components/interfaces/Database/Backups/PITR' import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout' +import DefaultLayout from 'components/layouts/DefaultLayout' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold' import AlertError from 'components/ui/AlertError' @@ -16,12 +17,11 @@ import UpgradeToPro from 'components/ui/UpgradeToPro' import { useBackupsQuery } from 'data/database/backups-query' import { useCheckPermissions, usePermissionsLoaded } from 'hooks/misc/useCheckPermissions' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' -import { useIsOrioleDb } from 'hooks/misc/useSelectedProject' +import { useIsOrioleDbInAws } from 'hooks/misc/useSelectedProject' import { PROJECT_STATUS } from 'lib/constants' import type { NextPageWithLayout } from 'types' import { Alert_Shadcn_, AlertDescription_Shadcn_, AlertTitle_Shadcn_ } from 'ui' import { Admonition } from 'ui-patterns' -import DefaultLayout from 'components/layouts/DefaultLayout' const DatabasePhysicalBackups: NextPageWithLayout = () => { return ( @@ -51,7 +51,7 @@ const PITR = () => { const { ref: projectRef } = useParams() const { project } = useProjectContext() const organization = useSelectedOrganization() - const isOrioleDb = useIsOrioleDb() + const isOrioleDbInAws = useIsOrioleDbInAws() const { data: backups, error, isLoading, isError, isSuccess } = useBackupsQuery({ projectRef }) const plan = organization?.plan?.id @@ -65,7 +65,7 @@ const PITR = () => { return } - if (isOrioleDb) { + if (isOrioleDbInAws) { return ( { const { ref: projectRef } = useParams() const { data: backups, error, isLoading, isError, isSuccess } = useBackupsQuery({ projectRef }) - const isOrioleDb = useIsOrioleDb() + const isOrioleDbInAws = useIsOrioleDbInAws() const isPitrEnabled = backups?.pitr_enabled const isPermissionsLoaded = usePermissionsLoaded() @@ -39,7 +39,7 @@ const DatabaseScheduledBackups: NextPageWithLayout = () => { - {isOrioleDb ? ( + {isOrioleDbInAws ? (