From e641aa0379800364480324c2b6d146a0ebd34d0d Mon Sep 17 00:00:00 2001 From: Artur Sawicki Date: Thu, 11 Jul 2024 15:59:40 +0200 Subject: [PATCH] Fix cortex search service describe --- pkg/sdk/cortex_search_services_def.go | 54 +++++++++++-------- pkg/sdk/cortex_search_services_gen.go | 54 +++++++++++-------- pkg/sdk/cortex_search_services_impl_gen.go | 37 ++++++++----- ...cortex_search_services_integration_test.go | 24 ++++++--- 4 files changed, 103 insertions(+), 66 deletions(-) diff --git a/pkg/sdk/cortex_search_services_def.go b/pkg/sdk/cortex_search_services_def.go index f97a2a6ffc..e59dbebee0 100644 --- a/pkg/sdk/cortex_search_services_def.go +++ b/pkg/sdk/cortex_search_services_def.go @@ -81,29 +81,39 @@ var CortexSearchServiceDef = g.NewInterface( g.DescriptionMappingKindSingleValue, "https://docs.snowflake.com/LIMITEDACCESS/cortex-search/sql/desc-cortex-search", g.DbStruct("cortexSearchServiceDetailsRow"). - Field("name", "string"). - Field("schema", "string"). - Field("database", "string"). - Field("warehouse", "string"). - Field("target_lag", "string"). - Field("search_column", "string"). - OptionalText("included_columns"). - Field("service_url", "string"). - OptionalText("refreshed_on"). - OptionalNumber("num_rows_indexed"). - OptionalText("comment"), + Text("created_on"). + Text("name"). + Text("database_name"). + Text("schema_name"). + Text("target_lag"). + Text("warehouse"). + OptionalText("search_column"). + OptionalText("attribute_columns"). + OptionalText("columns"). + OptionalText("definition"). + OptionalText("comment"). + Text("service_query_url"). + Text("data_timestamp"). + Number("source_data_num_rows"). + Text("indexing_state"). + OptionalText("indexing_error"), g.PlainStruct("CortexSearchServiceDetails"). - Field("Name", "string"). - Field("Schema", "string"). - Field("Database", "string"). - Field("Warehouse", "string"). - Field("TargetLag", "string"). - Field("On", "string"). - Field("Attributes", "[]string"). - Field("ServiceUrl", "string"). - Field("RefreshedOn", "string"). - Field("NumRowsIndexed", "int"). - Field("Comment", "string"), + Text("CreatedOn"). + Text("Name"). + Text("DatabaseName"). + Text("SchemaName"). + Text("TargetLag"). + Text("Warehouse"). + OptionalText("SearchColumn"). + Field("AttributeColumns", "[]string"). + Field("Columns", "[]string"). + OptionalText("Definition"). + OptionalText("Comment"). + Text("ServiceQueryUrl"). + Text("DataTimestamp"). + Number("SourceDataNumRows"). + Text("IndexingState"). + OptionalText("IndexingError"), g.NewQueryStruct("DescribeCortexSearchService"). Describe(). SQL("CORTEX SEARCH SERVICE"). diff --git a/pkg/sdk/cortex_search_services_gen.go b/pkg/sdk/cortex_search_services_gen.go index 2c62f7cd8e..9e76154603 100644 --- a/pkg/sdk/cortex_search_services_gen.go +++ b/pkg/sdk/cortex_search_services_gen.go @@ -83,30 +83,40 @@ type DescribeCortexSearchServiceOptions struct { name SchemaObjectIdentifier `ddl:"identifier"` } type cortexSearchServiceDetailsRow struct { - Name string `db:"name"` - Schema string `db:"schema"` - Database string `db:"database"` - Warehouse string `db:"warehouse"` - TargetLag string `db:"target_lag"` - SearchColumn string `db:"search_column"` - IncludedColumns sql.NullString `db:"included_columns"` - ServiceUrl string `db:"service_url"` - RefreshedOn sql.NullString `db:"refreshed_on"` - NumRowsIndexed sql.NullInt64 `db:"num_rows_indexed"` - Comment sql.NullString `db:"comment"` + CreatedOn string `db:"created_on"` + Name string `db:"name"` + DatabaseName string `db:"database_name"` + SchemaName string `db:"schema_name"` + TargetLag string `db:"target_lag"` + Warehouse string `db:"warehouse"` + SearchColumn sql.NullString `db:"search_column"` + AttributeColumns sql.NullString `db:"attribute_columns"` + Columns sql.NullString `db:"columns"` + Definition sql.NullString `db:"definition"` + Comment sql.NullString `db:"comment"` + ServiceQueryUrl string `db:"service_query_url"` + DataTimestamp string `db:"data_timestamp"` + SourceDataNumRows int `db:"source_data_num_rows"` + IndexingState string `db:"indexing_state"` + IndexingError sql.NullString `db:"indexing_error"` } type CortexSearchServiceDetails struct { - Name string - Schema string - Database string - Warehouse string - TargetLag string - On string - Attributes []string - ServiceUrl string - RefreshedOn string - NumRowsIndexed int - Comment string + CreatedOn string + Name string + DatabaseName string + SchemaName string + TargetLag string + Warehouse string + SearchColumn *string + AttributeColumns []string + Columns []string + Definition *string + Comment *string + ServiceQueryUrl string + DataTimestamp string + SourceDataNumRows int + IndexingState string + IndexingError *string } // DropCortexSearchServiceOptions is based on https://docs.snowflake.com/LIMITEDACCESS/cortex-search/sql/drop-cortex-search. diff --git a/pkg/sdk/cortex_search_services_impl_gen.go b/pkg/sdk/cortex_search_services_impl_gen.go index f88edefe28..e9968da053 100644 --- a/pkg/sdk/cortex_search_services_impl_gen.go +++ b/pkg/sdk/cortex_search_services_impl_gen.go @@ -131,25 +131,34 @@ func (r *DescribeCortexSearchServiceRequest) toOpts() *DescribeCortexSearchServi func (r cortexSearchServiceDetailsRow) convert() *CortexSearchServiceDetails { row := &CortexSearchServiceDetails{ - Name: r.Name, - Schema: r.Schema, - Database: r.Database, - Warehouse: r.Warehouse, - TargetLag: r.TargetLag, - On: r.SearchColumn, - ServiceUrl: r.ServiceUrl, + CreatedOn: r.CreatedOn, + Name: r.Name, + DatabaseName: r.DatabaseName, + SchemaName: r.SchemaName, + TargetLag: r.TargetLag, + Warehouse: r.Warehouse, + ServiceQueryUrl: r.ServiceQueryUrl, + DataTimestamp: r.DataTimestamp, + SourceDataNumRows: r.SourceDataNumRows, + IndexingState: r.IndexingState, } - if r.IncludedColumns.Valid { - row.Attributes = strings.Split(r.IncludedColumns.String, ",") + if r.SearchColumn.Valid { + row.SearchColumn = String(r.SearchColumn.String) } - if r.NumRowsIndexed.Valid { - row.NumRowsIndexed = int(r.NumRowsIndexed.Int64) + if r.AttributeColumns.Valid { + row.AttributeColumns = strings.Split(r.AttributeColumns.String, ",") } - if r.RefreshedOn.Valid { - row.RefreshedOn = r.RefreshedOn.String + if r.Columns.Valid { + row.Columns = strings.Split(r.Columns.String, ",") + } + if r.Definition.Valid { + row.Definition = String(r.Definition.String) } if r.Comment.Valid { - row.Comment = r.Comment.String + row.Comment = String(r.Comment.String) + } + if r.IndexingError.Valid { + row.IndexingError = String(r.IndexingError.String) } return row diff --git a/pkg/sdk/testint/cortex_search_services_integration_test.go b/pkg/sdk/testint/cortex_search_services_integration_test.go index 1200afae2b..6397a86865 100644 --- a/pkg/sdk/testint/cortex_search_services_integration_test.go +++ b/pkg/sdk/testint/cortex_search_services_integration_test.go @@ -76,15 +76,23 @@ func TestInt_CortexSearchServices(t *testing.T) { cortexSearchServiceDetails, err := client.CortexSearchServices.Describe(ctx, cortexSearchService.ID()) require.NoError(t, err) + assert.NotEmpty(t, cortexSearchServiceDetails.CreatedOn) assert.Equal(t, cortexSearchService.Name, cortexSearchServiceDetails.Name) - assert.Equal(t, cortexSearchService.SchemaName, cortexSearchServiceDetails.Schema) - assert.Equal(t, cortexSearchService.DatabaseName, cortexSearchServiceDetails.Database) - assert.NotEmpty(t, cortexSearchServiceDetails.Warehouse) + // Yes, the names are exchanged on purpose, because now it works like this + assert.Equal(t, cortexSearchService.DatabaseName, cortexSearchServiceDetails.SchemaName) + assert.Equal(t, cortexSearchService.SchemaName, cortexSearchServiceDetails.DatabaseName) assert.Equal(t, targetLag, cortexSearchServiceDetails.TargetLag) - assert.Equal(t, strings.ToUpper(on), cortexSearchServiceDetails.On) - assert.NotEmpty(t, cortexSearchServiceDetails.ServiceUrl) - assert.GreaterOrEqual(t, cortexSearchServiceDetails.NumRowsIndexed, 0) - assert.Empty(t, cortexSearchServiceDetails.Comment) + assert.NotEmpty(t, cortexSearchServiceDetails.Warehouse) + assert.Equal(t, strings.ToUpper(on), *cortexSearchServiceDetails.SearchColumn) + assert.NotEmpty(t, cortexSearchServiceDetails.AttributeColumns) + assert.NotEmpty(t, cortexSearchServiceDetails.Columns) + assert.NotEmpty(t, cortexSearchServiceDetails.Definition) + assert.Nil(t, cortexSearchServiceDetails.Comment) + assert.NotEmpty(t, cortexSearchServiceDetails.ServiceQueryUrl) + assert.NotEmpty(t, cortexSearchServiceDetails.DataTimestamp) + assert.GreaterOrEqual(t, cortexSearchServiceDetails.SourceDataNumRows, 0) + assert.NotEmpty(t, cortexSearchServiceDetails.IndexingState) + assert.Empty(t, cortexSearchServiceDetails.IndexingError) }) t.Run("describe: when cortex search service does not exist", func(t *testing.T) { @@ -113,7 +121,7 @@ func TestInt_CortexSearchServices(t *testing.T) { cortexSearchServiceDetails, err := client.CortexSearchServices.Describe(ctx, id) require.NoError(t, err) - require.Equal(t, newComment, cortexSearchServiceDetails.Comment) + require.Equal(t, newComment, *cortexSearchServiceDetails.Comment) require.Equal(t, newTargetLag, cortexSearchServiceDetails.TargetLag) })