-
Notifications
You must be signed in to change notification settings - Fork 6
/
converters.go
81 lines (63 loc) · 1.75 KB
/
converters.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package util
import (
"strings"
otypes "github.com/deepmap/oapi-codegen/pkg/types"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/singlestore-labs/singlestore-go/management"
)
func MaybeString(s types.String) *string {
if s.IsNull() || s.IsUnknown() {
return nil
}
return Ptr(s.ValueString())
}
func ToString(s types.String) string {
return s.ValueString()
}
func MaybeStringValue(s *string) types.String {
return maybeElse(s, types.StringValue, types.StringNull)
}
func MaybeBool(b types.Bool) *bool {
if b.IsNull() || b.IsUnknown() {
return nil
}
return Ptr(b.ValueBool())
}
func MaybeBoolValue(b *bool) types.Bool {
return maybeElse(b, types.BoolValue, types.BoolNull)
}
func UUIDStringValue(id otypes.UUID) types.String {
return types.StringValue(id.String())
}
func StringFirewallRanges(frs []types.String) []string {
return Map(frs, ToString)
}
func FirewallRanges(frs *[]string) []types.String {
return Map(Deref(frs), types.StringValue)
}
func WorkspaceGroupStateStringValue(wgs management.WorkspaceGroupState) types.String {
return types.StringValue(string(wgs))
}
func WorkspaceStateString(wgs types.String) *management.WorkspaceState {
for _, s := range []management.WorkspaceState{
management.WorkspaceStateACTIVE,
management.WorkspaceStateFAILED,
management.WorkspaceStatePENDING,
management.WorkspaceStateSUSPENDED,
management.WorkspaceStateTERMINATED,
} {
if strings.EqualFold(wgs.ValueString(), string(s)) {
return &s
}
}
return nil
}
func WorkspaceStateStringValue(ws management.WorkspaceState) types.String {
return types.StringValue(string(ws))
}
func maybeElse[A, B any](input *A, convert func(A) B, create func() B) B {
if input == nil {
return create()
}
return convert(*input)
}