Skip to content

Commit

Permalink
Fix cortex search service describe
Browse files Browse the repository at this point in the history
  • Loading branch information
sfc-gh-asawicki committed Jul 11, 2024
1 parent 4408b19 commit e641aa0
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 66 deletions.
54 changes: 32 additions & 22 deletions pkg/sdk/cortex_search_services_def.go
Original file line number Diff line number Diff line change
Expand Up @@ -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").
Expand Down
54 changes: 32 additions & 22 deletions pkg/sdk/cortex_search_services_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
37 changes: 23 additions & 14 deletions pkg/sdk/cortex_search_services_impl_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
24 changes: 16 additions & 8 deletions pkg/sdk/testint/cortex_search_services_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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)
})

Expand Down

0 comments on commit e641aa0

Please sign in to comment.