Skip to content

Commit a60f0d6

Browse files
committed
refactor: extract stringValueOrNull helper to util.go
Replace the repeated if/else null-on-empty-string pattern at all 4 CORSBehavior read sites with a single stringValueOrNull() call.
1 parent 0eee153 commit a60f0d6

4 files changed

Lines changed: 17 additions & 21 deletions

File tree

internal/provider/provider.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (p *CoderdProvider) Configure(ctx context.Context, req provider.ConfigureRe
9090
if !ok {
9191
resp.Diagnostics.AddError("url", "url or $CODER_URL is required")
9292
return
93-
}
93+
}
9494
data.URL = types.StringValue(urlEnv)
9595
}
9696
if data.Token.ValueString() == "" {

internal/provider/template_data_source.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,11 +335,7 @@ func (d *TemplateDataSource) Read(ctx context.Context, req datasource.ReadReques
335335
data.TimeTilDormantAutoDeleteMillis = types.Int64Value(template.TimeTilDormantAutoDeleteMillis)
336336
data.RequireActiveVersion = types.BoolValue(template.RequireActiveVersion)
337337
data.MaxPortShareLevel = types.StringValue(string(template.MaxPortShareLevel))
338-
if template.CORSBehavior == "" {
339-
data.CORSBehavior = types.StringNull()
340-
} else {
341-
data.CORSBehavior = types.StringValue(string(template.CORSBehavior))
342-
}
338+
data.CORSBehavior = stringValueOrNull(string(template.CORSBehavior))
343339
data.CreatedByUserID = UUIDValue(template.CreatedByID)
344340
data.CreatedAt = types.Int64Value(template.CreatedAt.Unix())
345341
data.UpdatedAt = types.Int64Value(template.UpdatedAt.Unix())

internal/provider/template_resource.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -616,11 +616,7 @@ func (r *TemplateResource) Create(ctx context.Context, req resource.CreateReques
616616
}
617617

618618
// Set cors_behavior from the response (it's set during create via toCreateRequest)
619-
if templateResp.CORSBehavior == "" {
620-
data.CORSBehavior = types.StringNull()
621-
} else {
622-
data.CORSBehavior = types.StringValue(string(templateResp.CORSBehavior))
623-
}
619+
data.CORSBehavior = stringValueOrNull(string(templateResp.CORSBehavior))
624620

625621
// TODO: Remove this update call (and the attribute) once the provider
626622
// requires a Coder version where this flag has been removed.
@@ -680,11 +676,7 @@ func (r *TemplateResource) Read(ctx context.Context, req resource.ReadRequest, r
680676
return
681677
}
682678
data.MaxPortShareLevel = types.StringValue(string(template.MaxPortShareLevel))
683-
if template.CORSBehavior == "" {
684-
data.CORSBehavior = types.StringNull()
685-
} else {
686-
data.CORSBehavior = types.StringValue(string(template.CORSBehavior))
687-
}
679+
data.CORSBehavior = stringValueOrNull(string(template.CORSBehavior))
688680
data.UseClassicParameterFlow = types.BoolValue(template.UseClassicParameterFlow)
689681

690682
if !data.ACL.IsNull() {
@@ -861,11 +853,7 @@ func (r *TemplateResource) Update(ctx context.Context, req resource.UpdateReques
861853
return
862854
}
863855
newState.MaxPortShareLevel = types.StringValue(string(templateResp.MaxPortShareLevel))
864-
if templateResp.CORSBehavior == "" {
865-
newState.CORSBehavior = types.StringNull()
866-
} else {
867-
newState.CORSBehavior = types.StringValue(string(templateResp.CORSBehavior))
868-
}
856+
newState.CORSBehavior = stringValueOrNull(string(templateResp.CORSBehavior))
869857

870858
resp.Diagnostics.Append(newState.Versions.setPrivateState(ctx, resp.Private)...)
871859
if resp.Diagnostics.HasError() {

internal/provider/util.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212

1313
"github.com/coder/coder/v2/codersdk"
1414
"github.com/google/uuid"
15+
16+
"github.com/hashicorp/terraform-plugin-framework/types"
1517
)
1618

1719
func PrintOrNull(v any) string {
@@ -123,3 +125,13 @@ func isNotFound(err error) bool {
123125
}
124126
return false
125127
}
128+
129+
// stringValueOrNull returns types.StringNull() if s is empty,
130+
// otherwise types.StringValue(s).
131+
func stringValueOrNull(s string) types.String {
132+
if s == "" {
133+
return types.StringNull()
134+
}
135+
return types.StringValue(s)
136+
}
137+

0 commit comments

Comments
 (0)