Skip to content

Conversation

spinillos
Copy link
Member

It adds code to return the proper DataQueryKind builder if exists. The difference from #915 is that we are using interfaces for Dataquery and its why we cannot reuse the old code. So I prefer to add a GoV2Converter to setup the new ones.

It depends of grafana/cog#858, since it needs objectExists function.

@spinillos spinillos marked this pull request as draft October 1, 2025 10:54
Copy link

Note: the diff show code changes that would be introduced by this PR. Changes already on main are excluded.

🔎 Changes to grafana-foundation-sdk@next+cog-v0.0.x

diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/go/cog/runtime.go /tmp/foundation-workspace-current/foundation-sdk/go/cog/runtime.go
--- /tmp/foundation-workspace-main/foundation-sdk/go/cog/runtime.go	2025-10-13 14:56:16.244003324 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/go/cog/runtime.go	2025-10-13 14:55:52.257044090 +0000
@@ -194,6 +194,15 @@
 	return NewRuntime().ConvertDataqueryToGo(dataquery)
 }
 
+func ConvertDataQueryKindToCode(dataqueryKind any, group string) string {
+	config, found := NewRuntime().dataqueryVariants[group]
+	if found && config.GoV2Converter != nil {
+		return config.GoV2Converter(dataqueryKind)
+	}
+
+	return "/* could not convert dataquerykind to go */"
+}
+
 func Dump(root any) string {
 	return dumpValue(reflect.ValueOf(root))
 }
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/go/cog/variants/variants.go /tmp/foundation-workspace-current/foundation-sdk/go/cog/variants/variants.go
--- /tmp/foundation-workspace-main/foundation-sdk/go/cog/variants/variants.go	2025-10-13 14:56:16.244003324 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/go/cog/variants/variants.go	2025-10-13 14:55:52.257044090 +0000
@@ -19,7 +19,8 @@
 	Identifier                 string
 	DataqueryUnmarshaler       func(raw []byte) (Dataquery, error)
 	StrictDataqueryUnmarshaler func(raw []byte) (Dataquery, error)
-	GoConverter                func(inputPanel any) string
+	GoConverter                func(dataquery any) string
+	GoV2Converter              func(dataquery any) string
 }
 
 type Dataquery interface {
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java	2025-10-13 14:56:16.075003588 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/alerting/QueryDeserializer.java	2025-10-13 14:55:52.086044453 +0000
@@ -14,6 +14,10 @@
 
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
+import java.util.List;
+import com.grafana.foundation.dashboard.DataSourceRef;
 
 
 import java.io.IOException;
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java	2025-10-13 14:56:16.077003585 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/azuremonitor/BuilderQueryEditorOperatorTypeDeserializer.java	2025-10-13 14:55:52.088044449 +0000
@@ -10,12 +10,6 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import com.grafana.foundation.cog.variants.Dataquery;
-import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
-import com.grafana.foundation.cog.variants.PanelConfig;
-import java.util.Map;
 
 public class BuilderQueryEditorOperatorTypeDeserializer extends JsonDeserializer<BuilderQueryEditorOperatorType> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java	2025-10-13 14:56:16.082003577 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorTypeDeserializer.java	2025-10-13 14:55:52.093044438 +0000
@@ -12,10 +12,10 @@
 import java.io.IOException;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
+import java.util.List;
+import com.grafana.foundation.dashboard.DataSourceRef;
 
 public class QueryEditorOperatorTypeDeserializer extends JsonDeserializer<QueryEditorOperatorType> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java	2025-10-13 14:56:16.082003577 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/QueryEditorOperatorValueTypeDeserializer.java	2025-10-13 14:55:52.094044436 +0000
@@ -12,10 +12,10 @@
 import java.io.IOException;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
+import java.util.List;
+import com.grafana.foundation.dashboard.DataSourceRef;
 
 public class QueryEditorOperatorValueTypeDeserializer extends JsonDeserializer<QueryEditorOperatorValueType> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java	2025-10-13 14:56:16.083003576 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/cloudwatch/StringOrArrayOfStringDeserializer.java	2025-10-13 14:55:52.094044436 +0000
@@ -12,10 +12,10 @@
 import java.io.IOException;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
+import java.util.List;
+import com.grafana.foundation.dashboard.DataSourceRef;
 
 public class StringOrArrayOfStringDeserializer extends JsonDeserializer<StringOrArrayOfString> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java	2025-10-13 14:56:16.084003574 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/common/BoolOrFloat64Deserializer.java	2025-10-13 14:55:52.095044434 +0000
@@ -10,10 +10,6 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import com.grafana.foundation.cog.variants.Dataquery;
-import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 
 public class BoolOrFloat64Deserializer extends JsonDeserializer<BoolOrFloat64> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java	2025-10-13 14:56:16.090003565 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/PanelDeserializer.java	2025-10-13 14:55:52.101044421 +0000
@@ -14,8 +14,6 @@
 
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java	2025-10-13 14:56:16.090003565 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrArrayOfStringDeserializer.java	2025-10-13 14:55:52.102044419 +0000
@@ -12,10 +12,9 @@
 import java.io.IOException;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
+import java.util.List;
 
 public class StringOrArrayOfStringDeserializer extends JsonDeserializer<StringOrArrayOfString> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java	2025-10-13 14:56:16.091003563 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/dashboard/StringOrMapDeserializer.java	2025-10-13 14:55:52.102044419 +0000
@@ -12,8 +12,6 @@
 import java.io.IOException;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
-import java.util.List;
 import com.grafana.foundation.cog.variants.PanelConfig;
 import java.util.Map;
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java	2025-10-13 14:56:16.096003555 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/elasticsearch/InlineScriptDeserializer.java	2025-10-13 14:55:52.107044408 +0000
@@ -10,9 +10,6 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
-import com.grafana.foundation.cog.variants.Dataquery;
-import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
 
 public class InlineScriptDeserializer extends JsonDeserializer<InlineScript> {
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java	2025-10-13 14:56:16.104003543 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/librarypanel/PanelModelDeserializer.java	2025-10-13 14:55:52.115044391 +0000
@@ -14,6 +14,9 @@
 
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
+import java.util.List;
 import com.grafana.foundation.dashboard.DataSourceRef;
 
 
diff --new-file --unidirectional-new-file '--color=never' --unified --recursive '--exclude=.git' '--exclude=gradle.properties' '--exclude=pyproject.toml' '--exclude=package.json' '--exclude=*.md' /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java
--- /tmp/foundation-workspace-main/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java	2025-10-13 14:56:16.107003538 +0000
+++ /tmp/foundation-workspace-current/foundation-sdk/java/src/main/java/com/grafana/foundation/tempo/StringOrArrayOfStringDeserializer.java	2025-10-13 14:55:52.118044385 +0000
@@ -12,8 +12,10 @@
 import java.io.IOException;
 import com.grafana.foundation.cog.variants.Dataquery;
 import com.grafana.foundation.cog.variants.Registry;
-import com.grafana.foundation.dashboard.DataSourceRef;
+import com.grafana.foundation.cog.variants.PanelConfig;
+import java.util.Map;
 import java.util.List;
+import com.grafana.foundation.dashboard.DataSourceRef;
 
 public class StringOrArrayOfStringDeserializer extends JsonDeserializer<StringOrArrayOfString> {
 

@spinillos spinillos self-assigned this Oct 14, 2025
@spinillos spinillos marked this pull request as ready for review October 14, 2025 07:46
@spinillos spinillos merged commit fb0acd1 into main Oct 16, 2025
7 checks passed
@spinillos spinillos deleted the go-converter-dataquerykind branch October 16, 2025 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants