mirror of
https://github.com/supabase/supabase.git
synced 2026-10-15 22:29:11 +03:00
Fix connection pooling feature flag (#33914)
* Fix connection pooling feature flag * Fix type issues with lint-query after updating API typs * Apply same fix for connection_string to ConnectTabContent * Update useMemo dependency arrays in ConnectionPooling * Remove allowPgBouncerSelection enabled check on react queries - feels unnecessary and adds some complexity to the loading state of the forms * Remove conosle log
This commit is contained in:
1 parent
1418711dee
commit
d50fbd9012
7 files changed
+714
-78
No files matched your search
@@ -28,10 +28,7 @@ const ConnectTabContent = forwardRef<HTMLDivElement, ConnectContentTabProps>(
|
||||
const allowPgBouncerSelection = useFlag('dualPoolerSupport')
|
||||
|
||||
const { data: settings } = useProjectSettingsV2Query({ projectRef })
|
||||
const { data: pgbouncerConfig } = usePgbouncerConfigQuery(
|
||||
{ projectRef },
|
||||
{ enabled: allowPgBouncerSelection }
|
||||
)
|
||||
const { data: pgbouncerConfig } = usePgbouncerConfigQuery({ projectRef })
|
||||
const { data: supavisorConfig } = useSupavisorConfigurationQuery({ projectRef })
|
||||
|
||||
const isPgBouncerEnabled = allowPgBouncerSelection && !!pgbouncerConfig?.pgbouncer_enabled
|
||||
@@ -47,7 +44,10 @@ const ConnectTabContent = forwardRef<HTMLDivElement, ConnectContentTabProps>(
|
||||
? getConnectionStringsV2({
|
||||
connectionInfo,
|
||||
poolingInfo: {
|
||||
connectionString: poolingConfiguration.connectionString,
|
||||
connectionString:
|
||||
'connection_string' in poolingConfiguration
|
||||
? poolingConfiguration.connection_string
|
||||
: poolingConfiguration.connectionString,
|
||||
db_host: poolingConfiguration.db_host,
|
||||
db_name: poolingConfiguration.db_name,
|
||||
db_port: poolingConfiguration.db_port,
|
||||
|
||||
@@ -68,7 +68,7 @@ export const DatabaseConnectionString = () => {
|
||||
isLoading: isLoadingPgbouncerConfig,
|
||||
isError: isErrorPgbouncerConfig,
|
||||
isSuccess: isSuccessPgBouncerConfig,
|
||||
} = usePgbouncerConfigQuery({ projectRef }, { enabled: allowPgBouncerSelection })
|
||||
} = usePgbouncerConfigQuery({ projectRef })
|
||||
const {
|
||||
data: supavisorConfig,
|
||||
error: supavisorConfigError,
|
||||
@@ -135,7 +135,10 @@ export const DatabaseConnectionString = () => {
|
||||
? getConnectionStrings({
|
||||
connectionInfo,
|
||||
poolingInfo: {
|
||||
connectionString: poolingConfiguration.connectionString,
|
||||
connectionString:
|
||||
'connection_string' in poolingConfiguration
|
||||
? poolingConfiguration.connection_string
|
||||
: poolingConfiguration.connectionString,
|
||||
db_host: poolingConfiguration.db_host,
|
||||
db_name: poolingConfiguration.db_name,
|
||||
db_port: poolingConfiguration.db_port,
|
||||
|
||||
@@ -33,10 +33,7 @@ const IPv4SidePanel = () => {
|
||||
const visible = panel === 'ipv4'
|
||||
|
||||
const { data: addons, isLoading } = useProjectAddonsQuery({ projectRef })
|
||||
const { data: pgbouncerConfig } = usePgbouncerConfigQuery(
|
||||
{ projectRef },
|
||||
{ enabled: allowPgBouncerSelection }
|
||||
)
|
||||
const { data: pgbouncerConfig } = usePgbouncerConfigQuery({ projectRef })
|
||||
const { data: subscription } = useOrgSubscriptionQuery({ orgSlug: organization?.slug })
|
||||
const { mutate: updateAddon, isLoading: isUpdating } = useProjectAddonUpdateMutation({
|
||||
onSuccess: () => {
|
||||
|
||||
+20
-10
@@ -113,7 +113,7 @@ export const ConnectionPooling = () => {
|
||||
isLoading: isLoadingPgbouncerConfig,
|
||||
isError: isErrorPgbouncerConfig,
|
||||
isSuccess: isSuccessPgbouncerConfig,
|
||||
} = usePgbouncerConfigQuery({ projectRef }, { enabled: allowPgBouncerSelection })
|
||||
} = usePgbouncerConfigQuery({ projectRef })
|
||||
|
||||
const { data: maxConnData } = useMaxConnectionsQuery({
|
||||
projectRef: project?.ref,
|
||||
@@ -169,22 +169,32 @@ export const ConnectionPooling = () => {
|
||||
max_client_conn: null,
|
||||
},
|
||||
})
|
||||
const { type, default_pool_size, max_client_conn } = form.watch()
|
||||
const { type, default_pool_size } = form.watch()
|
||||
const error = useMemo(
|
||||
() => (type === 'PgBouncer' ? pgbouncerConfigError : supavisorConfigError),
|
||||
[type]
|
||||
() =>
|
||||
allowPgBouncerSelection && type === 'PgBouncer' ? pgbouncerConfigError : supavisorConfigError,
|
||||
[allowPgBouncerSelection, type, pgbouncerConfigError, supavisorConfigError]
|
||||
)
|
||||
const isLoading = useMemo(
|
||||
() => (type === 'PgBouncer' ? isLoadingPgbouncerConfig : isLoadingSupavisorConfig),
|
||||
[type]
|
||||
() =>
|
||||
allowPgBouncerSelection && type === 'PgBouncer'
|
||||
? isLoadingPgbouncerConfig
|
||||
: isLoadingSupavisorConfig,
|
||||
[allowPgBouncerSelection, type, isLoadingPgbouncerConfig, isLoadingSupavisorConfig]
|
||||
)
|
||||
const isError = useMemo(
|
||||
() => (type === 'PgBouncer' ? isErrorPgbouncerConfig : isErrorSupavisorConfig),
|
||||
[type]
|
||||
() =>
|
||||
allowPgBouncerSelection && type === 'PgBouncer'
|
||||
? isErrorPgbouncerConfig
|
||||
: isErrorSupavisorConfig,
|
||||
[allowPgBouncerSelection, type, isErrorPgbouncerConfig, isErrorSupavisorConfig]
|
||||
)
|
||||
const isSuccess = useMemo(
|
||||
() => (type === 'PgBouncer' ? isSuccessPgbouncerConfig : isSuccessSupavisorConfig),
|
||||
[type]
|
||||
() =>
|
||||
allowPgBouncerSelection && type === 'PgBouncer'
|
||||
? isSuccessPgbouncerConfig
|
||||
: isSuccessSupavisorConfig,
|
||||
[allowPgBouncerSelection, type, isSuccessPgbouncerConfig, isSuccessSupavisorConfig]
|
||||
)
|
||||
const isSaving = isUpdatingSupavisor || isUpdatingPgBouncer
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@ import { lintKeys } from './keys'
|
||||
export type ProjectLintsVariables = {
|
||||
projectRef?: string
|
||||
}
|
||||
export type ProjectLintResponse = components['schemas']['ProjectLintResponse']
|
||||
export type Lint = ProjectLintResponse
|
||||
export type LINT_TYPES = ProjectLintResponse['name']
|
||||
type ProjectLintResponse = components['schemas']['GetProjectLintsResponseDto']
|
||||
export type Lint = ProjectLintResponse[0]
|
||||
export type LINT_TYPES = ProjectLintResponse[0]['name']
|
||||
|
||||
export async function getProjectLints({ projectRef }: ProjectLintsVariables, signal?: AbortSignal) {
|
||||
if (!projectRef) throw new Error('Project ref is required')
|
||||
|
||||
Vendored
+216
@@ -317,6 +317,43 @@ export interface paths {
|
||||
patch: operations['v1-update-auth-service-config']
|
||||
trace?: never
|
||||
}
|
||||
'/v1/projects/{ref}/config/auth/signing-keys': {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
/** [Alpha] List all signing keys for the project */
|
||||
get: operations['listSigningKeysForProject']
|
||||
put?: never
|
||||
/** [Alpha] Create a new signing key for the project in standby status */
|
||||
post: operations['createSigningKeyForProject']
|
||||
delete?: never
|
||||
options?: never
|
||||
head?: never
|
||||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/v1/projects/{ref}/config/auth/signing-keys/{id}': {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
/** [Alpha] Get information about a signing key */
|
||||
get: operations['getSigningKeyForProject']
|
||||
put?: never
|
||||
post?: never
|
||||
/** [Alpha] Remove a signing key from a project, where the status is previously_used */
|
||||
delete: operations['deleteSigningKey']
|
||||
options?: never
|
||||
head?: never
|
||||
/** [Alpha] Update a signing key, mainly its status */
|
||||
patch: operations['patchSigningKey']
|
||||
trace?: never
|
||||
}
|
||||
'/v1/projects/{ref}/config/auth/sso/providers': {
|
||||
parameters: {
|
||||
query?: never
|
||||
@@ -1517,6 +1554,12 @@ export interface components {
|
||||
name: string
|
||||
value: string
|
||||
}
|
||||
CreateSigningKeyBody: {
|
||||
/** @enum {string} */
|
||||
algorithm: 'EdDSA' | 'ES256' | 'RS256' | 'HS256'
|
||||
/** @enum {string} */
|
||||
status?: 'in_use' | 'standby'
|
||||
}
|
||||
CreateThirdPartyAuthBody: {
|
||||
custom_jwks?: Record<string, never>
|
||||
jwks_url?: string
|
||||
@@ -1852,6 +1895,34 @@ export interface components {
|
||||
| 'ap-south-1'
|
||||
| 'sa-east-1'
|
||||
}
|
||||
SigningKeyResponse: {
|
||||
/** @enum {string} */
|
||||
algorithm: 'EdDSA' | 'ES256' | 'RS256' | 'HS256'
|
||||
/** Format: date-time */
|
||||
created_at: string
|
||||
/** Format: uuid */
|
||||
id: string
|
||||
public_jwk?: unknown
|
||||
/** @enum {string} */
|
||||
status: 'in_use' | 'previously_used' | 'revoked' | 'standby'
|
||||
/** Format: date-time */
|
||||
updated_at: string
|
||||
}
|
||||
SigningKeysResponse: {
|
||||
keys: {
|
||||
/** @enum {string} */
|
||||
algorithm: 'EdDSA' | 'ES256' | 'RS256' | 'HS256'
|
||||
/** Format: date-time */
|
||||
created_at: string
|
||||
/** Format: uuid */
|
||||
id: string
|
||||
public_jwk?: unknown
|
||||
/** @enum {string} */
|
||||
status: 'in_use' | 'previously_used' | 'revoked' | 'standby'
|
||||
/** Format: date-time */
|
||||
updated_at: string
|
||||
}[]
|
||||
}
|
||||
SnippetContent: {
|
||||
favorite: boolean
|
||||
schema_version: string
|
||||
@@ -2223,6 +2294,10 @@ export interface components {
|
||||
saml?: components['schemas']['SamlDescriptor']
|
||||
updated_at?: string
|
||||
}
|
||||
UpdateSigningKeyBody: {
|
||||
/** @enum {string} */
|
||||
status: 'in_use' | 'previously_used' | 'revoked' | 'standby'
|
||||
}
|
||||
UpdateStorageConfigBody: {
|
||||
features?: components['schemas']['StorageFeatures']
|
||||
/** Format: int64 */
|
||||
@@ -3266,6 +3341,147 @@ export interface operations {
|
||||
}
|
||||
}
|
||||
}
|
||||
listSigningKeysForProject: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['SigningKeysResponse']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
createSigningKeyForProject: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['CreateSigningKeyBody']
|
||||
}
|
||||
}
|
||||
responses: {
|
||||
/** @description [Alpha] Create a new signing key for the project in standby status */
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['CreateSigningKeyBody']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
getSigningKeyForProject: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
id: string
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['SigningKeyResponse']
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
deleteSigningKey: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
id: string
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['SigningKeyResponse']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
patchSigningKey: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
id: string
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['UpdateSigningKeyBody']
|
||||
}
|
||||
}
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['SigningKeyResponse']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
'v1-list-all-sso-provider': {
|
||||
parameters: {
|
||||
query?: never
|
||||
|
||||
+464
-54
@@ -2899,6 +2899,40 @@ export interface paths {
|
||||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/platform/projects/{ref}/run-lints/leaked-service-key': {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
/** Run project leaked service key lint */
|
||||
get: operations['ProjectRunLintsController_runLeakedServiceKeyLint']
|
||||
put?: never
|
||||
post?: never
|
||||
delete?: never
|
||||
options?: never
|
||||
head?: never
|
||||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/platform/projects/{ref}/run-lints/no-backup-admin': {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
/** Run project backup admin lint */
|
||||
get: operations['ProjectRunLintsController_runAuthBackupAdminLint']
|
||||
put?: never
|
||||
post?: never
|
||||
delete?: never
|
||||
options?: never
|
||||
head?: never
|
||||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/platform/projects/{ref}/service-versions': {
|
||||
parameters: {
|
||||
query?: never
|
||||
@@ -3100,9 +3134,11 @@ export interface paths {
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
get?: never
|
||||
/** Gets a pipeline by id */
|
||||
get: operations['ReplicationPipelinesController_getPipeline']
|
||||
put?: never
|
||||
post?: never
|
||||
/** Updates a pipeline */
|
||||
post: operations['ReplicationPipelinesController_updatePipeline']
|
||||
/** Deletes a pipeline */
|
||||
delete: operations['ReplicationPipelinesController_deletePipeline']
|
||||
options?: never
|
||||
@@ -3186,9 +3222,11 @@ export interface paths {
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
get?: never
|
||||
/** Gets a sink by id */
|
||||
get: operations['ReplicationSinksController_getSink']
|
||||
put?: never
|
||||
post?: never
|
||||
/** Updates a sink */
|
||||
post: operations['ReplicationSinksController_updateSink']
|
||||
/** Deletes a sink */
|
||||
delete: operations['ReplicationSinksController_deleteSink']
|
||||
options?: never
|
||||
@@ -3961,6 +3999,59 @@ export interface components {
|
||||
result: Record<string, never>[]
|
||||
retention_period: number
|
||||
}
|
||||
AuthBackupAdminLintResponseDto: {
|
||||
lints: {
|
||||
cache_key: string
|
||||
categories: ('PERFORMANCE' | 'SECURITY')[]
|
||||
description: string
|
||||
detail: string
|
||||
/** @enum {string} */
|
||||
facing: 'EXTERNAL'
|
||||
/** @enum {string} */
|
||||
level: 'ERROR' | 'WARN' | 'INFO'
|
||||
metadata?: {
|
||||
entity?: string
|
||||
fkey_columns?: number[]
|
||||
fkey_name?: string
|
||||
name?: string
|
||||
schema?: string
|
||||
/** @enum {string} */
|
||||
type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance'
|
||||
}
|
||||
/** @enum {string} */
|
||||
name:
|
||||
| 'unindexed_foreign_keys'
|
||||
| 'auth_users_exposed'
|
||||
| 'auth_rls_initplan'
|
||||
| 'no_primary_key'
|
||||
| 'unused_index'
|
||||
| 'multiple_permissive_policies'
|
||||
| 'policy_exists_rls_disabled'
|
||||
| 'rls_enabled_no_policy'
|
||||
| 'duplicate_index'
|
||||
| 'security_definer_view'
|
||||
| 'function_search_path_mutable'
|
||||
| 'rls_disabled_in_public'
|
||||
| 'extension_in_public'
|
||||
| 'rls_references_user_metadata'
|
||||
| 'materialized_view_in_api'
|
||||
| 'foreign_table_in_api'
|
||||
| 'unsupported_reg_types'
|
||||
| 'auth_otp_long_expiry'
|
||||
| 'auth_otp_short_length'
|
||||
| 'ssl_not_enforced'
|
||||
| 'network_restrictions_not_set'
|
||||
| 'password_requirements_min_length'
|
||||
| 'pitr_not_enabled'
|
||||
| 'auth_leaked_password_protection'
|
||||
| 'auth_insufficient_mfa_options'
|
||||
| 'auth_password_policy_missing'
|
||||
| 'leaked_service_key'
|
||||
| 'no_backup_admin'
|
||||
remediation: string
|
||||
title: string
|
||||
}[]
|
||||
}
|
||||
AutoApiService: {
|
||||
app: {
|
||||
id?: number
|
||||
@@ -4479,7 +4570,7 @@ export interface components {
|
||||
database_type: 'PRIMARY' | 'READ_REPLICA'
|
||||
DatabaseDetailResponse: {
|
||||
/** @enum {string} */
|
||||
cloud_provider: 'AWS' | 'FLY'
|
||||
cloud_provider: 'AWS' | 'AWS_K8S' | 'FLY'
|
||||
connectionString: string
|
||||
db_host: string
|
||||
db_name: string
|
||||
@@ -4668,6 +4759,59 @@ export interface components {
|
||||
private: number
|
||||
shared: number
|
||||
}
|
||||
GetLeakedServiceKeyLintResponseDto: {
|
||||
lints: {
|
||||
cache_key: string
|
||||
categories: ('PERFORMANCE' | 'SECURITY')[]
|
||||
description: string
|
||||
detail: string
|
||||
/** @enum {string} */
|
||||
facing: 'EXTERNAL'
|
||||
/** @enum {string} */
|
||||
level: 'ERROR' | 'WARN' | 'INFO'
|
||||
metadata?: {
|
||||
entity?: string
|
||||
fkey_columns?: number[]
|
||||
fkey_name?: string
|
||||
name?: string
|
||||
schema?: string
|
||||
/** @enum {string} */
|
||||
type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance'
|
||||
}
|
||||
/** @enum {string} */
|
||||
name:
|
||||
| 'unindexed_foreign_keys'
|
||||
| 'auth_users_exposed'
|
||||
| 'auth_rls_initplan'
|
||||
| 'no_primary_key'
|
||||
| 'unused_index'
|
||||
| 'multiple_permissive_policies'
|
||||
| 'policy_exists_rls_disabled'
|
||||
| 'rls_enabled_no_policy'
|
||||
| 'duplicate_index'
|
||||
| 'security_definer_view'
|
||||
| 'function_search_path_mutable'
|
||||
| 'rls_disabled_in_public'
|
||||
| 'extension_in_public'
|
||||
| 'rls_references_user_metadata'
|
||||
| 'materialized_view_in_api'
|
||||
| 'foreign_table_in_api'
|
||||
| 'unsupported_reg_types'
|
||||
| 'auth_otp_long_expiry'
|
||||
| 'auth_otp_short_length'
|
||||
| 'ssl_not_enforced'
|
||||
| 'network_restrictions_not_set'
|
||||
| 'password_requirements_min_length'
|
||||
| 'pitr_not_enabled'
|
||||
| 'auth_leaked_password_protection'
|
||||
| 'auth_insufficient_mfa_options'
|
||||
| 'auth_password_policy_missing'
|
||||
| 'leaked_service_key'
|
||||
| 'no_backup_admin'
|
||||
remediation: string
|
||||
title: string
|
||||
}[]
|
||||
}
|
||||
GetOAuthAuthorizationResponse: {
|
||||
approved_at?: string
|
||||
approved_organization_slug?: string
|
||||
@@ -4728,6 +4872,57 @@ export interface components {
|
||||
GetProjectByFlyExtensionIdResponse: {
|
||||
ref: string
|
||||
}
|
||||
GetProjectLintsResponseDto: {
|
||||
cache_key: string
|
||||
categories: ('PERFORMANCE' | 'SECURITY')[]
|
||||
description: string
|
||||
detail: string
|
||||
/** @enum {string} */
|
||||
facing: 'EXTERNAL'
|
||||
/** @enum {string} */
|
||||
level: 'ERROR' | 'WARN' | 'INFO'
|
||||
metadata?: {
|
||||
entity?: string
|
||||
fkey_columns?: number[]
|
||||
fkey_name?: string
|
||||
name?: string
|
||||
schema?: string
|
||||
/** @enum {string} */
|
||||
type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance'
|
||||
}
|
||||
/** @enum {string} */
|
||||
name:
|
||||
| 'unindexed_foreign_keys'
|
||||
| 'auth_users_exposed'
|
||||
| 'auth_rls_initplan'
|
||||
| 'no_primary_key'
|
||||
| 'unused_index'
|
||||
| 'multiple_permissive_policies'
|
||||
| 'policy_exists_rls_disabled'
|
||||
| 'rls_enabled_no_policy'
|
||||
| 'duplicate_index'
|
||||
| 'security_definer_view'
|
||||
| 'function_search_path_mutable'
|
||||
| 'rls_disabled_in_public'
|
||||
| 'extension_in_public'
|
||||
| 'rls_references_user_metadata'
|
||||
| 'materialized_view_in_api'
|
||||
| 'foreign_table_in_api'
|
||||
| 'unsupported_reg_types'
|
||||
| 'auth_otp_long_expiry'
|
||||
| 'auth_otp_short_length'
|
||||
| 'ssl_not_enforced'
|
||||
| 'network_restrictions_not_set'
|
||||
| 'password_requirements_min_length'
|
||||
| 'pitr_not_enabled'
|
||||
| 'auth_leaked_password_protection'
|
||||
| 'auth_insufficient_mfa_options'
|
||||
| 'auth_password_policy_missing'
|
||||
| 'leaked_service_key'
|
||||
| 'no_backup_admin'
|
||||
remediation: string
|
||||
title: string
|
||||
}[]
|
||||
GetPublicUrlBody: {
|
||||
options?: components['schemas']['PublicUrlOptions']
|
||||
path: string
|
||||
@@ -5470,6 +5665,7 @@ export interface components {
|
||||
defaultPaymentMethodId: string | null
|
||||
}
|
||||
PgbouncerConfigResponse: {
|
||||
connection_string: string
|
||||
connectionString: string
|
||||
db_dns_name: string
|
||||
db_host: string
|
||||
@@ -5897,52 +6093,6 @@ export interface components {
|
||||
supabase_project_ref: string
|
||||
updated_at: string
|
||||
}
|
||||
ProjectLintMetadata: {
|
||||
entity?: string
|
||||
fkey_columns?: number[]
|
||||
fkey_name?: string
|
||||
name?: string
|
||||
schema?: string
|
||||
/** @enum {string} */
|
||||
type?: 'table' | 'view' | 'auth' | 'function' | 'extension'
|
||||
}
|
||||
ProjectLintResponse: {
|
||||
cache_key: string
|
||||
categories: ('PERFORMANCE' | 'SECURITY')[]
|
||||
description: string
|
||||
detail: string
|
||||
facing: string
|
||||
/** @enum {string} */
|
||||
level: 'ERROR' | 'WARN' | 'INFO'
|
||||
metadata: components['schemas']['ProjectLintMetadata'] | null
|
||||
/** @enum {string} */
|
||||
name:
|
||||
| 'unindexed_foreign_keys'
|
||||
| 'auth_users_exposed'
|
||||
| 'auth_rls_initplan'
|
||||
| 'no_primary_key'
|
||||
| 'unused_index'
|
||||
| 'multiple_permissive_policies'
|
||||
| 'policy_exists_rls_disabled'
|
||||
| 'rls_enabled_no_policy'
|
||||
| 'duplicate_index'
|
||||
| 'security_definer_view'
|
||||
| 'function_search_path_mutable'
|
||||
| 'rls_disabled_in_public'
|
||||
| 'extension_in_public'
|
||||
| 'rls_references_user_metadata'
|
||||
| 'materialized_view_in_api'
|
||||
| 'foreign_table_in_api'
|
||||
| 'unsupported_reg_types'
|
||||
| 'auth_otp_long_expiry'
|
||||
| 'auth_otp_short_length'
|
||||
| 'ssl_not_enforced'
|
||||
| 'network_restrictions_not_set'
|
||||
| 'password_requirements_min_length'
|
||||
| 'pitr_not_enabled'
|
||||
remediation: Record<string, never>
|
||||
title: string
|
||||
}
|
||||
ProjectRefResponse: {
|
||||
id: number
|
||||
name: string
|
||||
@@ -6076,6 +6226,22 @@ export interface components {
|
||||
* @enum {string}
|
||||
*/
|
||||
ReleaseChannel: 'internal' | 'alpha' | 'beta' | 'ga' | 'withdrawn' | 'preview'
|
||||
ReplicationPipelineResponse: {
|
||||
config: {
|
||||
config: {
|
||||
max_fill_secs: number
|
||||
max_size: number
|
||||
}
|
||||
}
|
||||
id: number
|
||||
publication_name: string
|
||||
replicator_id: number
|
||||
sink_id: number
|
||||
sink_name: string
|
||||
source_id: number
|
||||
source_name: string
|
||||
tenant_id: string
|
||||
}
|
||||
ReplicationPipelinesResponse: {
|
||||
pipelines: {
|
||||
config: {
|
||||
@@ -6107,6 +6273,18 @@ export interface components {
|
||||
}[]
|
||||
}[]
|
||||
}
|
||||
ReplicationSinkResponse: {
|
||||
config: {
|
||||
big_query: {
|
||||
dataset_id: string
|
||||
project_id: string
|
||||
service_account_key: string
|
||||
}
|
||||
}
|
||||
id: number
|
||||
name: string
|
||||
tenant_id: string
|
||||
}
|
||||
ReplicationSinksResponse: {
|
||||
sinks: {
|
||||
config: {
|
||||
@@ -6889,6 +7067,31 @@ export interface components {
|
||||
/** @description Whether to only allow private channels */
|
||||
private_only?: boolean
|
||||
}
|
||||
UpdateReplicationPipelineBody: {
|
||||
/** @description Pipeline config */
|
||||
config?: {
|
||||
config: {
|
||||
max_fill_secs: number
|
||||
max_size: number
|
||||
}
|
||||
}
|
||||
/** @description Publication name */
|
||||
publication_name?: string
|
||||
/** @description Sink id */
|
||||
sink_id?: number
|
||||
/** @description Source id */
|
||||
source_id?: number
|
||||
}
|
||||
UpdateReplicationSinkBody: {
|
||||
/** @description BigQuery dataset id */
|
||||
dataset_id: string
|
||||
/** @description BigQuery project id */
|
||||
project_id: string
|
||||
/** @description BigQuery service account key */
|
||||
service_account_key: string
|
||||
/** @description Sink name */
|
||||
sink_name: string
|
||||
}
|
||||
UpdateSchemaBody: {
|
||||
name?: string
|
||||
owner?: string
|
||||
@@ -14111,7 +14314,9 @@ export interface operations {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
path: {
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
@@ -14137,7 +14342,9 @@ export interface operations {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
path: {
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody: {
|
||||
@@ -15050,6 +15257,7 @@ export interface operations {
|
||||
| 'physical_replication_lag_physical_replica_lag_seconds'
|
||||
| 'pg_stat_database_num_backends'
|
||||
| 'supavisor_connections_active'
|
||||
| 'pgbouncer_pools_client_active_connections'
|
||||
databaseIdentifier?: string
|
||||
endDate: string
|
||||
interval?: '1m' | '5m' | '10m' | '30m' | '1h' | '1d'
|
||||
@@ -15412,7 +15620,63 @@ export interface operations {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['ProjectLintResponse'][]
|
||||
'application/json': components['schemas']['GetProjectLintsResponseDto']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
ProjectRunLintsController_runLeakedServiceKeyLint: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
/** @description Project ref */
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['GetLeakedServiceKeyLintResponseDto']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
ProjectRunLintsController_runAuthBackupAdminLint: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
/** @description Project ref */
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['AuthBackupAdminLintResponseDto']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
@@ -15783,6 +16047,79 @@ export interface operations {
|
||||
}
|
||||
}
|
||||
}
|
||||
ReplicationPipelinesController_getPipeline: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
pipeline_id: number
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
/** @description Returns the pipeline. */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['ReplicationPipelineResponse']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
/** @description Failed to get pipeline */
|
||||
500: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
ReplicationPipelinesController_updatePipeline: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
pipeline_id: number
|
||||
ref: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['UpdateReplicationPipelineBody']
|
||||
}
|
||||
}
|
||||
responses: {
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
/** @description Failed to update pipeline */
|
||||
500: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
ReplicationPipelinesController_deletePipeline: {
|
||||
parameters: {
|
||||
query?: never
|
||||
@@ -15990,6 +16327,79 @@ export interface operations {
|
||||
}
|
||||
}
|
||||
}
|
||||
ReplicationSinksController_getSink: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
ref: string
|
||||
sink_id: number
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
/** @description Returns the sink. */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'application/json': components['schemas']['ReplicationSinkResponse']
|
||||
}
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
/** @description Failed to get sink */
|
||||
500: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
ReplicationSinksController_updateSink: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
ref: string
|
||||
sink_id: number
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['UpdateReplicationSinkBody']
|
||||
}
|
||||
}
|
||||
responses: {
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
403: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
/** @description Failed to update sink */
|
||||
500: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
ReplicationSinksController_deleteSink: {
|
||||
parameters: {
|
||||
query?: never
|
||||
|
||||
Reference in new issue
Block a user