|
5 | 5 | "fmt" |
6 | 6 | "unsafe" |
7 | 7 |
|
| 8 | + "github.com/grafana/grafana-plugin-sdk-go/backend" |
8 | 9 | "github.com/grafana/grafana-plugin-sdk-go/data" |
9 | 10 | "github.com/grafana/grafana-plugin-sdk-go/data/converters" |
10 | 11 | "github.com/grafana/grafana-plugin-sdk-go/data/utils/jsoniter" |
@@ -51,35 +52,59 @@ func (g *DataQuery) Set(key string, val any) *DataQuery { |
51 | 52 | case "refId": |
52 | 53 | g.RefID, _ = val.(string) |
53 | 54 | case "resultAssertions": |
| 55 | + v, ok := val.(ResultAssertions) |
| 56 | + if ok { |
| 57 | + g.ResultAssertions = &v |
| 58 | + return g |
| 59 | + } |
54 | 60 | body, err := json.Marshal(val) |
55 | | - if err != nil { |
56 | | - _ = json.Unmarshal(body, &g.ResultAssertions) |
| 61 | + if err == nil { |
| 62 | + err = json.Unmarshal(body, &g.ResultAssertions) |
| 63 | + if err != nil { |
| 64 | + backend.Logger.Warn("error reading resultAssertions from value. %w", err) |
| 65 | + } |
57 | 66 | } |
58 | 67 | case "timeRange": |
| 68 | + v, ok := val.(TimeRange) |
| 69 | + if ok { |
| 70 | + g.TimeRange = &v |
| 71 | + return g |
| 72 | + } |
59 | 73 | body, err := json.Marshal(val) |
60 | | - if err != nil { |
61 | | - _ = json.Unmarshal(body, &g.TimeRange) |
| 74 | + if err == nil { |
| 75 | + err = json.Unmarshal(body, &g.TimeRange) |
| 76 | + if err != nil { |
| 77 | + backend.Logger.Warn("error reading timeRange from value. %w", err) |
| 78 | + } |
62 | 79 | } |
63 | 80 | case "datasource": |
| 81 | + v, ok := val.(DataSourceRef) |
| 82 | + if ok { |
| 83 | + g.Datasource = &v |
| 84 | + return g |
| 85 | + } |
64 | 86 | body, err := json.Marshal(val) |
65 | | - if err != nil { |
66 | | - _ = json.Unmarshal(body, &g.Datasource) |
| 87 | + if err == nil { |
| 88 | + err = json.Unmarshal(body, &g.Datasource) |
| 89 | + if err != nil { |
| 90 | + backend.Logger.Warn("error reading datasource from value. %w", err) |
| 91 | + } |
67 | 92 | } |
68 | 93 | case "datasourceId": |
69 | 94 | v, err := converters.JSONValueToInt64.Converter(val) |
70 | | - if err != nil { |
| 95 | + if err == nil { |
71 | 96 | g.DatasourceID, _ = v.(int64) |
72 | 97 | } |
73 | 98 | case "queryType": |
74 | 99 | g.QueryType, _ = val.(string) |
75 | 100 | case "maxDataPoints": |
76 | 101 | v, err := converters.JSONValueToInt64.Converter(val) |
77 | | - if err != nil { |
| 102 | + if err == nil { |
78 | 103 | g.MaxDataPoints, _ = v.(int64) |
79 | 104 | } |
80 | 105 | case "intervalMs": |
81 | 106 | v, err := converters.JSONValueToFloat64.Converter(val) |
82 | | - if err != nil { |
| 107 | + if err == nil { |
83 | 108 | g.IntervalMS, _ = v.(float64) |
84 | 109 | } |
85 | 110 | case "hide": |
|
0 commit comments