|
4 | 4 |
|
5 | 5 | package oxide |
6 | 6 |
|
| 7 | +// This file contains hand-written helper methods for generated types. |
| 8 | + |
7 | 9 | import "fmt" |
8 | 10 |
|
| 11 | +// String helpers for oneOf types whose variants are all string or string-like (Name, NameOrId, |
| 12 | +// etc.). |
| 13 | + |
9 | 14 | // String returns the string representation of the RouteDestination's value. |
10 | 15 | // Returns an empty string if no variant is set. |
11 | 16 | func (v RouteDestination) String() string { |
@@ -93,3 +98,97 @@ func (v RouteTarget) String() string { |
93 | 98 | panic(fmt.Sprintf("unhandled RouteTarget variant: %T", val)) |
94 | 99 | } |
95 | 100 | } |
| 101 | + |
| 102 | +// Constructor helpers for oneOf types whose variants are all string or string-like. |
| 103 | + |
| 104 | +// NewRouteDestination creates a RouteDestination from a type constant and string value. |
| 105 | +func NewRouteDestination(t RouteDestinationType, value string) (RouteDestination, error) { |
| 106 | + switch t { |
| 107 | + case RouteDestinationTypeIp: |
| 108 | + return RouteDestination{Value: &RouteDestinationIp{Value: value}}, nil |
| 109 | + case RouteDestinationTypeIpNet: |
| 110 | + return RouteDestination{Value: &RouteDestinationIpNet{Value: IpNet(value)}}, nil |
| 111 | + case RouteDestinationTypeVpc: |
| 112 | + return RouteDestination{Value: &RouteDestinationVpc{Value: Name(value)}}, nil |
| 113 | + case RouteDestinationTypeSubnet: |
| 114 | + return RouteDestination{Value: &RouteDestinationSubnet{Value: Name(value)}}, nil |
| 115 | + default: |
| 116 | + return RouteDestination{}, fmt.Errorf("unknown RouteDestinationType: %s", t) |
| 117 | + } |
| 118 | +} |
| 119 | + |
| 120 | +// NewRouteTarget creates a RouteTarget from a type constant and string value. |
| 121 | +// For RouteTargetTypeDrop, the value is ignored. |
| 122 | +func NewRouteTarget(t RouteTargetType, value string) (RouteTarget, error) { |
| 123 | + switch t { |
| 124 | + case RouteTargetTypeIp: |
| 125 | + return RouteTarget{Value: &RouteTargetIp{Value: value}}, nil |
| 126 | + case RouteTargetTypeVpc: |
| 127 | + return RouteTarget{Value: &RouteTargetVpc{Value: Name(value)}}, nil |
| 128 | + case RouteTargetTypeSubnet: |
| 129 | + return RouteTarget{Value: &RouteTargetSubnet{Value: Name(value)}}, nil |
| 130 | + case RouteTargetTypeInstance: |
| 131 | + return RouteTarget{Value: &RouteTargetInstance{Value: Name(value)}}, nil |
| 132 | + case RouteTargetTypeInternetGateway: |
| 133 | + return RouteTarget{Value: &RouteTargetInternetGateway{Value: Name(value)}}, nil |
| 134 | + case RouteTargetTypeDrop: |
| 135 | + return RouteTarget{Value: &RouteTargetDrop{}}, nil |
| 136 | + default: |
| 137 | + return RouteTarget{}, fmt.Errorf("unknown RouteTargetType: %s", t) |
| 138 | + } |
| 139 | +} |
| 140 | + |
| 141 | +// NewVpcFirewallRuleHostFilter creates a VpcFirewallRuleHostFilter from a type |
| 142 | +// constant and string value. |
| 143 | +func NewVpcFirewallRuleHostFilter( |
| 144 | + t VpcFirewallRuleHostFilterType, |
| 145 | + value string, |
| 146 | +) (VpcFirewallRuleHostFilter, error) { |
| 147 | + switch t { |
| 148 | + case VpcFirewallRuleHostFilterTypeVpc: |
| 149 | + return VpcFirewallRuleHostFilter{ |
| 150 | + Value: &VpcFirewallRuleHostFilterVpc{Value: Name(value)}, |
| 151 | + }, nil |
| 152 | + case VpcFirewallRuleHostFilterTypeSubnet: |
| 153 | + return VpcFirewallRuleHostFilter{ |
| 154 | + Value: &VpcFirewallRuleHostFilterSubnet{Value: Name(value)}, |
| 155 | + }, nil |
| 156 | + case VpcFirewallRuleHostFilterTypeInstance: |
| 157 | + return VpcFirewallRuleHostFilter{ |
| 158 | + Value: &VpcFirewallRuleHostFilterInstance{Value: Name(value)}, |
| 159 | + }, nil |
| 160 | + case VpcFirewallRuleHostFilterTypeIp: |
| 161 | + return VpcFirewallRuleHostFilter{Value: &VpcFirewallRuleHostFilterIp{Value: value}}, nil |
| 162 | + case VpcFirewallRuleHostFilterTypeIpNet: |
| 163 | + return VpcFirewallRuleHostFilter{ |
| 164 | + Value: &VpcFirewallRuleHostFilterIpNet{Value: IpNet(value)}, |
| 165 | + }, nil |
| 166 | + default: |
| 167 | + return VpcFirewallRuleHostFilter{}, fmt.Errorf( |
| 168 | + "unknown VpcFirewallRuleHostFilterType: %s", |
| 169 | + t, |
| 170 | + ) |
| 171 | + } |
| 172 | +} |
| 173 | + |
| 174 | +// NewVpcFirewallRuleTarget creates a VpcFirewallRuleTarget from a type constant |
| 175 | +// and string value. |
| 176 | +func NewVpcFirewallRuleTarget( |
| 177 | + t VpcFirewallRuleTargetType, |
| 178 | + value string, |
| 179 | +) (VpcFirewallRuleTarget, error) { |
| 180 | + switch t { |
| 181 | + case VpcFirewallRuleTargetTypeVpc: |
| 182 | + return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetVpc{Value: Name(value)}}, nil |
| 183 | + case VpcFirewallRuleTargetTypeSubnet: |
| 184 | + return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetSubnet{Value: Name(value)}}, nil |
| 185 | + case VpcFirewallRuleTargetTypeInstance: |
| 186 | + return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetInstance{Value: Name(value)}}, nil |
| 187 | + case VpcFirewallRuleTargetTypeIp: |
| 188 | + return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetIp{Value: value}}, nil |
| 189 | + case VpcFirewallRuleTargetTypeIpNet: |
| 190 | + return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetIpNet{Value: IpNet(value)}}, nil |
| 191 | + default: |
| 192 | + return VpcFirewallRuleTarget{}, fmt.Errorf("unknown VpcFirewallRuleTargetType: %s", t) |
| 193 | + } |
| 194 | +} |
0 commit comments