| 53 | } |
| 54 | |
| 55 | type EstimateResult struct { |
| 56 | ResourceName string |
| 57 | SubLabel string // non-empty when grouped under a parent resource (e.g. "Requests", "Duration") |
| 58 | RawType string |
| 59 | Product string |
| 60 | Region string |
| 61 | Props map[string]string |
| 62 | InputsJSON string // formatted Pulumi input properties, empty for non-Pulumi estimates |
| 63 | Prices []PriceEntry // structured pricing options; nil if no pricing |
| 64 | OnDemandRate decimal.Decimal // convenience: the OnDemand hourly rate (zero if unknown) |
| 65 | // EffectiveRate is the rate used for totals — equals OnDemandRate for OnDemand, |
| 66 | // or amortized(RatePerHr + Upfront/termHours) when a non-OnDemand model is selected. |
| 67 | EffectiveRate decimal.Decimal |
| 68 | // IsAmortized is true when EffectiveRate includes an amortized upfront fee. |
| 69 | IsAmortized bool |
| 70 | StatusMsg string // non-empty when pricing lookup failed |
| 71 | // Usage-based fields |
| 72 | IsUsageBased bool // true when pricing is per-request/message/GB rather than per-hour |
| 73 | UsageUnit string // e.g. "Requests", "Messages", "GB" |
| 74 | UsageQty float64 // monthly quantity used for estimation (user-supplied or default) |
| 75 | UsageDefault bool // true when UsageQty came from the built-in default |
| 76 | UsageMonthly decimal.Decimal // estimated monthly cost = f(tiers, UsageQty) |
| 77 | // HourlyQty is the per-resource quantity multiplier applied to the base hourly rate |
| 78 | // (e.g. vCPU count × task count for Fargate, RCU/WCU for DynamoDB provisioned). |
| 79 | // Zero when no multiplier is set. |
| 80 | HourlyQty decimal.Decimal |
| 81 | // HourlyQtyLabel is a human-readable label for HourlyQty (e.g. "256 × 3 tasks"). |
| 82 | // When non-empty, used in the totals table instead of the raw HourlyQty number. |
| 83 | HourlyQtyLabel string |
| 84 | // BaseRate is the per-unit hourly rate before HourlyQty is applied. |
| 85 | // Zero when HourlyQty is not set. |
| 86 | BaseRate decimal.Decimal |
| 87 | // Region metadata |
| 88 | RegionFallback bool // true when region was not detected and us-east-1 was used |
| 89 | } |
nothing calls this directly
no outgoing calls
no test coverage detected