getAvailableComputeOptions() — supabase Function Reference
Architecture documentation for the getAvailableComputeOptions() function in DiskManagement.utils.ts from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 615adce6_538e_53e8_d90c_1aa23c10d40c["getAvailableComputeOptions()"] 123688a6_401c_ee61_a6d4_f7478222cf84["DiskManagementReviewAndSubmitDialog()"] 123688a6_401c_ee61_a6d4_f7478222cf84 -->|calls| 615adce6_538e_53e8_d90c_1aa23c10d40c 89db9652_2ad7_69fe_cba1_2cfbc054b2c2["ComputeSizeField()"] 89db9652_2ad7_69fe_cba1_2cfbc054b2c2 -->|calls| 615adce6_538e_53e8_d90c_1aa23c10d40c 72292d0f_dece_a8e4_441d_d080acc0d2c5["isProjectAddonVariantMeta()"] 615adce6_538e_53e8_d90c_1aa23c10d40c -->|calls| 72292d0f_dece_a8e4_441d_d080acc0d2c5 style 615adce6_538e_53e8_d90c_1aa23c10d40c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/DiskManagement/DiskManagement.utils.ts lines 210–282
export function getAvailableComputeOptions(
availableAddons: AvailableAddon[],
projectCloudProvider?: string
) {
const computeAddon = availableAddons.find((addon) => addon.type === 'compute_instance')
const computeOptions: ComputeAddonVariant[] =
computeAddon?.variants.flatMap((option) => {
const parsedId = computeInstanceAddonVariantIdSchema.safeParse(option.identifier)
if (!parsedId.success) return []
if (projectCloudProvider && isProjectAddonVariantMeta(option.meta)) {
const isSupported =
!option.meta.supported_cloud_providers ||
option.meta.supported_cloud_providers.includes(projectCloudProvider)
if (!isSupported) return []
}
return [
{
...option,
identifier: parsedId.data,
meta: isProjectAddonVariantMeta(option.meta) ? option.meta : undefined,
},
]
}) ?? []
function hasMicroOptionFromApi() {
return (computeAddon?.variants ?? []).some((variant) => variant.identifier === 'ci_micro')
}
// Backwards comp until API is deployed
if (!hasMicroOptionFromApi()) {
// Unshift to push to start of array
computeOptions.unshift({
identifier: 'ci_micro',
name: 'Micro',
price_description: '$0.01344/hour (~$10/month)',
price: 0.01344,
price_interval: 'hourly',
price_type: 'usage',
meta: {
cpu_cores: INSTANCE_MICRO_SPECS.cpu_cores,
cpu_dedicated: INSTANCE_MICRO_SPECS.cpu_dedicated,
memory_gb: INSTANCE_MICRO_SPECS.memory_gb,
baseline_disk_io_mbs: INSTANCE_MICRO_SPECS.baseline_disk_io_mbs,
max_disk_io_mbs: INSTANCE_MICRO_SPECS.max_disk_io_mbs,
connections_direct: INSTANCE_MICRO_SPECS.connections_direct,
connections_pooler: INSTANCE_MICRO_SPECS.connections_pooler,
} as ProjectAddonVariantMeta,
})
}
computeOptions.unshift({
identifier: 'ci_nano',
name: 'Nano',
price_description: '$0/hour (~$0/month)',
price: 0,
price_interval: 'hourly',
price_type: 'usage',
// @ts-ignore API types it as Record<string, never>
meta: {
cpu_cores: INSTANCE_NANO_SPECS.cpu_cores,
cpu_dedicated: INSTANCE_NANO_SPECS.cpu_dedicated,
memory_gb: INSTANCE_NANO_SPECS.memory_gb,
baseline_disk_io_mbs: INSTANCE_NANO_SPECS.baseline_disk_io_mbs,
max_disk_io_mbs: INSTANCE_NANO_SPECS.max_disk_io_mbs,
connections_direct: INSTANCE_NANO_SPECS.connections_direct,
connections_pooler: INSTANCE_NANO_SPECS.connections_pooler,
} as ProjectAddonVariantMeta,
})
return computeOptions
}
Domain
Subdomains
Source
Frequently Asked Questions
What does getAvailableComputeOptions() do?
getAvailableComputeOptions() is a function in the supabase codebase.
What does getAvailableComputeOptions() call?
getAvailableComputeOptions() calls 1 function(s): isProjectAddonVariantMeta.
What calls getAvailableComputeOptions()?
getAvailableComputeOptions() is called by 2 function(s): ComputeSizeField, DiskManagementReviewAndSubmitDialog.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free