From 49eb9db698428ebfb10594b223f4b16d32c1b5ff Mon Sep 17 00:00:00 2001 From: Alex Khomenko Date: Tue, 18 Apr 2023 08:46:51 +0300 Subject: [PATCH] Cloudwatch: Fix some schema todos (#66664) * Cloudwatch: fix todos * Cloudwatch: Run make-gen --- .../kinds/dataquery/types_dataquery_gen.go | 210 ++++++++++++++++-- .../cloudwatch/__mocks__/sqlUtils.ts | 4 +- .../datasource/cloudwatch/dataquery.cue | 5 +- .../datasource/cloudwatch/dataquery.gen.ts | 5 +- .../datasource/cloudwatch/expressions.ts | 8 +- .../plugins/datasource/cloudwatch/types.ts | 15 +- 6 files changed, 204 insertions(+), 43 deletions(-) diff --git a/pkg/tsdb/cloudwatch/kinds/dataquery/types_dataquery_gen.go b/pkg/tsdb/cloudwatch/kinds/dataquery/types_dataquery_gen.go index 33b46336479..afd937176e8 100644 --- a/pkg/tsdb/cloudwatch/kinds/dataquery/types_dataquery_gen.go +++ b/pkg/tsdb/cloudwatch/kinds/dataquery/types_dataquery_gen.go @@ -56,6 +56,16 @@ const ( CloudWatchMetricsQuerySqlFromPropertyTypeString CloudWatchMetricsQuerySqlFromPropertyType = "string" ) +// Defines values for CloudWatchMetricsQuerySqlGroupByExpressionsParametersType. +const ( + CloudWatchMetricsQuerySqlGroupByExpressionsParametersTypeFunctionParameter CloudWatchMetricsQuerySqlGroupByExpressionsParametersType = "functionParameter" +) + +// Defines values for CloudWatchMetricsQuerySqlGroupByExpressionsPropertyType. +const ( + CloudWatchMetricsQuerySqlGroupByExpressionsPropertyTypeString CloudWatchMetricsQuerySqlGroupByExpressionsPropertyType = "string" +) + // Defines values for CloudWatchMetricsQuerySqlGroupByType. const ( CloudWatchMetricsQuerySqlGroupByTypeAnd CloudWatchMetricsQuerySqlGroupByType = "and" @@ -82,6 +92,16 @@ const ( CloudWatchMetricsQuerySqlSelectTypeFunction CloudWatchMetricsQuerySqlSelectType = "function" ) +// Defines values for CloudWatchMetricsQuerySqlWhereExpressionsParametersType. +const ( + CloudWatchMetricsQuerySqlWhereExpressionsParametersTypeFunctionParameter CloudWatchMetricsQuerySqlWhereExpressionsParametersType = "functionParameter" +) + +// Defines values for CloudWatchMetricsQuerySqlWhereExpressionsPropertyType. +const ( + CloudWatchMetricsQuerySqlWhereExpressionsPropertyTypeString CloudWatchMetricsQuerySqlWhereExpressionsPropertyType = "string" +) + // Defines values for CloudWatchMetricsQuerySqlWhereType. const ( CloudWatchMetricsQuerySqlWhereTypeAnd CloudWatchMetricsQuerySqlWhereType = "and" @@ -107,6 +127,16 @@ const ( MetricQueryTypeN1 MetricQueryType = 1 ) +// Defines values for QueryEditorArrayExpressionExpressionsParametersType. +const ( + QueryEditorArrayExpressionExpressionsParametersTypeFunctionParameter QueryEditorArrayExpressionExpressionsParametersType = "functionParameter" +) + +// Defines values for QueryEditorArrayExpressionExpressionsPropertyType. +const ( + QueryEditorArrayExpressionExpressionsPropertyTypeString QueryEditorArrayExpressionExpressionsPropertyType = "string" +) + // Defines values for QueryEditorArrayExpressionType. const ( QueryEditorArrayExpressionTypeAnd QueryEditorArrayExpressionType = "and" @@ -194,6 +224,16 @@ const ( SQLExpressionFromPropertyTypeString SQLExpressionFromPropertyType = "string" ) +// Defines values for SQLExpressionGroupByExpressionsParametersType. +const ( + SQLExpressionGroupByExpressionsParametersTypeFunctionParameter SQLExpressionGroupByExpressionsParametersType = "functionParameter" +) + +// Defines values for SQLExpressionGroupByExpressionsPropertyType. +const ( + SQLExpressionGroupByExpressionsPropertyTypeString SQLExpressionGroupByExpressionsPropertyType = "string" +) + // Defines values for SQLExpressionGroupByType. const ( SQLExpressionGroupByTypeAnd SQLExpressionGroupByType = "and" @@ -220,6 +260,16 @@ const ( SQLExpressionSelectTypeFunction SQLExpressionSelectType = "function" ) +// Defines values for SQLExpressionWhereExpressionsParametersType. +const ( + SQLExpressionWhereExpressionsParametersTypeFunctionParameter SQLExpressionWhereExpressionsParametersType = "functionParameter" +) + +// Defines values for SQLExpressionWhereExpressionsPropertyType. +const ( + SQLExpressionWhereExpressionsPropertyTypeString SQLExpressionWhereExpressionsPropertyType = "string" +) + // Defines values for SQLExpressionWhereType. const ( SQLExpressionWhereTypeAnd SQLExpressionWhereType = "and" @@ -354,9 +404,8 @@ type CloudWatchMetricsQuery struct { Sql *struct { From *CloudWatchMetricsQuerySqlFrom `json:"from,omitempty"` GroupBy *struct { - // TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - Expressions interface{} `json:"expressions"` - Type CloudWatchMetricsQuerySqlGroupByType `json:"type"` + Expressions []CloudWatchMetricsQuerySqlGroupByExpressionsItem `json:"expressions"` + Type CloudWatchMetricsQuerySqlGroupByType `json:"type"` } `json:"groupBy,omitempty"` Limit *int64 `json:"limit,omitempty"` OrderBy *struct { @@ -377,9 +426,8 @@ type CloudWatchMetricsQuery struct { Type CloudWatchMetricsQuerySqlSelectType `json:"type"` } `json:"select,omitempty"` Where *struct { - // TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - Expressions interface{} `json:"expressions"` - Type CloudWatchMetricsQuerySqlWhereType `json:"type"` + Expressions []CloudWatchMetricsQuerySqlWhereExpressionsItem `json:"expressions"` + Type CloudWatchMetricsQuerySqlWhereType `json:"type"` } `json:"where,omitempty"` } `json:"sql,omitempty"` SqlExpression *string `json:"sqlExpression,omitempty"` @@ -419,6 +467,33 @@ type CloudWatchMetricsQuerySqlFrom struct { union json.RawMessage } +// CloudWatchMetricsQuerySqlGroupByExpressionsParametersType defines model for CloudWatchMetricsQuery.Sql.GroupBy.Expressions.Parameters.Type. +type CloudWatchMetricsQuerySqlGroupByExpressionsParametersType string + +// CloudWatchMetricsQuerySqlGroupByExpressionsPropertyType defines model for CloudWatchMetricsQuery.Sql.GroupBy.Expressions.Property.Type. +type CloudWatchMetricsQuerySqlGroupByExpressionsPropertyType string + +// CloudWatchMetricsQuerySqlGroupByExpressionsItem defines model for CloudWatchMetricsQuery.sql.groupBy.expressions.Item. +type CloudWatchMetricsQuerySqlGroupByExpressionsItem struct { + Name *string `json:"name,omitempty"` + + // TS type is operator: QueryEditorOperator, extended in veneer + Operator *struct { + Name *string `json:"name,omitempty"` + Value *interface{} `json:"value,omitempty"` + } `json:"operator,omitempty"` + Parameters []struct { + Name *string `json:"name,omitempty"` + Type CloudWatchMetricsQuerySqlGroupByExpressionsParametersType `json:"type"` + } `json:"parameters,omitempty"` + Property *struct { + Name *string `json:"name,omitempty"` + Type CloudWatchMetricsQuerySqlGroupByExpressionsPropertyType `json:"type"` + } `json:"property,omitempty"` + Type *interface{} `json:"type,omitempty"` + union json.RawMessage +} + // CloudWatchMetricsQuerySqlGroupByType defines model for CloudWatchMetricsQuery.Sql.GroupBy.Type. type CloudWatchMetricsQuerySqlGroupByType string @@ -434,6 +509,33 @@ type CloudWatchMetricsQuerySqlSelectParametersType string // CloudWatchMetricsQuerySqlSelectType defines model for CloudWatchMetricsQuery.Sql.Select.Type. type CloudWatchMetricsQuerySqlSelectType string +// CloudWatchMetricsQuerySqlWhereExpressionsParametersType defines model for CloudWatchMetricsQuery.Sql.Where.Expressions.Parameters.Type. +type CloudWatchMetricsQuerySqlWhereExpressionsParametersType string + +// CloudWatchMetricsQuerySqlWhereExpressionsPropertyType defines model for CloudWatchMetricsQuery.Sql.Where.Expressions.Property.Type. +type CloudWatchMetricsQuerySqlWhereExpressionsPropertyType string + +// CloudWatchMetricsQuerySqlWhereExpressionsItem defines model for CloudWatchMetricsQuery.sql.where.expressions.Item. +type CloudWatchMetricsQuerySqlWhereExpressionsItem struct { + Name *string `json:"name,omitempty"` + + // TS type is operator: QueryEditorOperator, extended in veneer + Operator *struct { + Name *string `json:"name,omitempty"` + Value *interface{} `json:"value,omitempty"` + } `json:"operator,omitempty"` + Parameters []struct { + Name *string `json:"name,omitempty"` + Type CloudWatchMetricsQuerySqlWhereExpressionsParametersType `json:"type"` + } `json:"parameters,omitempty"` + Property *struct { + Name *string `json:"name,omitempty"` + Type CloudWatchMetricsQuerySqlWhereExpressionsPropertyType `json:"type"` + } `json:"property,omitempty"` + Type *interface{} `json:"type,omitempty"` + union json.RawMessage +} + // CloudWatchMetricsQuerySqlWhereType defines model for CloudWatchMetricsQuery.Sql.Where.Type. type CloudWatchMetricsQuerySqlWhereType string @@ -474,9 +576,35 @@ type MetricStat struct { // QueryEditorArrayExpression defines model for QueryEditorArrayExpression. type QueryEditorArrayExpression struct { - // TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - Expressions interface{} `json:"expressions"` - Type QueryEditorArrayExpressionType `json:"type"` + Expressions []QueryEditorArrayExpressionExpressionsItem `json:"expressions"` + Type QueryEditorArrayExpressionType `json:"type"` +} + +// QueryEditorArrayExpressionExpressionsParametersType defines model for QueryEditorArrayExpression.Expressions.Parameters.Type. +type QueryEditorArrayExpressionExpressionsParametersType string + +// QueryEditorArrayExpressionExpressionsPropertyType defines model for QueryEditorArrayExpression.Expressions.Property.Type. +type QueryEditorArrayExpressionExpressionsPropertyType string + +// QueryEditorArrayExpressionExpressionsItem defines model for QueryEditorArrayExpression.expressions.Item. +type QueryEditorArrayExpressionExpressionsItem struct { + Name *string `json:"name,omitempty"` + + // TS type is operator: QueryEditorOperator, extended in veneer + Operator *struct { + Name *string `json:"name,omitempty"` + Value *interface{} `json:"value,omitempty"` + } `json:"operator,omitempty"` + Parameters []struct { + Name *string `json:"name,omitempty"` + Type QueryEditorArrayExpressionExpressionsParametersType `json:"type"` + } `json:"parameters,omitempty"` + Property *struct { + Name *string `json:"name,omitempty"` + Type QueryEditorArrayExpressionExpressionsPropertyType `json:"type"` + } `json:"property,omitempty"` + Type *interface{} `json:"type,omitempty"` + union json.RawMessage } // QueryEditorArrayExpressionType defines model for QueryEditorArrayExpression.Type. @@ -606,9 +734,8 @@ type QueryEditorPropertyExpressionType string type SQLExpression struct { From *SQLExpressionFrom `json:"from,omitempty"` GroupBy *struct { - // TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - Expressions interface{} `json:"expressions"` - Type SQLExpressionGroupByType `json:"type"` + Expressions []SQLExpressionGroupByExpressionsItem `json:"expressions"` + Type SQLExpressionGroupByType `json:"type"` } `json:"groupBy,omitempty"` Limit *int64 `json:"limit,omitempty"` OrderBy *struct { @@ -629,9 +756,8 @@ type SQLExpression struct { Type SQLExpressionSelectType `json:"type"` } `json:"select,omitempty"` Where *struct { - // TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - Expressions interface{} `json:"expressions"` - Type SQLExpressionWhereType `json:"type"` + Expressions []SQLExpressionWhereExpressionsItem `json:"expressions"` + Type SQLExpressionWhereType `json:"type"` } `json:"where,omitempty"` } @@ -656,6 +782,33 @@ type SQLExpressionFrom struct { union json.RawMessage } +// SQLExpressionGroupByExpressionsParametersType defines model for SQLExpression.GroupBy.Expressions.Parameters.Type. +type SQLExpressionGroupByExpressionsParametersType string + +// SQLExpressionGroupByExpressionsPropertyType defines model for SQLExpression.GroupBy.Expressions.Property.Type. +type SQLExpressionGroupByExpressionsPropertyType string + +// SQLExpressionGroupByExpressionsItem defines model for SQLExpression.GroupBy.Expressions.Item. +type SQLExpressionGroupByExpressionsItem struct { + Name *string `json:"name,omitempty"` + + // TS type is operator: QueryEditorOperator, extended in veneer + Operator *struct { + Name *string `json:"name,omitempty"` + Value *interface{} `json:"value,omitempty"` + } `json:"operator,omitempty"` + Parameters []struct { + Name *string `json:"name,omitempty"` + Type SQLExpressionGroupByExpressionsParametersType `json:"type"` + } `json:"parameters,omitempty"` + Property *struct { + Name *string `json:"name,omitempty"` + Type SQLExpressionGroupByExpressionsPropertyType `json:"type"` + } `json:"property,omitempty"` + Type *interface{} `json:"type,omitempty"` + union json.RawMessage +} + // SQLExpressionGroupByType defines model for SQLExpression.GroupBy.Type. type SQLExpressionGroupByType string @@ -671,5 +824,32 @@ type SQLExpressionSelectParametersType string // SQLExpressionSelectType defines model for SQLExpression.Select.Type. type SQLExpressionSelectType string +// SQLExpressionWhereExpressionsParametersType defines model for SQLExpression.Where.Expressions.Parameters.Type. +type SQLExpressionWhereExpressionsParametersType string + +// SQLExpressionWhereExpressionsPropertyType defines model for SQLExpression.Where.Expressions.Property.Type. +type SQLExpressionWhereExpressionsPropertyType string + +// SQLExpressionWhereExpressionsItem defines model for SQLExpression.Where.Expressions.Item. +type SQLExpressionWhereExpressionsItem struct { + Name *string `json:"name,omitempty"` + + // TS type is operator: QueryEditorOperator, extended in veneer + Operator *struct { + Name *string `json:"name,omitempty"` + Value *interface{} `json:"value,omitempty"` + } `json:"operator,omitempty"` + Parameters []struct { + Name *string `json:"name,omitempty"` + Type SQLExpressionWhereExpressionsParametersType `json:"type"` + } `json:"parameters,omitempty"` + Property *struct { + Name *string `json:"name,omitempty"` + Type SQLExpressionWhereExpressionsPropertyType `json:"type"` + } `json:"property,omitempty"` + Type *interface{} `json:"type,omitempty"` + union json.RawMessage +} + // SQLExpressionWhereType defines model for SQLExpression.Where.Type. type SQLExpressionWhereType string diff --git a/public/app/plugins/datasource/cloudwatch/__mocks__/sqlUtils.ts b/public/app/plugins/datasource/cloudwatch/__mocks__/sqlUtils.ts index 89eda4b3842..70a8e358eff 100644 --- a/public/app/plugins/datasource/cloudwatch/__mocks__/sqlUtils.ts +++ b/public/app/plugins/datasource/cloudwatch/__mocks__/sqlUtils.ts @@ -13,13 +13,13 @@ import { export function createArray( expressions: QueryEditorExpression[], type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or = QueryEditorExpressionType.And -): QueryEditorArrayExpression { +) { const array = { type, expressions, }; - return array; + return array as QueryEditorArrayExpression; } export function createOperator(property: string, operator: string, value?: string): QueryEditorOperatorExpression { diff --git a/public/app/plugins/datasource/cloudwatch/dataquery.cue b/public/app/plugins/datasource/cloudwatch/dataquery.cue index 06f2d85d4eb..c9f9d19bfbc 100644 --- a/public/app/plugins/datasource/cloudwatch/dataquery.cue +++ b/public/app/plugins/datasource/cloudwatch/dataquery.cue @@ -121,9 +121,8 @@ composableKinds: DataQuery: { #QueryEditorPropertyType: "string" @cuetsy(kind="enum") #QueryEditorArrayExpression: { - type: (#QueryEditorExpressionType & "and") | (#QueryEditorExpressionType & "or") - // TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - expressions: _ + type: (#QueryEditorExpressionType & "and") | (#QueryEditorExpressionType & "or") + expressions: [...#QueryEditorExpression] | [...#QueryEditorArrayExpression] } @cuetsy(kind="interface") // QueryEditorArrayExpression is added in veneer diff --git a/public/app/plugins/datasource/cloudwatch/dataquery.gen.ts b/public/app/plugins/datasource/cloudwatch/dataquery.gen.ts index f265a23c393..2f87b0bf4f5 100644 --- a/public/app/plugins/datasource/cloudwatch/dataquery.gen.ts +++ b/public/app/plugins/datasource/cloudwatch/dataquery.gen.ts @@ -139,10 +139,7 @@ export enum QueryEditorPropertyType { } export interface QueryEditorArrayExpression { - /** - * TS type expressions: QueryEditorExpression[] | QueryEditorArrayExpression[], extended in veneer - */ - expressions: unknown; + expressions: (Array | Array); type: (QueryEditorExpressionType.And | QueryEditorExpressionType.Or); } diff --git a/public/app/plugins/datasource/cloudwatch/expressions.ts b/public/app/plugins/datasource/cloudwatch/expressions.ts index 43fd1a3ff33..a8e13f8fd8a 100644 --- a/public/app/plugins/datasource/cloudwatch/expressions.ts +++ b/public/app/plugins/datasource/cloudwatch/expressions.ts @@ -3,8 +3,8 @@ import { QueryEditorOperator as QueryEditorOperatorBase, QueryEditorOperatorValueType, QueryEditorExpressionType, - QueryEditorArrayExpression as QueryEditorArrayExpressionBase, QueryEditorExpression as QueryEditorExpressionBase, + QueryEditorArrayExpression, } from './dataquery.gen'; export { QueryEditorPropertyType, @@ -13,6 +13,7 @@ export { QueryEditorGroupByExpression, QueryEditorFunctionExpression, QueryEditorFunctionParameterExpression, + QueryEditorArrayExpression, } from './dataquery.gen'; export { QueryEditorExpressionType }; @@ -25,9 +26,4 @@ export interface QueryEditorOperatorExpression extends QueryEditorOperatorExpres operator: QueryEditorOperator; } -export interface QueryEditorArrayExpression extends QueryEditorArrayExpressionBase { - type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or; - expressions: QueryEditorExpression[] | QueryEditorArrayExpression[]; -} - export type QueryEditorExpression = QueryEditorArrayExpression | QueryEditorExpressionBase; diff --git a/public/app/plugins/datasource/cloudwatch/types.ts b/public/app/plugins/datasource/cloudwatch/types.ts index 3e9e8098c38..efc9a18163c 100644 --- a/public/app/plugins/datasource/cloudwatch/types.ts +++ b/public/app/plugins/datasource/cloudwatch/types.ts @@ -3,28 +3,17 @@ import { DataFrame, DataSourceRef } from '@grafana/data'; import { DataQuery } from '@grafana/schema'; import * as raw from './dataquery.gen'; -import { QueryEditorArrayExpression } from './expressions'; export * from './dataquery.gen'; -// QueryEditorArrayExpression has a recursive property, so cannot be defined in cue -export interface SQLExpression extends raw.SQLExpression { - where?: QueryEditorArrayExpression; - groupBy?: QueryEditorArrayExpression; -} - export type CloudWatchQuery = - | CloudWatchMetricsQuery + | raw.CloudWatchMetricsQuery | raw.CloudWatchLogsQuery | raw.CloudWatchAnnotationQuery | CloudWatchDefaultQuery; -export interface CloudWatchMetricsQuery extends raw.CloudWatchMetricsQuery { - sql?: SQLExpression; -} - // We want to allow setting defaults for both Logs and Metrics queries -export type CloudWatchDefaultQuery = Omit & CloudWatchMetricsQuery; +export type CloudWatchDefaultQuery = Omit & raw.CloudWatchMetricsQuery; export interface MultiFilters { [key: string]: string[];