|
5 | 5 | "reflect" |
6 | 6 |
|
7 | 7 | "github.com/databricks/terraform-provider-databricks/common" |
| 8 | + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" |
8 | 9 | "github.com/hashicorp/terraform-plugin-framework/schema/validator" |
9 | 10 | ) |
10 | 11 |
|
@@ -72,6 +73,37 @@ func (s *CustomizableSchema) AddValidator(v any, path ...string) *CustomizableSc |
72 | 73 | return s |
73 | 74 | } |
74 | 75 |
|
| 76 | +func (s *CustomizableSchema) AddPlanModifier(v any, path ...string) *CustomizableSchema { |
| 77 | + cb := func(attr AttributeBuilder) AttributeBuilder { |
| 78 | + switch a := attr.(type) { |
| 79 | + case BoolAttributeBuilder: |
| 80 | + return a.AddPlanModifier(v.(planmodifier.Bool)) |
| 81 | + case Float64AttributeBuilder: |
| 82 | + return a.AddPlanModifier(v.(planmodifier.Float64)) |
| 83 | + case Int64AttributeBuilder: |
| 84 | + return a.AddPlanModifier(v.(planmodifier.Int64)) |
| 85 | + case ListAttributeBuilder: |
| 86 | + return a.AddPlanModifier(v.(planmodifier.List)) |
| 87 | + case ListNestedAttributeBuilder: |
| 88 | + return a.AddPlanModifier(v.(planmodifier.List)) |
| 89 | + case MapAttributeBuilder: |
| 90 | + return a.AddPlanModifier(v.(planmodifier.Map)) |
| 91 | + case MapNestedAttributeBuilder: |
| 92 | + return a.AddPlanModifier(v.(planmodifier.Map)) |
| 93 | + case SingleNestedAttributeBuilder: |
| 94 | + return a.AddPlanModifier(v.(planmodifier.Object)) |
| 95 | + case StringAttributeBuilder: |
| 96 | + return a.AddPlanModifier(v.(planmodifier.String)) |
| 97 | + default: |
| 98 | + panic(fmt.Errorf("cannot add planmodifier, attribute builder type is invalid: %s. %s", reflect.TypeOf(attr).String(), common.TerraformBugErrorMessage)) |
| 99 | + } |
| 100 | + } |
| 101 | + |
| 102 | + navigateSchemaWithCallback(&s.attr, cb, path...) |
| 103 | + |
| 104 | + return s |
| 105 | +} |
| 106 | + |
75 | 107 | func (s *CustomizableSchema) SetOptional(path ...string) *CustomizableSchema { |
76 | 108 | cb := func(attr AttributeBuilder) AttributeBuilder { |
77 | 109 | return attr.SetOptional() |
|
0 commit comments