Skip to content

Commit 0b895e0

Browse files
refactor(lens): deduplicate configUsesESQL predicate into lenscommon (#3816)
* refactor(lens): deduplicate configUsesESQL predicate into lenscommon Move the byte-for-byte identical per-package *configUsesESQL functions (lenswaffle, lensheatmap, lenstagcloud, lensgauge, lenstreemap, lensmosaic) into a single lenscommon.ConfigUsesESQL helper that takes *models.FilterSimpleModel directly. Eliminates ~54 lines of redundant predicate code and ensures any future change to ES|QL detection logic is made in one place. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ci: trigger checks --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 544c5f7 commit 0b895e0

7 files changed

Lines changed: 17 additions & 67 deletions

File tree

internal/kibana/dashboard/lenscommon/filter_simple.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ func FilterSimpleFromAPI(m *models.FilterSimpleModel, apiQuery *kbapi.KibanaHTTP
3939
m.Language = typeutils.StringishPointerValue(apiQuery.Language)
4040
}
4141

42+
// ConfigUsesESQL reports whether a config's query field indicates an ES|QL data source.
43+
// A nil query means no filter is set, which is the ES|QL default state.
44+
// A query with null expression and language is the explicit ES|QL sentinel.
45+
func ConfigUsesESQL(query *models.FilterSimpleModel) bool {
46+
if query == nil {
47+
return true
48+
}
49+
return query.Expression.IsNull() && query.Language.IsNull()
50+
}
51+
4252
// FilterSimpleToAPI maps FilterSimpleModel into kbapi.KibanaHTTPAPIsFilterSimple.
4353
func FilterSimpleToAPI(m *models.FilterSimpleModel) *kbapi.KibanaHTTPAPIsFilterSimple {
4454
if m == nil {

internal/kibana/dashboard/panel/lensgauge/api_conv.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,6 @@ func isGaugeNoESQLCandidateActuallyESQL(api kbapi.KibanaHTTPAPIsGaugeNoESQL) boo
3838
return lenscommon.LensDataSourceIsESQLOrTable(api.DataSource.MarshalJSON())
3939
}
4040

41-
func gaugeConfigUsesESQL(m *models.GaugeConfigModel) bool {
42-
if m == nil {
43-
return false
44-
}
45-
if m.Query == nil {
46-
return true
47-
}
48-
return m.Query.Expression.IsNull() && m.Query.Language.IsNull()
49-
}
50-
5141
func gaugeConfigFromAPI(ctx context.Context, m *models.GaugeConfigModel, prior *models.GaugeConfigModel, api kbapi.KibanaHTTPAPIsGaugeNoESQL) diag.Diagnostics {
5242
var diags diag.Diagnostics
5343
_ = ctx
@@ -217,7 +207,7 @@ func gaugeConfigToAPI(m *models.GaugeConfigModel) (lenscommon.VisByValueConfig0,
217207
return attrs, diags
218208
}
219209

220-
if gaugeConfigUsesESQL(m) {
210+
if lenscommon.ConfigUsesESQL(m.Query) {
221211
esql, d := gaugeConfigToAPIESQL(m)
222212
diags.Append(d...)
223213
if diags.HasError() {

internal/kibana/dashboard/panel/lensheatmap/api_conv.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ func heatmapConfigToAPI(m *models.HeatmapConfigModel) (lenscommon.VisByValueConf
200200
return attrs, diags
201201
}
202202

203-
if heatmapConfigUsesESQL(m) {
203+
if lenscommon.ConfigUsesESQL(m.Query) {
204204
esql, esqlDiags := heatmapConfigToAPIESQL(m)
205205
diags.Append(esqlDiags...)
206206
if diags.HasError() {
@@ -224,16 +224,6 @@ func heatmapConfigToAPI(m *models.HeatmapConfigModel) (lenscommon.VisByValueConf
224224
return attrs, diags
225225
}
226226

227-
func heatmapConfigUsesESQL(m *models.HeatmapConfigModel) bool {
228-
if m == nil {
229-
return false
230-
}
231-
if m.Query == nil {
232-
return true
233-
}
234-
return m.Query.Expression.IsNull() && m.Query.Language.IsNull()
235-
}
236-
237227
func heatmapConfigToAPINoESQL(m *models.HeatmapConfigModel) (kbapi.KibanaHTTPAPIsHeatmapNoESQL, diag.Diagnostics) {
238228
var diags diag.Diagnostics
239229
api := kbapi.KibanaHTTPAPIsHeatmapNoESQL{

internal/kibana/dashboard/panel/lensmosaic/api_conv.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ func mosaicConfigToAPI(m *models.MosaicConfigModel) (lenscommon.VisByValueConfig
221221
return attrs, diags
222222
}
223223

224-
if mosaicConfigUsesESQL(m) {
224+
if lenscommon.ConfigUsesESQL(m.Query) {
225225
esql, esqlDiags := mosaicConfigToAPIMosaicESQL(m)
226226
diags.Append(esqlDiags...)
227227
if diags.HasError() {
@@ -245,16 +245,6 @@ func mosaicConfigToAPI(m *models.MosaicConfigModel) (lenscommon.VisByValueConfig
245245
return attrs, diags
246246
}
247247

248-
func mosaicConfigUsesESQL(m *models.MosaicConfigModel) bool {
249-
if m == nil {
250-
return false
251-
}
252-
if m.Query == nil {
253-
return true
254-
}
255-
return m.Query.Expression.IsNull() && m.Query.Language.IsNull()
256-
}
257-
258248
func mosaicConfigToAPIMosaicESQL(m *models.MosaicConfigModel) (kbapi.KibanaHTTPAPIsMosaicESQL, diag.Diagnostics) {
259249
var diags diag.Diagnostics
260250
var api kbapi.KibanaHTTPAPIsMosaicESQL

internal/kibana/dashboard/panel/lenstagcloud/api_conv.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,6 @@ func tagcloudConfigApplyStylingFromAPI(m *models.TagcloudConfigModel, s *kbapi.K
6767
}
6868
}
6969

70-
func tagcloudConfigUsesESQL(m *models.TagcloudConfigModel) bool {
71-
if m == nil {
72-
return false
73-
}
74-
if m.Query == nil {
75-
return true
76-
}
77-
return m.Query.Expression.IsNull() && m.Query.Language.IsNull()
78-
}
79-
8070
func tagcloudConfigFromAPI(
8171
ctx context.Context,
8272
m *models.TagcloudConfigModel,
@@ -217,7 +207,7 @@ func tagcloudConfigToAPI(m *models.TagcloudConfigModel) (lenscommon.VisByValueCo
217207
return attrs, diags
218208
}
219209

220-
if tagcloudConfigUsesESQL(m) {
210+
if lenscommon.ConfigUsesESQL(m.Query) {
221211
esql, d := tagcloudConfigToAPIESQL(m)
222212
diags.Append(d...)
223213
if diags.HasError() {

internal/kibana/dashboard/panel/lenstreemap/api_conv.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func treemapConfigToAPI(m *models.TreemapConfigModel) (lenscommon.VisByValueConf
210210
return attrs, diags
211211
}
212212

213-
if treemapConfigUsesESQL(m) {
213+
if lenscommon.ConfigUsesESQL(m.Query) {
214214
esql, esqlDiags := treemapConfigToAPITreemapESQL(m)
215215
diags.Append(esqlDiags...)
216216
if diags.HasError() {
@@ -367,16 +367,6 @@ func treemapConfigToAPITreemapESQL(m *models.TreemapConfigModel) (kbapi.KibanaHT
367367
return api, diags
368368
}
369369

370-
func treemapConfigUsesESQL(m *models.TreemapConfigModel) bool {
371-
if m == nil {
372-
return false
373-
}
374-
if m.Query == nil {
375-
return true
376-
}
377-
return m.Query.Expression.IsNull() && m.Query.Language.IsNull()
378-
}
379-
380370
func treemapConfigToAPINoESQL(m *models.TreemapConfigModel) (kbapi.KibanaHTTPAPIsTreemapNoESQL, diag.Diagnostics) {
381371
var diags diag.Diagnostics
382372
api := kbapi.KibanaHTTPAPIsTreemapNoESQL{

internal/kibana/dashboard/panel/lenswaffle/api_conv.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,6 @@ func mergeWaffleConfigFromPlanSeed(cur, seed *models.WaffleConfigModel) {
8585
}
8686
}
8787

88-
func waffleConfigUsesESQL(m *models.WaffleConfigModel) bool {
89-
if m == nil {
90-
return false
91-
}
92-
if m.Query == nil {
93-
return true
94-
}
95-
return m.Query.Expression.IsNull() && m.Query.Language.IsNull()
96-
}
97-
9888
func waffleConfigFromAPINoESQL(ctx context.Context, m *models.WaffleConfigModel, prior *models.WaffleConfigModel, api kbapi.KibanaHTTPAPIsWaffleNoESQL) diag.Diagnostics {
9989
var diags diag.Diagnostics
10090
_ = ctx
@@ -408,7 +398,7 @@ func waffleConfigToAPI(m *models.WaffleConfigModel) (lenscommon.VisByValueConfig
408398
return attrs, diags
409399
}
410400

411-
diags.Append(WaffleConfigModeValidateDiags(waffleConfigUsesESQL(m), WaffleModeListStateFromSlice(len(m.Metrics)),
401+
diags.Append(WaffleConfigModeValidateDiags(lenscommon.ConfigUsesESQL(m.Query), WaffleModeListStateFromSlice(len(m.Metrics)),
412402
WaffleModeListStateFromSlice(len(m.GroupBy)),
413403
WaffleModeListStateFromSlice(len(m.EsqlMetrics)),
414404
WaffleModeListStateFromSlice(len(m.EsqlGroupBy)),
@@ -417,7 +407,7 @@ func waffleConfigToAPI(m *models.WaffleConfigModel) (lenscommon.VisByValueConfig
417407
return attrs, diags
418408
}
419409

420-
if waffleConfigUsesESQL(m) {
410+
if lenscommon.ConfigUsesESQL(m.Query) {
421411
esql, d := waffleConfigToAPIESQL(m)
422412
diags.Append(d...)
423413
if diags.HasError() {

0 commit comments

Comments
 (0)