fix(studio): bypass pg meta route on self-hosted for ai endpoints (#35812)

* fix(studio): bypass pg meta route on self-hosted for ai endpoints

* fix hosted

* wrong way round
This commit is contained in:
Alaister Young
2025-05-29 20:16:49 +08:00
committed by GitHub
parent 9b1f64fbfa
commit c0c3710bde
6 changed files with 66 additions and 19 deletions

View File

@@ -39,7 +39,11 @@ export async function executeSql<T = any>(
| 'isRoleImpersonationEnabled'
>,
signal?: AbortSignal,
headersInit?: HeadersInit
headersInit?: HeadersInit,
fetcherOverride?: (
sql: string,
headers?: HeadersInit
) => Promise<{ data: T } | { error: ResponseError }>
): Promise<{ result: T }> {
if (!projectRef) throw new Error('projectRef is required')
@@ -52,21 +56,37 @@ export async function executeSql<T = any>(
let headers = new Headers(headersInit)
if (connectionString) headers.set('x-connection-encrypted', connectionString)
let { data, error } = await post('/platform/pg-meta/{ref}/query', {
signal,
params: {
header: { 'x-connection-encrypted': connectionString ?? '' },
path: { ref: projectRef },
// @ts-expect-error: This is just a client side thing to identify queries better
query: {
key:
queryKey?.filter((seg) => typeof seg === 'string' || typeof seg === 'number').join('-') ??
'',
let data
let error
if (fetcherOverride) {
const result = await fetcherOverride(sql, headers)
if ('data' in result) {
data = result.data
} else {
error = result.error
}
} else {
const result = await post('/platform/pg-meta/{ref}/query', {
signal,
params: {
header: { 'x-connection-encrypted': connectionString ?? '' },
path: { ref: projectRef },
// @ts-expect-error: This is just a client side thing to identify queries better
query: {
key:
queryKey
?.filter((seg) => typeof seg === 'string' || typeof seg === 'number')
.join('-') ?? '',
},
},
},
body: { query: sql },
headers,
})
body: { query: sql },
headers,
})
data = result.data
error = result.error
}
if (error) {
if (