/
object_value.go
50 lines (41 loc) · 2.1 KB
/
object_value.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
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package types
import (
"context"
"github.com/hashicorp/terraform-plugin-framework/attr"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
)
type Object = basetypes.ObjectValue
// ObjectNull creates a Object with a null value. Determine whether the value is
// null via the Object type IsNull method.
func ObjectNull(attributeTypes map[string]attr.Type) basetypes.ObjectValue {
return basetypes.NewObjectNull(attributeTypes)
}
// ObjectUnknown creates a Object with an unknown value. Determine whether the
// value is unknown via the Object type IsUnknown method.
func ObjectUnknown(attributeTypes map[string]attr.Type) basetypes.ObjectValue {
return basetypes.NewObjectUnknown(attributeTypes)
}
// ObjectValue creates a Object with a known value. Access the value via the Object
// type Attributes or As methods.
func ObjectValue(attributeTypes map[string]attr.Type, attributes map[string]attr.Value) (basetypes.ObjectValue, diag.Diagnostics) {
return basetypes.NewObjectValue(attributeTypes, attributes)
}
// ObjectValueFrom creates a Object with a known value, using reflection rules.
// The attributes must be a struct which can convert into the given attribute types.
// Access the value via the Object type Attributes or As methods.
func ObjectValueFrom(ctx context.Context, attributeTypes map[string]attr.Type, attributes any) (basetypes.ObjectValue, diag.Diagnostics) {
return basetypes.NewObjectValueFrom(ctx, attributeTypes, attributes)
}
// ObjectValueMust creates a Object with a known value, converting any diagnostics
// into a panic at runtime. Access the value via the Object
// type Attributes or As methods.
//
// This creation function is only recommended to create Object values which will
// not potentially affect practitioners, such as testing, or exhaustively
// tested provider logic.
func ObjectValueMust(attributeTypes map[string]attr.Type, attributes map[string]attr.Value) basetypes.ObjectValue {
return basetypes.NewObjectValueMust(attributeTypes, attributes)
}