Skip to content

Commit 49e3c95

Browse files
kjwardytobio
andauthored
Add URL support to data_view field_formats (#812)
* Add URL support to data_view field_formats (#1) - Adds support for `urlTemplate` and `labelTemplate` to data_views.field_formats - Amends API request build process to account for when some/any data_views.field_formats.attributes aren't passed in * Update internal/kibana/data_view/schema.go Co-authored-by: Toby Brain <[email protected]> * Update internal/kibana/data_view/schema.go Co-authored-by: Toby Brain <[email protected]> * PR changes --------- Co-authored-by: Toby Brain <[email protected]>
1 parent ba9abc9 commit 49e3c95

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

docs/resources/kibana_data_view.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ Optional:
8888

8989
Optional:
9090

91+
- `labeltemplate` (String)
9192
- `pattern` (String)
93+
- `urltemplate` (String)
9294

9395

9496

internal/kibana/data_view/schema.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ func getSchema() schema.Schema {
147147
"pattern": schema.StringAttribute{
148148
Optional: true,
149149
},
150+
"urltemplate": schema.StringAttribute{
151+
Optional: true,
152+
},
153+
"labeltemplate": schema.StringAttribute{
154+
Optional: true,
155+
},
150156
},
151157
},
152158
},
@@ -334,8 +340,15 @@ func dataViewFromResponse(resp data_views.DataViewResponseObjectDataView) apiDat
334340

335341
if params, ok := formatMap["params"]; ok {
336342
if paramsMap, ok := params.(map[string]interface{}); ok {
343+
apiFormat.Params = &apiFieldFormatParams{}
337344
if pattern, ok := paramsMap["pattern"]; ok {
338-
apiFormat.Params = &apiFieldFormatParams{Pattern: pattern.(string)}
345+
apiFormat.Params.Pattern = utils.Pointer(pattern.(string))
346+
}
347+
if urltemplate, ok := paramsMap["urlTemplate"]; ok {
348+
apiFormat.Params.UrlTemplate = utils.Pointer(urltemplate.(string))
349+
}
350+
if labeltemplate, ok := paramsMap["labelTemplate"]; ok {
351+
apiFormat.Params.LabelTemplate = utils.Pointer(labeltemplate.(string))
339352
}
340353
}
341354
}
@@ -600,7 +613,9 @@ func tfFieldFormatsToAPI(ctx context.Context, fieldFormats types.Map) (map[strin
600613
}
601614

602615
apiParams = &apiFieldFormatParams{
603-
Pattern: tfParams.Pattern.ValueString(),
616+
Pattern: tfParams.Pattern.ValueStringPointer(),
617+
UrlTemplate: tfParams.UrlTemplate.ValueStringPointer(),
618+
LabelTemplate: tfParams.LabelTemplate.ValueStringPointer(),
604619
}
605620
}
606621

@@ -658,9 +673,13 @@ type apiFieldFormat struct {
658673
}
659674

660675
type tfFieldFormatParamsV0 struct {
661-
Pattern types.String `tfsdk:"pattern"`
676+
Pattern types.String `tfsdk:"pattern"`
677+
UrlTemplate types.String `tfsdk:"urltemplate"`
678+
LabelTemplate types.String `tfsdk:"labeltemplate"`
662679
}
663680

664681
type apiFieldFormatParams struct {
665-
Pattern string `tfsdk:"pattern" json:"pattern"`
682+
Pattern *string `tfsdk:"pattern" json:"pattern,omitempty"`
683+
UrlTemplate *string `tfsdk:"urltemplate" json:"urlTemplate,omitempty"`
684+
LabelTemplate *string `tfsdk:"labeltemplate" json:"labelTemplate,omitempty"`
666685
}

internal/kibana/data_view/schema_test.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ func Test_tfModelV0_ToCreateRequest(t *testing.T) {
4444
"field1": {
4545
ID: "field1",
4646
Params: &apiFieldFormatParams{
47-
Pattern: "0.00",
47+
Pattern: utils.Pointer("0.00"),
48+
UrlTemplate: utils.Pointer("https://test.com/{{value}}"),
49+
LabelTemplate: utils.Pointer("{{value}}"),
4850
},
4951
},
5052
},
@@ -66,7 +68,9 @@ func Test_tfModelV0_ToCreateRequest(t *testing.T) {
6668
"field1": apiFieldFormat{
6769
ID: "field1",
6870
Params: &apiFieldFormatParams{
69-
Pattern: "0.00",
71+
Pattern: utils.Pointer("0.00"),
72+
UrlTemplate: utils.Pointer("https://test.com/{{value}}"),
73+
LabelTemplate: utils.Pointer("{{value}}"),
7074
},
7175
},
7276
},
@@ -161,7 +165,9 @@ func Test_tfModelV0_ToUpdateRequest(t *testing.T) {
161165
"field1": {
162166
ID: "field1",
163167
Params: &apiFieldFormatParams{
164-
Pattern: "0.00",
168+
Pattern: utils.Pointer("0.00"),
169+
UrlTemplate: utils.Pointer("https://test.com/{{value}}"),
170+
LabelTemplate: utils.Pointer("{{value}}"),
165171
},
166172
},
167173
},
@@ -176,7 +182,9 @@ func Test_tfModelV0_ToUpdateRequest(t *testing.T) {
176182
"field1": apiFieldFormat{
177183
ID: "field1",
178184
Params: &apiFieldFormatParams{
179-
Pattern: "0.00",
185+
Pattern: utils.Pointer("0.00"),
186+
UrlTemplate: utils.Pointer("https://test.com/{{value}}"),
187+
LabelTemplate: utils.Pointer("{{value}}"),
180188
},
181189
},
182190
},

0 commit comments

Comments
 (0)