diff --git a/apps/studio/components/interfaces/QueryPerformance/index-advisor.utils.ts b/apps/studio/components/interfaces/QueryPerformance/index-advisor.utils.ts index d8e79d0e2f0..fd67cb67956 100644 --- a/apps/studio/components/interfaces/QueryPerformance/index-advisor.utils.ts +++ b/apps/studio/components/interfaces/QueryPerformance/index-advisor.utils.ts @@ -40,7 +40,7 @@ export function calculateImprovement( interface CreateIndexParams { projectRef?: string - connectionString?: string + connectionString?: string | null indexStatements: string[] onSuccess?: () => void onError?: (error: any) => void diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx index bcb691d950d..6054a051341 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx @@ -13,7 +13,7 @@ import ResizableAIWidget from 'components/ui/AIEditor/ResizableAIWidget' import { GridFooter } from 'components/ui/GridFooter' import { useSqlTitleGenerateMutation } from 'data/ai/sql-title-mutation' import { useEntityDefinitionsQuery } from 'data/database/entity-definitions-query' -import { constructHeaders } from 'data/fetchers' +import { constructHeaders, isValidConnString } from 'data/fetchers' import { lintKeys } from 'data/lint/keys' import { useReadReplicasQuery } from 'data/read-replicas/replicas-query' import { useExecuteSqlMutation } from 'data/sql/execute-sql-mutation' @@ -147,9 +147,12 @@ export const SQLEditor = () => { const { data: subscription } = useOrgSubscriptionQuery({ orgSlug: org?.slug }) const hasHipaaAddon = subscriptionHasHipaaAddon(subscription) - const { data: databases, isSuccess: isSuccessReadReplicas } = useReadReplicasQuery({ - projectRef: ref, - }) + const { data: databases, isSuccess: isSuccessReadReplicas } = useReadReplicasQuery( + { + projectRef: ref, + }, + { enabled: isValidConnString(project?.connectionString) } + ) const { data, refetch: refetchEntityDefinitions } = useEntityDefinitionsQuery( { @@ -157,7 +160,7 @@ export const SQLEditor = () => { projectRef: project?.ref, connectionString: project?.connectionString, }, - { enabled: includeSchemaMetadata } + { enabled: isValidConnString(project?.connectionString) && includeSchemaMetadata } ) const entityDefinitions = includeSchemaMetadata ? data?.map((def) => def.sql.trim()) : undefined @@ -308,7 +311,7 @@ export const SQLEditor = () => { const connectionString = databases?.find( (db) => db.identifier === databaseSelectorState.selectedDatabaseId )?.connectionString - if (IS_PLATFORM && !connectionString) { + if (!isValidConnString(connectionString)) { return toast.error('Unable to run query: Connection string is missing') } diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.utils.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.utils.tsx index af57fb9decb..c15f39c0fd4 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.utils.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.utils.tsx @@ -43,7 +43,7 @@ const CHUNK_SIZE = 1024 * 1024 * 0.1 // 0.1MB */ export const addPrimaryKey = async ( projectRef: string, - connectionString: string | undefined, + connectionString: string | undefined | null, schema: string, table: string, columns: string[] @@ -60,7 +60,7 @@ export const addPrimaryKey = async ( export const dropConstraint = async ( projectRef: string, - connectionString: string | undefined, + connectionString: string | undefined | null, schema: string, table: string, name: string @@ -124,7 +124,7 @@ export const addForeignKey = async ({ foreignKeys, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null table: { schema: string; name: string } foreignKeys: ForeignKey[] }) => { @@ -165,7 +165,7 @@ export const removeForeignKey = async ({ foreignKeys, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null table: { schema: string; name: string } foreignKeys: ForeignKey[] }) => { @@ -185,7 +185,7 @@ export const updateForeignKey = async ({ foreignKeys, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null table: { schema: string; name: string } foreignKeys: ForeignKey[] }) => { @@ -218,7 +218,7 @@ export const createColumn = async ({ toastId: _toastId, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null payload: CreateColumnPayload selectedTable: PostgresTable primaryKey?: Constraint @@ -295,7 +295,7 @@ export const updateColumn = async ({ skipSuccessMessage = false, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null id: string payload: UpdateColumnPayload selectedTable: PostgresTable @@ -362,7 +362,7 @@ export const updateColumn = async ({ export const duplicateTable = async ( projectRef: string, - connectionString: string | undefined, + connectionString: string | undefined | null, payload: { name: string; comment?: string }, metadata: { duplicateTable: PostgresTable @@ -452,7 +452,7 @@ export const createTable = async ({ importContent, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null toastId: string | number payload: { name: string @@ -642,7 +642,7 @@ export const updateTable = async ({ primaryKey, }: { projectRef: string - connectionString: string | undefined + connectionString?: string | null toastId: string | number table: PostgresTable payload: any @@ -783,7 +783,7 @@ export const updateTable = async ({ export const insertRowsViaSpreadsheet = async ( projectRef: string, - connectionString: string | undefined, + connectionString: string | undefined | null, file: any, table: PostgresTable, selectedHeaders: string[], @@ -845,7 +845,7 @@ export const insertRowsViaSpreadsheet = async ( export const insertTableRows = async ( projectRef: string, - connectionString: string | undefined, + connectionString: string | undefined | null, table: PostgresTable, rows: any, selectedHeaders: string[], @@ -908,7 +908,7 @@ const updateForeignKeys = async ({ existingForeignKeyRelations, }: { projectRef: string - connectionString?: string + connectionString?: string | null table: { schema: string; name: string } foreignKeys: ForeignKey[] existingForeignKeyRelations: ForeignKeyConstraint[] diff --git a/apps/studio/components/ui/AIEditor/index.tsx b/apps/studio/components/ui/AIEditor/index.tsx index 867124dd9da..4e09b1aff4a 100644 --- a/apps/studio/components/ui/AIEditor/index.tsx +++ b/apps/studio/components/ui/AIEditor/index.tsx @@ -18,7 +18,7 @@ interface AIEditorProps { aiEndpoint?: string aiMetadata?: { projectRef?: string - connectionString?: string + connectionString?: string | null includeSchemaMetadata?: boolean } initialPrompt?: string diff --git a/apps/studio/components/ui/FileExplorerAndEditor/FileExplorerAndEditor.tsx b/apps/studio/components/ui/FileExplorerAndEditor/FileExplorerAndEditor.tsx index d9d6f233b54..d175f5be677 100644 --- a/apps/studio/components/ui/FileExplorerAndEditor/FileExplorerAndEditor.tsx +++ b/apps/studio/components/ui/FileExplorerAndEditor/FileExplorerAndEditor.tsx @@ -27,7 +27,7 @@ interface FileExplorerAndEditorProps { aiEndpoint?: string aiMetadata?: { projectRef?: string - connectionString?: string + connectionString?: string | null includeSchemaMetadata?: boolean } } diff --git a/apps/studio/data/api-settings/create-and-expose-api-schema-mutation.ts b/apps/studio/data/api-settings/create-and-expose-api-schema-mutation.ts index 8e9a5815f03..c3f2f2c0b53 100644 --- a/apps/studio/data/api-settings/create-and-expose-api-schema-mutation.ts +++ b/apps/studio/data/api-settings/create-and-expose-api-schema-mutation.ts @@ -9,7 +9,7 @@ import type { ResponseError } from 'types' export type CreateAndExposeAPISchemaVariables = { projectRef: string - connectionString?: string + connectionString?: string | null existingPostgrestConfig: { db_pool: any max_rows: number diff --git a/apps/studio/data/auth/users-count-query.ts b/apps/studio/data/auth/users-count-query.ts index 165ee970800..d0d1d47db85 100644 --- a/apps/studio/data/auth/users-count-query.ts +++ b/apps/studio/data/auth/users-count-query.ts @@ -6,7 +6,7 @@ import { Filter } from './users-infinite-query' type UsersCountVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null keywords?: string filter?: Filter providers?: string[] diff --git a/apps/studio/data/auth/users-infinite-query.ts b/apps/studio/data/auth/users-infinite-query.ts index a5306cb2fdd..2ee14bb1eb5 100644 --- a/apps/studio/data/auth/users-infinite-query.ts +++ b/apps/studio/data/auth/users-infinite-query.ts @@ -10,7 +10,7 @@ export type Filter = 'verified' | 'unverified' | 'anonymous' export type UsersVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null page?: number keywords?: string filter?: Filter diff --git a/apps/studio/data/config/disk-breakdown-query.ts b/apps/studio/data/config/disk-breakdown-query.ts index 5218d40d51f..5f5f42c5ce9 100644 --- a/apps/studio/data/config/disk-breakdown-query.ts +++ b/apps/studio/data/config/disk-breakdown-query.ts @@ -6,7 +6,7 @@ import { executeSql } from 'data/sql/execute-sql-query' export type DiskBreakdownVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } type DiskBreakdownResult = { diff --git a/apps/studio/data/database-columns/database-column-create-mutation.ts b/apps/studio/data/database-columns/database-column-create-mutation.ts index c60bc80837e..0a96c279bba 100644 --- a/apps/studio/data/database-columns/database-column-create-mutation.ts +++ b/apps/studio/data/database-columns/database-column-create-mutation.ts @@ -9,7 +9,7 @@ export type CreateColumnBody = components['schemas']['CreateColumnBody'] export type DatabaseColumnCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null payload: CreateColumnBody } diff --git a/apps/studio/data/database-columns/database-column-delete-mutation.ts b/apps/studio/data/database-columns/database-column-delete-mutation.ts index 593a70c9cf6..508c448ae90 100644 --- a/apps/studio/data/database-columns/database-column-delete-mutation.ts +++ b/apps/studio/data/database-columns/database-column-delete-mutation.ts @@ -11,7 +11,7 @@ import type { ResponseError } from 'types' export type DatabaseColumnDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: string cascade?: boolean table?: { id: number; schema: string; name: string } diff --git a/apps/studio/data/database-columns/database-column-update-mutation.ts b/apps/studio/data/database-columns/database-column-update-mutation.ts index 4f486f8eaca..91b1fb74b3e 100644 --- a/apps/studio/data/database-columns/database-column-update-mutation.ts +++ b/apps/studio/data/database-columns/database-column-update-mutation.ts @@ -9,7 +9,7 @@ export type UpdateColumnBody = components['schemas']['UpdateColumnBody'] export type DatabaseColumnUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: string payload: components['schemas']['UpdateColumnBody'] } diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-create-mutation.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-create-mutation.ts index d05105a295e..0424703a2dc 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-jobs-create-mutation.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-create-mutation.ts @@ -7,7 +7,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null query: string } diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-delete-mutation.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-delete-mutation.ts index 3081d7a1979..13fa2686e41 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-jobs-delete-mutation.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-delete-mutation.ts @@ -7,7 +7,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null jobId: number } diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-query.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-query.ts index 704c40393e7..2112c894261 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-jobs-query.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-query.ts @@ -5,7 +5,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type CronJob = { diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts index ef31e6e2d96..04d935db667 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts @@ -7,7 +7,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobRunVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null jobId: number } diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-runs-infinite-query.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-runs-infinite-query.ts index ce4e4f4bc29..680ac4a5562 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-jobs-runs-infinite-query.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-runs-infinite-query.ts @@ -7,7 +7,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobRunsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null jobId: number } diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-toggle-mutation.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-toggle-mutation.ts index a1e2112262a..b7f8471bafe 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-jobs-toggle-mutation.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-toggle-mutation.ts @@ -7,7 +7,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobToggleVariables = { projectRef: string - connectionString?: string + connectionString?: string | null jobId: number active: boolean } diff --git a/apps/studio/data/database-cron-jobs/database-cron-timezone-query.ts b/apps/studio/data/database-cron-jobs/database-cron-timezone-query.ts index ec9423fcba5..159ed285858 100644 --- a/apps/studio/data/database-cron-jobs/database-cron-timezone-query.ts +++ b/apps/studio/data/database-cron-jobs/database-cron-timezone-query.ts @@ -5,7 +5,7 @@ import { databaseCronJobsKeys } from './keys' export type DatabaseCronJobsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getDatabaseCronTimezone({ diff --git a/apps/studio/data/database-extensions/database-extension-disable-mutation.ts b/apps/studio/data/database-extensions/database-extension-disable-mutation.ts index b031411db36..c126cdbf030 100644 --- a/apps/studio/data/database-extensions/database-extension-disable-mutation.ts +++ b/apps/studio/data/database-extensions/database-extension-disable-mutation.ts @@ -7,7 +7,7 @@ import { databaseExtensionsKeys } from './keys' export type DatabaseExtensionDisableVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: string } diff --git a/apps/studio/data/database-extensions/database-extension-enable-mutation.ts b/apps/studio/data/database-extensions/database-extension-enable-mutation.ts index 61ac3b0dd52..3dc157c7671 100644 --- a/apps/studio/data/database-extensions/database-extension-enable-mutation.ts +++ b/apps/studio/data/database-extensions/database-extension-enable-mutation.ts @@ -8,7 +8,7 @@ import { databaseExtensionsKeys } from './keys' export type DatabaseExtensionEnableVariables = { projectRef: string - connectionString?: string + connectionString?: string | null schema: string name: string version: string diff --git a/apps/studio/data/database-extensions/database-extensions-query.ts b/apps/studio/data/database-extensions/database-extensions-query.ts index cff897876ae..3d73153ca4e 100644 --- a/apps/studio/data/database-extensions/database-extensions-query.ts +++ b/apps/studio/data/database-extensions/database-extensions-query.ts @@ -10,7 +10,7 @@ export type DatabaseExtension = components['schemas']['PostgresExtension'] export type DatabaseExtensionsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getDatabaseExtensions( diff --git a/apps/studio/data/database-functions/database-functions-create-mutation.ts b/apps/studio/data/database-functions/database-functions-create-mutation.ts index de7ea73dc6d..c70fbb08f3c 100644 --- a/apps/studio/data/database-functions/database-functions-create-mutation.ts +++ b/apps/studio/data/database-functions/database-functions-create-mutation.ts @@ -9,7 +9,7 @@ import type { ResponseError } from 'types' export type DatabaseFunctionCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null payload: z.infer } diff --git a/apps/studio/data/database-functions/database-functions-delete-mutation.ts b/apps/studio/data/database-functions/database-functions-delete-mutation.ts index af2f36f65f2..4610ca899df 100644 --- a/apps/studio/data/database-functions/database-functions-delete-mutation.ts +++ b/apps/studio/data/database-functions/database-functions-delete-mutation.ts @@ -10,7 +10,7 @@ import { DatabaseFunction } from './database-functions-query' export type DatabaseFunctionDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null func: DatabaseFunction } diff --git a/apps/studio/data/database-functions/database-functions-query.ts b/apps/studio/data/database-functions/database-functions-query.ts index 986ab57b79e..cef5dc7ddb3 100644 --- a/apps/studio/data/database-functions/database-functions-query.ts +++ b/apps/studio/data/database-functions/database-functions-query.ts @@ -7,7 +7,7 @@ import { z } from 'zod' export type DatabaseFunctionsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type DatabaseFunction = z.infer diff --git a/apps/studio/data/database-functions/database-functions-update-mutation.ts b/apps/studio/data/database-functions/database-functions-update-mutation.ts index cc4a3d07841..a088e08b08d 100644 --- a/apps/studio/data/database-functions/database-functions-update-mutation.ts +++ b/apps/studio/data/database-functions/database-functions-update-mutation.ts @@ -10,7 +10,7 @@ import type { DatabaseFunction } from './database-functions-query' export type DatabaseFunctionUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null func: DatabaseFunction payload: z.infer } diff --git a/apps/studio/data/database-indexes/index-create-mutation.ts b/apps/studio/data/database-indexes/index-create-mutation.ts index 2f7fbe3bf3f..efb58d18c32 100644 --- a/apps/studio/data/database-indexes/index-create-mutation.ts +++ b/apps/studio/data/database-indexes/index-create-mutation.ts @@ -7,7 +7,7 @@ import { databaseIndexesKeys } from './keys' export type DatabaseIndexCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null payload: { schema: string entity: string diff --git a/apps/studio/data/database-indexes/index-delete-mutation.ts b/apps/studio/data/database-indexes/index-delete-mutation.ts index 2384bb18088..13bd3e835da 100644 --- a/apps/studio/data/database-indexes/index-delete-mutation.ts +++ b/apps/studio/data/database-indexes/index-delete-mutation.ts @@ -7,7 +7,7 @@ import { databaseIndexesKeys } from './keys' export type DatabaseIndexDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null name: string } diff --git a/apps/studio/data/database-indexes/indexes-query.ts b/apps/studio/data/database-indexes/indexes-query.ts index c108187ab80..840250bd002 100644 --- a/apps/studio/data/database-indexes/indexes-query.ts +++ b/apps/studio/data/database-indexes/indexes-query.ts @@ -29,7 +29,7 @@ export type DatabaseIndex = { export type IndexesVariables = GetIndexesArgs & { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getIndexes( diff --git a/apps/studio/data/database-policies/database-policies-query.ts b/apps/studio/data/database-policies/database-policies-query.ts index d9855f37681..a2602491f46 100644 --- a/apps/studio/data/database-policies/database-policies-query.ts +++ b/apps/studio/data/database-policies/database-policies-query.ts @@ -8,7 +8,7 @@ import { databasePoliciesKeys } from './keys' export type DatabasePoliciesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null schema?: string } diff --git a/apps/studio/data/database-policies/database-policy-create-mutation.ts b/apps/studio/data/database-policies/database-policy-create-mutation.ts index fca5db95f4b..4a8579b7f2f 100644 --- a/apps/studio/data/database-policies/database-policy-create-mutation.ts +++ b/apps/studio/data/database-policies/database-policy-create-mutation.ts @@ -10,7 +10,7 @@ type CreatePolicyBody = components['schemas']['CreatePolicyBody'] export type DatabasePolicyCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null payload: CreatePolicyBody } diff --git a/apps/studio/data/database-policies/database-policy-delete-mutation.ts b/apps/studio/data/database-policies/database-policy-delete-mutation.ts index fca0d5724ca..ff2877a4716 100644 --- a/apps/studio/data/database-policies/database-policy-delete-mutation.ts +++ b/apps/studio/data/database-policies/database-policy-delete-mutation.ts @@ -7,7 +7,7 @@ import { databasePoliciesKeys } from './keys' export type DatabasePolicyDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number } diff --git a/apps/studio/data/database-policies/database-policy-update-mutation.ts b/apps/studio/data/database-policies/database-policy-update-mutation.ts index 915a7bbed45..219df047af5 100644 --- a/apps/studio/data/database-policies/database-policy-update-mutation.ts +++ b/apps/studio/data/database-policies/database-policy-update-mutation.ts @@ -7,7 +7,7 @@ import { databasePoliciesKeys } from './keys' export type DatabasePolicyUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number payload: { name?: string diff --git a/apps/studio/data/database-publications/database-publications-create-mutation.ts b/apps/studio/data/database-publications/database-publications-create-mutation.ts index a31ec9b3461..c24fc141dbd 100644 --- a/apps/studio/data/database-publications/database-publications-create-mutation.ts +++ b/apps/studio/data/database-publications/database-publications-create-mutation.ts @@ -7,7 +7,7 @@ import { databasePublicationsKeys } from './keys' export type DatabasePublicationCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null name: string tables?: string[] publish_insert?: boolean diff --git a/apps/studio/data/database-publications/database-publications-query.ts b/apps/studio/data/database-publications/database-publications-query.ts index 4aaaed2b4a2..f8e20b269f7 100644 --- a/apps/studio/data/database-publications/database-publications-query.ts +++ b/apps/studio/data/database-publications/database-publications-query.ts @@ -5,7 +5,7 @@ import { databasePublicationsKeys } from './keys' export type DatabasePublicationsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getDatabasePublications( diff --git a/apps/studio/data/database-publications/database-publications-update-mutation.ts b/apps/studio/data/database-publications/database-publications-update-mutation.ts index 3a362f2dea8..225b8527e52 100644 --- a/apps/studio/data/database-publications/database-publications-update-mutation.ts +++ b/apps/studio/data/database-publications/database-publications-update-mutation.ts @@ -7,7 +7,7 @@ import { databasePublicationsKeys } from './keys' export type DatabasePublicationUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number tables?: string[] publish_insert?: boolean diff --git a/apps/studio/data/database-queues/database-queue-messages-archive-mutation.ts b/apps/studio/data/database-queues/database-queue-messages-archive-mutation.ts index 7b62fde3f48..a540def777c 100644 --- a/apps/studio/data/database-queues/database-queue-messages-archive-mutation.ts +++ b/apps/studio/data/database-queues/database-queue-messages-archive-mutation.ts @@ -7,7 +7,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueueMessageArchiveVariables = { projectRef: string - connectionString?: string + connectionString?: string | null queryName: string messageId: number } diff --git a/apps/studio/data/database-queues/database-queue-messages-delete-mutation.ts b/apps/studio/data/database-queues/database-queue-messages-delete-mutation.ts index 65c0c124bf2..947a2e5ed79 100644 --- a/apps/studio/data/database-queues/database-queue-messages-delete-mutation.ts +++ b/apps/studio/data/database-queues/database-queue-messages-delete-mutation.ts @@ -7,7 +7,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueueMessageDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null queueName: string messageId: number } diff --git a/apps/studio/data/database-queues/database-queue-messages-infinite-query.ts b/apps/studio/data/database-queues/database-queue-messages-infinite-query.ts index 8ac655704c1..6631308e8e8 100644 --- a/apps/studio/data/database-queues/database-queue-messages-infinite-query.ts +++ b/apps/studio/data/database-queues/database-queue-messages-infinite-query.ts @@ -9,7 +9,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueueVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null queueName: string status: QUEUE_MESSAGE_TYPE[] } diff --git a/apps/studio/data/database-queues/database-queue-messages-read-mutation.ts b/apps/studio/data/database-queues/database-queue-messages-read-mutation.ts index 601675001cb..ba1055362e7 100644 --- a/apps/studio/data/database-queues/database-queue-messages-read-mutation.ts +++ b/apps/studio/data/database-queues/database-queue-messages-read-mutation.ts @@ -7,7 +7,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueueMessageReadVariables = { projectRef: string - connectionString?: string + connectionString?: string | null queryName: string duration: number messageId: number diff --git a/apps/studio/data/database-queues/database-queue-messages-send-mutation.ts b/apps/studio/data/database-queues/database-queue-messages-send-mutation.ts index e06600ff413..23c5445b63b 100644 --- a/apps/studio/data/database-queues/database-queue-messages-send-mutation.ts +++ b/apps/studio/data/database-queues/database-queue-messages-send-mutation.ts @@ -7,7 +7,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueueMessageSendVariables = { projectRef: string - connectionString?: string + connectionString?: string | null queueName: string payload: string delay: number diff --git a/apps/studio/data/database-queues/database-queues-create-mutation.ts b/apps/studio/data/database-queues/database-queues-create-mutation.ts index 92c9e43d3b0..04f190ddabf 100644 --- a/apps/studio/data/database-queues/database-queues-create-mutation.ts +++ b/apps/studio/data/database-queues/database-queues-create-mutation.ts @@ -8,7 +8,7 @@ import { tableKeys } from 'data/tables/keys' export type DatabaseQueueCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null name: string type: 'basic' | 'partitioned' | 'unlogged' enableRls: boolean diff --git a/apps/studio/data/database-queues/database-queues-delete-mutation.ts b/apps/studio/data/database-queues/database-queues-delete-mutation.ts index 79a043428bc..f11846e102c 100644 --- a/apps/studio/data/database-queues/database-queues-delete-mutation.ts +++ b/apps/studio/data/database-queues/database-queues-delete-mutation.ts @@ -7,7 +7,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueueDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null queueName: string } diff --git a/apps/studio/data/database-queues/database-queues-expose-postgrest-status-query.ts b/apps/studio/data/database-queues/database-queues-expose-postgrest-status-query.ts index 353c162aa62..ea95acfd5ba 100644 --- a/apps/studio/data/database-queues/database-queues-expose-postgrest-status-query.ts +++ b/apps/studio/data/database-queues/database-queues-expose-postgrest-status-query.ts @@ -8,7 +8,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueuesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } // [Joshen] Check if all the relevant functions exist to indicate whether PGMQ has been exposed through PostgREST diff --git a/apps/studio/data/database-queues/database-queues-metrics-query.ts b/apps/studio/data/database-queues/database-queues-metrics-query.ts index 52fd53ab59b..5741d44f6c6 100644 --- a/apps/studio/data/database-queues/database-queues-metrics-query.ts +++ b/apps/studio/data/database-queues/database-queues-metrics-query.ts @@ -5,7 +5,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueuesMetricsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null queueName: string } diff --git a/apps/studio/data/database-queues/database-queues-purge-mutation.ts b/apps/studio/data/database-queues/database-queues-purge-mutation.ts index 7a4419b64ae..91f66ceb50b 100644 --- a/apps/studio/data/database-queues/database-queues-purge-mutation.ts +++ b/apps/studio/data/database-queues/database-queues-purge-mutation.ts @@ -7,7 +7,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueuePurgeVariables = { projectRef: string - connectionString?: string + connectionString?: string | null queueName: string } diff --git a/apps/studio/data/database-queues/database-queues-query.ts b/apps/studio/data/database-queues/database-queues-query.ts index f6d2168e947..e32ed69bcab 100644 --- a/apps/studio/data/database-queues/database-queues-query.ts +++ b/apps/studio/data/database-queues/database-queues-query.ts @@ -5,7 +5,7 @@ import { databaseQueuesKeys } from './keys' export type DatabaseQueuesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type PostgresQueue = { diff --git a/apps/studio/data/database-queues/database-queues-toggle-postgrest-mutation.ts b/apps/studio/data/database-queues/database-queues-toggle-postgrest-mutation.ts index 4c97cf51533..6c54894920f 100644 --- a/apps/studio/data/database-queues/database-queues-toggle-postgrest-mutation.ts +++ b/apps/studio/data/database-queues/database-queues-toggle-postgrest-mutation.ts @@ -9,7 +9,7 @@ import { databaseKeys } from 'data/database/keys' export type DatabaseQueueExposePostgrestVariables = { projectRef: string - connectionString?: string + connectionString?: string | null enable: boolean } diff --git a/apps/studio/data/database-roles/database-role-create-mutation.ts b/apps/studio/data/database-roles/database-role-create-mutation.ts index 9e827b0f3d9..49f5b03467c 100644 --- a/apps/studio/data/database-roles/database-role-create-mutation.ts +++ b/apps/studio/data/database-roles/database-role-create-mutation.ts @@ -10,7 +10,7 @@ type CreateRoleBody = Parameters[0] export type DatabaseRoleCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null payload: CreateRoleBody } diff --git a/apps/studio/data/database-roles/database-role-delete-mutation.ts b/apps/studio/data/database-roles/database-role-delete-mutation.ts index a082250e77a..acd97adac7f 100644 --- a/apps/studio/data/database-roles/database-role-delete-mutation.ts +++ b/apps/studio/data/database-roles/database-role-delete-mutation.ts @@ -10,7 +10,7 @@ type DropRoleBody = Parameters[1] export type DatabaseRoleDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number payload?: DropRoleBody } diff --git a/apps/studio/data/database-roles/database-role-update-mutation.ts b/apps/studio/data/database-roles/database-role-update-mutation.ts index c2e5e9fb21b..d12cf0d716b 100644 --- a/apps/studio/data/database-roles/database-role-update-mutation.ts +++ b/apps/studio/data/database-roles/database-role-update-mutation.ts @@ -10,7 +10,7 @@ type UpdateRoleBody = Parameters[1] export type DatabaseRoleUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number payload: UpdateRoleBody } diff --git a/apps/studio/data/database-roles/database-roles-query.ts b/apps/studio/data/database-roles/database-roles-query.ts index 8ea80d1b608..6b31844ff51 100644 --- a/apps/studio/data/database-roles/database-roles-query.ts +++ b/apps/studio/data/database-roles/database-roles-query.ts @@ -7,7 +7,7 @@ import { databaseRoleKeys } from './keys' export type DatabaseRolesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type PgRole = z.infer diff --git a/apps/studio/data/database-triggers/database-trigger-create-mutation.ts b/apps/studio/data/database-triggers/database-trigger-create-mutation.ts index 5b4e7d682b2..afb88d8292b 100644 --- a/apps/studio/data/database-triggers/database-trigger-create-mutation.ts +++ b/apps/studio/data/database-triggers/database-trigger-create-mutation.ts @@ -7,7 +7,7 @@ import { databaseTriggerKeys } from './keys' export type DatabaseTriggerCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null payload: any } diff --git a/apps/studio/data/database-triggers/database-trigger-delete-mutation.ts b/apps/studio/data/database-triggers/database-trigger-delete-mutation.ts index 3404c4a5461..10c75a6ff24 100644 --- a/apps/studio/data/database-triggers/database-trigger-delete-mutation.ts +++ b/apps/studio/data/database-triggers/database-trigger-delete-mutation.ts @@ -9,7 +9,7 @@ import { databaseTriggerKeys } from './keys' export type DatabaseTriggerDeleteVariables = { id: number projectRef: string - connectionString?: string + connectionString?: string | null } type DeleteDatabaseTriggerResponse = PostgresTrigger & { error?: any } diff --git a/apps/studio/data/database-triggers/database-trigger-update-mutation.ts b/apps/studio/data/database-triggers/database-trigger-update-mutation.ts index fccccbfdaeb..dbfd9a32f6d 100644 --- a/apps/studio/data/database-triggers/database-trigger-update-mutation.ts +++ b/apps/studio/data/database-triggers/database-trigger-update-mutation.ts @@ -8,7 +8,7 @@ import { databaseTriggerKeys } from './keys' export type DatabaseTriggerUpdateVariables = { id: number projectRef: string - connectionString?: string + connectionString?: string | null payload: any } diff --git a/apps/studio/data/database-triggers/database-trigger-update-transaction-mutation.ts b/apps/studio/data/database-triggers/database-trigger-update-transaction-mutation.ts index 20a501477b8..9acf3c75cd5 100644 --- a/apps/studio/data/database-triggers/database-trigger-update-transaction-mutation.ts +++ b/apps/studio/data/database-triggers/database-trigger-update-transaction-mutation.ts @@ -12,7 +12,7 @@ import { databaseTriggerKeys } from './keys' export type DatabaseTriggerUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null originalTrigger: any updatedTrigger: any } diff --git a/apps/studio/data/database-triggers/database-triggers-query.ts b/apps/studio/data/database-triggers/database-triggers-query.ts index a3c9a10db18..997d077c469 100644 --- a/apps/studio/data/database-triggers/database-triggers-query.ts +++ b/apps/studio/data/database-triggers/database-triggers-query.ts @@ -5,7 +5,7 @@ import { databaseTriggerKeys } from './keys' export type DatabaseTriggersVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getDatabaseTriggers( diff --git a/apps/studio/data/database/constraints-query.ts b/apps/studio/data/database/constraints-query.ts index bfefce69f65..ff111d7686b 100644 --- a/apps/studio/data/database/constraints-query.ts +++ b/apps/studio/data/database/constraints-query.ts @@ -51,7 +51,7 @@ inner join table_info ti export type TableConstraintsVariables = GetTableConstraintsVariables & { projectRef?: string - connectionString?: string + connectionString?: string | null } export type TableConstraintsData = Constraint[] diff --git a/apps/studio/data/database/database-size-query.ts b/apps/studio/data/database/database-size-query.ts index 484cff8525a..c5fcdaf2626 100644 --- a/apps/studio/data/database/database-size-query.ts +++ b/apps/studio/data/database/database-size-query.ts @@ -12,7 +12,7 @@ select sum(pg_database_size(pg_database.datname))::bigint as db_size from pg_dat export type DatabaseSizeVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getDatabaseSize( diff --git a/apps/studio/data/database/entity-definitions-query.ts b/apps/studio/data/database/entity-definitions-query.ts index 48d2ce9332a..3cbea18a8a8 100644 --- a/apps/studio/data/database/entity-definitions-query.ts +++ b/apps/studio/data/database/entity-definitions-query.ts @@ -78,7 +78,7 @@ from records r; export type EntityDefinitionsVariables = { limit?: number projectRef?: string - connectionString?: string + connectionString?: string | null schemas: string[] } diff --git a/apps/studio/data/database/foreign-key-constraints-query.ts b/apps/studio/data/database/foreign-key-constraints-query.ts index 351386d41a9..6774b7a8730 100644 --- a/apps/studio/data/database/foreign-key-constraints-query.ts +++ b/apps/studio/data/database/foreign-key-constraints-query.ts @@ -96,7 +96,7 @@ WHERE export type ForeignKeyConstraintsVariables = GetForeignKeyConstraintsVariables & { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getForeignKeyConstraints( diff --git a/apps/studio/data/database/keywords-query.ts b/apps/studio/data/database/keywords-query.ts index b33860dfadc..2369dd86c06 100644 --- a/apps/studio/data/database/keywords-query.ts +++ b/apps/studio/data/database/keywords-query.ts @@ -12,7 +12,7 @@ SELECT word FROM pg_get_keywords(); export type KeywordsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getKeywords( diff --git a/apps/studio/data/database/max-connections-query.ts b/apps/studio/data/database/max-connections-query.ts index 76ca7d34d26..353ab0d73b8 100644 --- a/apps/studio/data/database/max-connections-query.ts +++ b/apps/studio/data/database/max-connections-query.ts @@ -10,7 +10,7 @@ export const getMaxConnectionsSql = () => { export type MaxConnectionsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null table?: string schema?: string } diff --git a/apps/studio/data/database/migrations-query.ts b/apps/studio/data/database/migrations-query.ts index 7d096189973..41801877ca8 100644 --- a/apps/studio/data/database/migrations-query.ts +++ b/apps/studio/data/database/migrations-query.ts @@ -21,7 +21,7 @@ export const getMigrationsSql = () => { export type MigrationsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getMigrations( diff --git a/apps/studio/data/database/retrieve-index-advisor-result-query.ts b/apps/studio/data/database/retrieve-index-advisor-result-query.ts index 5c8292a9bee..5b16973c6ed 100644 --- a/apps/studio/data/database/retrieve-index-advisor-result-query.ts +++ b/apps/studio/data/database/retrieve-index-advisor-result-query.ts @@ -6,7 +6,7 @@ import { databaseKeys } from './keys' export type GetIndexAdvisorResultVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null query: string } diff --git a/apps/studio/data/database/retrieve-index-from-select-query.ts b/apps/studio/data/database/retrieve-index-from-select-query.ts index 5d341193aa6..24505fd137f 100644 --- a/apps/studio/data/database/retrieve-index-from-select-query.ts +++ b/apps/studio/data/database/retrieve-index-from-select-query.ts @@ -6,7 +6,7 @@ import { databaseKeys } from './keys' export type GetInvolvedIndexesFromSelectQueryVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null query: string } diff --git a/apps/studio/data/database/schema-create-mutation.ts b/apps/studio/data/database/schema-create-mutation.ts index 346963d1f4b..47e22402b2e 100644 --- a/apps/studio/data/database/schema-create-mutation.ts +++ b/apps/studio/data/database/schema-create-mutation.ts @@ -9,7 +9,7 @@ import { invalidateSchemasQuery } from './schemas-query' export type SchemaCreateVariables = { name: string projectRef?: string - connectionString?: string + connectionString?: string | null } export async function createSchema({ name, projectRef, connectionString }: SchemaCreateVariables) { diff --git a/apps/studio/data/database/schemas-query.ts b/apps/studio/data/database/schemas-query.ts index 30f9d67ddc7..5bbc44ae461 100644 --- a/apps/studio/data/database/schemas-query.ts +++ b/apps/studio/data/database/schemas-query.ts @@ -7,7 +7,7 @@ import { databaseKeys } from './keys' export type SchemasVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type Schema = z.infer diff --git a/apps/studio/data/database/table-columns-query.ts b/apps/studio/data/database/table-columns-query.ts index c202177c28c..e7038a5787a 100644 --- a/apps/studio/data/database/table-columns-query.ts +++ b/apps/studio/data/database/table-columns-query.ts @@ -87,7 +87,7 @@ export const getTableColumnsSql = ({ table, schema }: { table?: string; schema?: export type TableColumnsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null table?: string schema?: string } diff --git a/apps/studio/data/database/table-definition-query.ts b/apps/studio/data/database/table-definition-query.ts index 190de796118..f912902e230 100644 --- a/apps/studio/data/database/table-definition-query.ts +++ b/apps/studio/data/database/table-definition-query.ts @@ -35,7 +35,7 @@ const getTableDefinitionSql = ({ id }: GetTableDefinitionArgs) => { export type TableDefinitionVariables = GetTableDefinitionArgs & { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getTableDefinition( diff --git a/apps/studio/data/database/view-definition-query.ts b/apps/studio/data/database/view-definition-query.ts index 7091077635d..99a3511d0d7 100644 --- a/apps/studio/data/database/view-definition-query.ts +++ b/apps/studio/data/database/view-definition-query.ts @@ -31,7 +31,7 @@ export const getViewDefinitionSql = ({ id }: GetViewDefinitionArgs) => { export type ViewDefinitionVariables = GetViewDefinitionArgs & { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getViewDefinition( diff --git a/apps/studio/data/enumerated-types/enumerated-type-create-mutation.ts b/apps/studio/data/enumerated-types/enumerated-type-create-mutation.ts index 285c9f87be0..c213d3441d2 100644 --- a/apps/studio/data/enumerated-types/enumerated-type-create-mutation.ts +++ b/apps/studio/data/enumerated-types/enumerated-type-create-mutation.ts @@ -8,7 +8,7 @@ import { enumeratedTypesKeys } from './keys' export type EnumeratedTypeCreateVariables = { projectRef: string - connectionString: string + connectionString: string | null schema: string name: string description?: string diff --git a/apps/studio/data/enumerated-types/enumerated-type-delete-mutation.ts b/apps/studio/data/enumerated-types/enumerated-type-delete-mutation.ts index bf49ac1f35d..bba3c0f008b 100644 --- a/apps/studio/data/enumerated-types/enumerated-type-delete-mutation.ts +++ b/apps/studio/data/enumerated-types/enumerated-type-delete-mutation.ts @@ -7,7 +7,7 @@ import { enumeratedTypesKeys } from './keys' export type EnumeratedTypeDeleteVariables = { projectRef: string - connectionString: string + connectionString: string | null name: string schema: string } diff --git a/apps/studio/data/enumerated-types/enumerated-type-update-mutation.ts b/apps/studio/data/enumerated-types/enumerated-type-update-mutation.ts index 4650f44ad32..3aabaf9fab1 100644 --- a/apps/studio/data/enumerated-types/enumerated-type-update-mutation.ts +++ b/apps/studio/data/enumerated-types/enumerated-type-update-mutation.ts @@ -8,7 +8,7 @@ import { enumeratedTypesKeys } from './keys' export type EnumeratedTypeUpdateVariables = { projectRef: string - connectionString: string + connectionString?: string | null schema: string name: { original: string; updated: string } description?: string diff --git a/apps/studio/data/enumerated-types/enumerated-types-query.ts b/apps/studio/data/enumerated-types/enumerated-types-query.ts index 5aeb8432e0c..e7b541f0f77 100644 --- a/apps/studio/data/enumerated-types/enumerated-types-query.ts +++ b/apps/studio/data/enumerated-types/enumerated-types-query.ts @@ -7,7 +7,7 @@ import { enumeratedTypesKeys } from './keys' export type EnumeratedTypesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type EnumeratedType = components['schemas']['PostgresType'] diff --git a/apps/studio/data/fdw/fdw-create-mutation.ts b/apps/studio/data/fdw/fdw-create-mutation.ts index 47bf99ae9b7..e6a7ebbe96d 100644 --- a/apps/studio/data/fdw/fdw-create-mutation.ts +++ b/apps/studio/data/fdw/fdw-create-mutation.ts @@ -15,7 +15,7 @@ import { fdwKeys } from './keys' export type FDWCreateVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null wrapperMeta: WrapperMeta formState: { [k: string]: string diff --git a/apps/studio/data/fdw/fdw-delete-mutation.ts b/apps/studio/data/fdw/fdw-delete-mutation.ts index bed193cb09c..19e2778c8f1 100644 --- a/apps/studio/data/fdw/fdw-delete-mutation.ts +++ b/apps/studio/data/fdw/fdw-delete-mutation.ts @@ -13,7 +13,7 @@ import { fdwKeys } from './keys' export type FDWDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null wrapper: FDW wrapperMeta: WrapperMeta } diff --git a/apps/studio/data/fdw/fdw-update-mutation.ts b/apps/studio/data/fdw/fdw-update-mutation.ts index 710413255e7..761108e5d77 100644 --- a/apps/studio/data/fdw/fdw-update-mutation.ts +++ b/apps/studio/data/fdw/fdw-update-mutation.ts @@ -15,7 +15,7 @@ import { fdwKeys } from './keys' export type FDWUpdateVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null wrapper: FDW wrapperMeta: WrapperMeta formState: { diff --git a/apps/studio/data/fdw/fdws-query.ts b/apps/studio/data/fdw/fdws-query.ts index be8be92fa93..a4b4030d71c 100644 --- a/apps/studio/data/fdw/fdws-query.ts +++ b/apps/studio/data/fdw/fdws-query.ts @@ -65,7 +65,7 @@ export type FDW = { export type FDWsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getFDWs( diff --git a/apps/studio/data/fetchers.ts b/apps/studio/data/fetchers.ts index b9e42e1097c..a834b8a73ba 100644 --- a/apps/studio/data/fetchers.ts +++ b/apps/studio/data/fetchers.ts @@ -5,6 +5,7 @@ import { uuidv4 } from 'lib/helpers' import createClient from 'openapi-fetch' import { ResponseError } from 'types' import type { paths } from './api' // generated from openapi-typescript +import { IS_PLATFORM } from 'common' const DEFAULT_HEADERS = { Accept: 'application/json', @@ -26,6 +27,13 @@ const client = createClient({ }, }) +export function isValidConnString(connString?: string | null) { + // If there is no `connectionString` on platform, pg-meta will necessarily fail to connect to the target database. + // This only applies if IS_PLATFORM is true; otherwise (test/local-dev), pg-meta won't need this parameter + // and will connect to the locally running DB_URL instead. + return IS_PLATFORM ? Boolean(connString) : true +} + export async function constructHeaders(headersInit?: HeadersInit | undefined) { const requestId = uuidv4() const headers = new Headers(headersInit) @@ -40,6 +48,24 @@ export async function constructHeaders(headersInit?: HeadersInit | undefined) { return headers } +function pgMetaGuard(request: Request) { + // Only check for /platform/pg-meta/ endpoints + if (request.url.includes('/platform/pg-meta/')) { + // If there is no valid `x-connection-encrypted`, pg-meta will necesseraly fail to connect to the target database + // in such case, we save the hops and throw a 421 response instead + if (!isValidConnString(request.headers.get('x-connection-encrypted'))) { + // TODO: Maybe here add a sentry warning to monitor how often this happen + // Simulate a 421 response by throwing an error + throw { + code: 421, + message: 'x-connection-encrypted header is required for /platform/pg-meta/ requests', + requestId: request.headers.get('X-Request-Id'), + } + } + } + return request +} + // Middleware client.use( { @@ -47,8 +73,7 @@ client.use( async onRequest({ request }) { const headers = await constructHeaders() headers.forEach((value, key) => request.headers.set(key, value)) - - return request + return pgMetaGuard(request) }, }, { diff --git a/apps/studio/data/foreign-tables/foreign-tables-query.ts b/apps/studio/data/foreign-tables/foreign-tables-query.ts index d53ed54b24c..3c2f3157122 100644 --- a/apps/studio/data/foreign-tables/foreign-tables-query.ts +++ b/apps/studio/data/foreign-tables/foreign-tables-query.ts @@ -7,7 +7,7 @@ import { foreignTableKeys } from './keys' export type ForeignTablesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null schema?: string } diff --git a/apps/studio/data/materialized-views/materialized-views-query.ts b/apps/studio/data/materialized-views/materialized-views-query.ts index 1f6888fd6b3..a8a7eab23dd 100644 --- a/apps/studio/data/materialized-views/materialized-views-query.ts +++ b/apps/studio/data/materialized-views/materialized-views-query.ts @@ -7,7 +7,7 @@ import { materializedViewKeys } from './keys' export type MaterializedViewsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null schema?: string } diff --git a/apps/studio/data/prefetchers/project.$ref.editor.$id.tsx b/apps/studio/data/prefetchers/project.$ref.editor.$id.tsx index 07d3d3a8ba4..fc22643e59a 100644 --- a/apps/studio/data/prefetchers/project.$ref.editor.$id.tsx +++ b/apps/studio/data/prefetchers/project.$ref.editor.$id.tsx @@ -20,7 +20,7 @@ import PrefetchableLink, { PrefetchableLinkProps } from './PrefetchableLink' interface PrefetchEditorTablePageArgs { queryClient: QueryClient projectRef: string - connectionString?: string + connectionString?: string | null id: number sorts?: Sort[] filters?: Filter[] diff --git a/apps/studio/data/privileges/column-privileges-grant-mutation.ts b/apps/studio/data/privileges/column-privileges-grant-mutation.ts index 820e60b94e8..6b229859b54 100644 --- a/apps/studio/data/privileges/column-privileges-grant-mutation.ts +++ b/apps/studio/data/privileges/column-privileges-grant-mutation.ts @@ -10,7 +10,7 @@ export type ColumnPrivilegesGrant = components['schemas']['GrantColumnPrivileges export type ColumnPrivilegesGrantVariables = { projectRef: string - connectionString?: string + connectionString?: string | null grants: ColumnPrivilegesGrant } diff --git a/apps/studio/data/privileges/column-privileges-query.ts b/apps/studio/data/privileges/column-privileges-query.ts index 83bf2e9f9d4..01bda4ce1f3 100644 --- a/apps/studio/data/privileges/column-privileges-query.ts +++ b/apps/studio/data/privileges/column-privileges-query.ts @@ -7,7 +7,7 @@ import { privilegeKeys } from './keys' export type ColumnPrivilegesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type ColumnPrivilege = components['schemas']['PostgresColumnPrivileges'] diff --git a/apps/studio/data/privileges/column-privileges-revoke-mutation.ts b/apps/studio/data/privileges/column-privileges-revoke-mutation.ts index eec7afc2415..8406947df50 100644 --- a/apps/studio/data/privileges/column-privileges-revoke-mutation.ts +++ b/apps/studio/data/privileges/column-privileges-revoke-mutation.ts @@ -10,7 +10,7 @@ export type ColumnPrivilegesRevoke = components['schemas']['RevokeColumnPrivileg export type ColumnPrivilegesRevokeVariables = { projectRef: string - connectionString?: string + connectionString?: string | null revokes: ColumnPrivilegesRevoke } diff --git a/apps/studio/data/privileges/table-privileges-grant-mutation.ts b/apps/studio/data/privileges/table-privileges-grant-mutation.ts index 9d086536fa1..82cb40f312c 100644 --- a/apps/studio/data/privileges/table-privileges-grant-mutation.ts +++ b/apps/studio/data/privileges/table-privileges-grant-mutation.ts @@ -15,7 +15,7 @@ export type TablePrivilegesGrant = Parameters< export type TablePrivilegesGrantVariables = { projectRef: string - connectionString?: string + connectionString?: string | null grants: TablePrivilegesGrant[] } diff --git a/apps/studio/data/privileges/table-privileges-query.ts b/apps/studio/data/privileges/table-privileges-query.ts index 4b86f2a4420..5d31cb4929c 100644 --- a/apps/studio/data/privileges/table-privileges-query.ts +++ b/apps/studio/data/privileges/table-privileges-query.ts @@ -7,7 +7,7 @@ import { privilegeKeys } from './keys' export type TablePrivilegesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export type PgTablePrivileges = z.infer diff --git a/apps/studio/data/privileges/table-privileges-revoke-mutation.ts b/apps/studio/data/privileges/table-privileges-revoke-mutation.ts index cfb2bb8e288..d9ffb39e202 100644 --- a/apps/studio/data/privileges/table-privileges-revoke-mutation.ts +++ b/apps/studio/data/privileges/table-privileges-revoke-mutation.ts @@ -15,7 +15,7 @@ export type TablePrivilegesRevoke = Parameters< export type TablePrivilegesRevokeVariables = { projectRef: string - connectionString?: string + connectionString?: string | null revokes: TablePrivilegesRevoke[] } diff --git a/apps/studio/data/projects/project-detail-query.ts b/apps/studio/data/projects/project-detail-query.ts index 67df9283bc2..f8ef072e248 100644 --- a/apps/studio/data/projects/project-detail-query.ts +++ b/apps/studio/data/projects/project-detail-query.ts @@ -1,7 +1,7 @@ import { QueryClient, useQuery, UseQueryOptions } from '@tanstack/react-query' import type { components } from 'data/api' -import { get, handleError } from 'data/fetchers' +import { get, handleError, isValidConnString } from 'data/fetchers' import type { ResponseError } from 'types' import { projectKeys } from './keys' @@ -46,9 +46,15 @@ export const useProjectDetailQuery = ( enabled: enabled && typeof ref !== 'undefined', staleTime: 30 * 1000, // 30 seconds refetchInterval(data) { - const status = data && (data as unknown as ProjectDetailData).status + const result = data && (data as unknown as ProjectDetailData) + const status = result && result.status + const connectionString = result && result.connectionString - if (status === 'COMING_UP' || status === 'UNKNOWN') { + if ( + status === 'COMING_UP' || + status === 'UNKNOWN' || + !isValidConnString(connectionString) + ) { return 5 * 1000 // 5 seconds } diff --git a/apps/studio/data/read-replicas/replica-lag-query.ts b/apps/studio/data/read-replicas/replica-lag-query.ts index 08a978f9e27..74923d2e6d1 100644 --- a/apps/studio/data/read-replicas/replica-lag-query.ts +++ b/apps/studio/data/read-replicas/replica-lag-query.ts @@ -18,7 +18,7 @@ select export type ReplicationLagVariables = { id: string projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getReplicationLag( diff --git a/apps/studio/data/sql/abort-query-mutation.ts b/apps/studio/data/sql/abort-query-mutation.ts index d44472b6451..2462c8ce76e 100644 --- a/apps/studio/data/sql/abort-query-mutation.ts +++ b/apps/studio/data/sql/abort-query-mutation.ts @@ -8,7 +8,7 @@ import { sqlKeys } from './keys' export type QueryAbortVariables = { pid: number projectRef?: string - connectionString?: string + connectionString?: string | null } export async function abortQuery({ pid, projectRef, connectionString }: QueryAbortVariables) { diff --git a/apps/studio/data/sql/execute-sql-query.ts b/apps/studio/data/sql/execute-sql-query.ts index ce00ebf3a23..7fc547b3c83 100644 --- a/apps/studio/data/sql/execute-sql-query.ts +++ b/apps/studio/data/sql/execute-sql-query.ts @@ -1,6 +1,6 @@ import { QueryKey, useQuery, UseQueryOptions } from '@tanstack/react-query' -import { handleError as handleErrorFetchers, post } from 'data/fetchers' +import { handleError as handleErrorFetchers, isValidConnString, post } from 'data/fetchers' import { useSelectedProject } from 'hooks/misc/useSelectedProject' import { MB, PROJECT_STATUS } from 'lib/constants' import { @@ -12,7 +12,7 @@ import { sqlKeys } from './keys' export type ExecuteSqlVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null sql: string queryKey?: QueryKey handleError?: (error: ResponseError) => { result: any } @@ -42,6 +42,7 @@ export async function executeSql( headersInit?: HeadersInit ): Promise<{ result: any }> { if (!projectRef) throw new Error('projectRef is required') + if (!isValidConnString(connectionString)) throw new Error('Project connection string is required') const sqlSize = new Blob([sql]).size // [Joshen] I think the limit is around 1MB from testing, but its not exactly 1MB it seems diff --git a/apps/studio/data/sql/ongoing-queries-query.ts b/apps/studio/data/sql/ongoing-queries-query.ts index 7022ea3ddde..5f88f39f053 100644 --- a/apps/studio/data/sql/ongoing-queries-query.ts +++ b/apps/studio/data/sql/ongoing-queries-query.ts @@ -18,7 +18,7 @@ select pid, query, query_start from pg_stat_activity where state = 'active' and export type OngoingQueriesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getOngoingQueries( diff --git a/apps/studio/data/table-editor/table-editor-query.ts b/apps/studio/data/table-editor/table-editor-query.ts index 8346ca7ae01..da612638ed6 100644 --- a/apps/studio/data/table-editor/table-editor-query.ts +++ b/apps/studio/data/table-editor/table-editor-query.ts @@ -11,7 +11,7 @@ type TableEditorArgs = { export type TableEditorVariables = TableEditorArgs & { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getTableEditor( diff --git a/apps/studio/data/table-rows/get-cell-value-mutation.ts b/apps/studio/data/table-rows/get-cell-value-mutation.ts index 656325846e0..0bcde7494bc 100644 --- a/apps/studio/data/table-rows/get-cell-value-mutation.ts +++ b/apps/studio/data/table-rows/get-cell-value-mutation.ts @@ -7,7 +7,7 @@ import type { ResponseError } from 'types' export type GetCellValueVariables = { projectRef: string - connectionString?: string + connectionString?: string | null table: { schema: string; name: string } column: string pkMatch: { [key: string]: any } diff --git a/apps/studio/data/table-rows/table-row-create-mutation.ts b/apps/studio/data/table-rows/table-row-create-mutation.ts index fd20ebd0426..e31cc4609dc 100644 --- a/apps/studio/data/table-rows/table-row-create-mutation.ts +++ b/apps/studio/data/table-rows/table-row-create-mutation.ts @@ -10,7 +10,7 @@ import { tableRowKeys } from './keys' export type TableRowCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null table: { id: number; name: string; schema?: string } payload: any enumArrayColumns: string[] diff --git a/apps/studio/data/table-rows/table-row-delete-all-mutation.ts b/apps/studio/data/table-rows/table-row-delete-all-mutation.ts index bfd96398af4..4948f195957 100644 --- a/apps/studio/data/table-rows/table-row-delete-all-mutation.ts +++ b/apps/studio/data/table-rows/table-row-delete-all-mutation.ts @@ -13,7 +13,7 @@ import { formatFilterValue } from './utils' export type TableRowDeleteAllVariables = { projectRef: string - connectionString?: string + connectionString?: string | null table: Entity filters: Filter[] roleImpersonationState?: RoleImpersonationState diff --git a/apps/studio/data/table-rows/table-row-delete-mutation.tsx b/apps/studio/data/table-rows/table-row-delete-mutation.tsx index 6ac0cf4c72c..103d9ff9cba 100644 --- a/apps/studio/data/table-rows/table-row-delete-mutation.tsx +++ b/apps/studio/data/table-rows/table-row-delete-mutation.tsx @@ -15,7 +15,7 @@ import { getPrimaryKeys } from './utils' export type TableRowDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null table: Entity rows: SupaRow[] roleImpersonationState?: RoleImpersonationState diff --git a/apps/studio/data/table-rows/table-row-truncate-mutation.ts b/apps/studio/data/table-rows/table-row-truncate-mutation.ts index b39c2816c97..3427e923730 100644 --- a/apps/studio/data/table-rows/table-row-truncate-mutation.ts +++ b/apps/studio/data/table-rows/table-row-truncate-mutation.ts @@ -8,7 +8,7 @@ import { tableRowKeys } from './keys' export type TableRowTruncateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null table: { id: number; name: string; schema?: string } } diff --git a/apps/studio/data/table-rows/table-row-update-mutation.ts b/apps/studio/data/table-rows/table-row-update-mutation.ts index 92570dee5d0..d05f679d01e 100644 --- a/apps/studio/data/table-rows/table-row-update-mutation.ts +++ b/apps/studio/data/table-rows/table-row-update-mutation.ts @@ -10,7 +10,7 @@ import { tableRowKeys } from './keys' export type TableRowUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null table: { id: number; name: string; schema?: string } configuration: { identifiers: any } payload: any diff --git a/apps/studio/data/table-rows/table-rows-count-query.ts b/apps/studio/data/table-rows/table-rows-count-query.ts index 2f82dcc4d3a..3823cdc5142 100644 --- a/apps/studio/data/table-rows/table-rows-count-query.ts +++ b/apps/studio/data/table-rows/table-rows-count-query.ts @@ -99,7 +99,7 @@ export type TableRowsCountVariables = Omit & { tableId?: number roleImpersonationState?: RoleImpersonationState projectRef?: string - connectionString?: string + connectionString?: string | null } export type TableRowsCountData = TableRowsCount diff --git a/apps/studio/data/table-rows/table-rows-query.ts b/apps/studio/data/table-rows/table-rows-query.ts index cb8b15eb315..bf49e74519e 100644 --- a/apps/studio/data/table-rows/table-rows-query.ts +++ b/apps/studio/data/table-rows/table-rows-query.ts @@ -83,7 +83,7 @@ export const fetchAllTableRows = async ({ progressCallback, }: { projectRef: string - connectionString?: string + connectionString?: string | null table: SupaTable filters?: Filter[] sorts?: Sort[] @@ -167,7 +167,7 @@ export type TableRows = { rows: SupaRow[] } export type TableRowsVariables = Omit & { queryClient: QueryClient projectRef?: string - connectionString?: string + connectionString?: string | null tableId?: number } diff --git a/apps/studio/data/tables/table-create-mutation.ts b/apps/studio/data/tables/table-create-mutation.ts index 0ddd8bcb1b8..b1362801843 100644 --- a/apps/studio/data/tables/table-create-mutation.ts +++ b/apps/studio/data/tables/table-create-mutation.ts @@ -11,7 +11,7 @@ export type CreateTableBody = components['schemas']['CreateTableBody'] export type TableCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null // the schema is required field payload: CreateTableBody & { schema: string } } diff --git a/apps/studio/data/tables/table-delete-mutation.ts b/apps/studio/data/tables/table-delete-mutation.ts index 6414865c957..a7678b28b90 100644 --- a/apps/studio/data/tables/table-delete-mutation.ts +++ b/apps/studio/data/tables/table-delete-mutation.ts @@ -11,7 +11,7 @@ import { tableKeys } from './keys' export type TableDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number schema: string cascade?: boolean diff --git a/apps/studio/data/tables/table-update-mutation.ts b/apps/studio/data/tables/table-update-mutation.ts index b379a0ba256..0adc62fd1c1 100644 --- a/apps/studio/data/tables/table-update-mutation.ts +++ b/apps/studio/data/tables/table-update-mutation.ts @@ -13,7 +13,7 @@ export type UpdateTableBody = components['schemas']['UpdateTableBody'] export type TableUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: number schema: string payload: UpdateTableBody diff --git a/apps/studio/data/tables/tables-query.ts b/apps/studio/data/tables/tables-query.ts index 76463bc224e..02ce5a5c625 100644 --- a/apps/studio/data/tables/tables-query.ts +++ b/apps/studio/data/tables/tables-query.ts @@ -9,7 +9,7 @@ import { tableKeys } from './keys' export type TablesVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null schema?: string /** * Defaults to false diff --git a/apps/studio/data/vault/vault-secret-create-mutation.ts b/apps/studio/data/vault/vault-secret-create-mutation.ts index bba2b6300c3..b66d5747ab5 100644 --- a/apps/studio/data/vault/vault-secret-create-mutation.ts +++ b/apps/studio/data/vault/vault-secret-create-mutation.ts @@ -8,7 +8,7 @@ import { vaultSecretsKeys } from './keys' export type VaultSecretCreateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null } & Partial export async function createVaultSecret({ diff --git a/apps/studio/data/vault/vault-secret-decrypted-value-query.ts b/apps/studio/data/vault/vault-secret-decrypted-value-query.ts index 6f6e251d3fd..b7009f02165 100644 --- a/apps/studio/data/vault/vault-secret-decrypted-value-query.ts +++ b/apps/studio/data/vault/vault-secret-decrypted-value-query.ts @@ -15,7 +15,7 @@ export const vaultSecretDecryptedValueQuery = (id: string) => { export type VaultSecretsDecryptedValueVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null id: string } diff --git a/apps/studio/data/vault/vault-secret-delete-mutation.ts b/apps/studio/data/vault/vault-secret-delete-mutation.ts index ffe67f278bf..afbfd860ad3 100644 --- a/apps/studio/data/vault/vault-secret-delete-mutation.ts +++ b/apps/studio/data/vault/vault-secret-delete-mutation.ts @@ -8,7 +8,7 @@ import { vaultSecretsKeys } from './keys' export type VaultSecretDeleteVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: string } diff --git a/apps/studio/data/vault/vault-secret-update-mutation.ts b/apps/studio/data/vault/vault-secret-update-mutation.ts index 779d2cf45ce..0d44f3f7b33 100644 --- a/apps/studio/data/vault/vault-secret-update-mutation.ts +++ b/apps/studio/data/vault/vault-secret-update-mutation.ts @@ -8,7 +8,7 @@ import { vaultSecretsKeys } from './keys' export type VaultSecretUpdateVariables = { projectRef: string - connectionString?: string + connectionString?: string | null id: string } & Partial diff --git a/apps/studio/data/vault/vault-secrets-query.ts b/apps/studio/data/vault/vault-secrets-query.ts index 283a339bcd3..23d328489e1 100644 --- a/apps/studio/data/vault/vault-secrets-query.ts +++ b/apps/studio/data/vault/vault-secrets-query.ts @@ -15,7 +15,7 @@ export const getVaultSecretsSql = () => { export type VaultSecretsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null } export async function getVaultSecrets( diff --git a/apps/studio/data/views/views-query.ts b/apps/studio/data/views/views-query.ts index bc9448210f3..4903c28323f 100644 --- a/apps/studio/data/views/views-query.ts +++ b/apps/studio/data/views/views-query.ts @@ -7,7 +7,7 @@ import { viewKeys } from './keys' export type ViewsVariables = { projectRef?: string - connectionString?: string + connectionString?: string | null schema?: string } diff --git a/apps/studio/types/base.ts b/apps/studio/types/base.ts index 1739a4ca9e7..70aaa43241a 100644 --- a/apps/studio/types/base.ts +++ b/apps/studio/types/base.ts @@ -41,7 +41,7 @@ export interface ProjectBase { */ export interface Project extends ProjectBase { // available after projects.fetchDetail - connectionString?: string + connectionString?: string | null dbVersion?: string restUrl?: string lastDatabaseResizeAt?: string | null diff --git a/packages/api-types/types/api.d.ts b/packages/api-types/types/api.d.ts index 661af01cdbb..7432bff9644 100644 --- a/packages/api-types/types/api.d.ts +++ b/packages/api-types/types/api.d.ts @@ -1728,7 +1728,7 @@ export interface components { * @description Postgres engine version. If not provided, the latest version will be used. * @enum {string} */ - postgres_engine?: '15' | '17-oriole' + postgres_engine?: '15' | '17' | '17-oriole' region?: string /** * @description Release channel. If not provided, GA will be used. @@ -2216,7 +2216,7 @@ export interface components { target_upgrade_versions: { app_version: string /** @enum {string} */ - postgres_version: '15' | '17-oriole' + postgres_version: '15' | '17' | '17-oriole' /** @enum {string} */ release_channel: 'internal' | 'alpha' | 'beta' | 'ga' | 'withdrawn' | 'preview' }[] @@ -2791,6 +2791,7 @@ export interface components { db_pass: string /** @enum {string} */ desired_instance_size?: + | 'pico' | 'micro' | 'small' | 'medium' diff --git a/packages/api-types/types/platform.d.ts b/packages/api-types/types/platform.d.ts index 4a330ce8f5b..2de39be1376 100644 --- a/packages/api-types/types/platform.d.ts +++ b/packages/api-types/types/platform.d.ts @@ -4778,8 +4778,10 @@ export interface components { DatabaseDetailResponse: { /** @enum {string} */ cloud_provider: 'AWS' | 'AWS_K8S' | 'FLY' - connection_string_read_only: string - connectionString: string + /** @default null */ + connection_string_read_only?: string | null + /** @default null */ + connectionString?: string | null db_host: string db_name: string db_port: number @@ -6258,7 +6260,7 @@ export interface components { work_mem?: string } /** @enum {string} */ - PostgresEngine: '15' | '17-oriole' + PostgresEngine: '15' | '17' | '17-oriole' PostgresExtension: { comment: string | null default_version: string @@ -6686,7 +6688,8 @@ export interface components { } ProjectDetailResponse: { cloud_provider: string - connectionString: string + /** @default null */ + connectionString?: string | null db_host: string dbVersion?: string id: number