feat: add source_provider mapping for actual VPS provisioning
- Update PricingWithProvider type with source_provider and source_region_code
- Update getPricingWithProvider query to JOIN instance_types for actual plan_id
- Use source_provider (linode/vultr) instead of provider_name (Anvil)
- Use source_region_code for actual provider region (ap-northeast, nrt, icn)
Mapping: anvil_regions.source_provider + anvil_pricing.source_instance_id
→ instance_types.instance_id (actual Linode/Vultr plan)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -196,18 +196,25 @@ export class ProvisioningRepository {
|
||||
ap.id as pricing_id,
|
||||
0 as provider_id,
|
||||
'Anvil' as provider_name,
|
||||
'https://api.anvil.cloud' as api_base_url,
|
||||
ai.name as instance_id,
|
||||
CASE ar.source_provider
|
||||
WHEN 'linode' THEN 'https://api.linode.com/v4'
|
||||
WHEN 'vultr' THEN 'https://api.vultr.com/v2'
|
||||
ELSE 'https://api.anvil.cloud'
|
||||
END as api_base_url,
|
||||
it.instance_id as instance_id,
|
||||
ai.display_name as instance_name,
|
||||
ar.name as region_code,
|
||||
ar.display_name as region_name,
|
||||
ap.monthly_price,
|
||||
ai.vcpus as vcpu,
|
||||
CAST(ai.memory_gb * 1024 AS INTEGER) as memory_mb,
|
||||
ai.disk_gb as storage_gb
|
||||
ai.disk_gb as storage_gb,
|
||||
ar.source_provider,
|
||||
ar.source_region_code
|
||||
FROM anvil_pricing ap
|
||||
JOIN anvil_instances ai ON ap.anvil_instance_id = ai.id
|
||||
JOIN anvil_regions ar ON ap.anvil_region_id = ar.id
|
||||
JOIN instance_types it ON ap.source_instance_id = it.id
|
||||
WHERE ap.id = ? AND ai.active = 1 AND ar.active = 1`
|
||||
)
|
||||
.bind(pricingId)
|
||||
|
||||
Reference in New Issue
Block a user