in api/api_feature_view.go [24:153]
func (a *FeatureViewApiService) GetFeatureViewByID(featureViewId string) (GetFeatureViewResponse, error) {
var (
localVarReturnValue GetFeatureViewResponse
)
response, err := a.client.GetFeatureView(&a.client.instanceId, &featureViewId)
if err != nil {
return localVarReturnValue, err
}
featureView := FeatureView{
ProjectName: *response.Body.ProjectName,
FeatureEntityName: *response.Body.FeatureEntityName,
Name: *response.Body.Name,
Type: *response.Body.Type,
Online: *response.Body.SyncOnlineTable,
Ttl: int(*response.Body.TTL),
Config: *response.Body.Config,
}
if response.Body.WriteToFeatureDB != nil {
featureView.WriteToFeatureDB = *response.Body.WriteToFeatureDB
} else {
featureView.WriteToFeatureDB = false
}
if response.Body.RegisterTable != nil && *response.Body.RegisterTable != "" {
featureView.RegisterTable = *response.Body.RegisterTable
featureView.IsRegister = true
}
if response.Body.RegisterDatasourceId != nil && *response.Body.RegisterDatasourceId != "" {
if id, err := strconv.Atoi(*response.Body.RegisterDatasourceId); err == nil {
featureView.RegisterDatasourceId = id
}
}
if response.Body.LastSyncConfig != nil && *response.Body.LastSyncConfig != "" {
featureView.LasySyncConfig = *response.Body.LastSyncConfig
}
featureView.FeatureViewId, _ = strconv.Atoi(featureViewId)
if id, err := strconv.Atoi(*response.Body.ProjectId); err == nil {
featureView.ProjectId = id
}
if id, err := strconv.Atoi(*response.Body.FeatureEntityId); err == nil {
featureView.FeatureEntityId = id
}
var fields []*FeatureViewFields
for i, fieldItem := range response.Body.Fields {
field := FeatureViewFields{
Name: *fieldItem.Name,
Position: i + 1,
}
switch *fieldItem.Type {
case "INT32":
field.Type = constants.FS_INT32
case "INT64":
field.Type = constants.FS_INT64
case "FLOAT":
field.Type = constants.FS_FLOAT
case "DOUBLE":
field.Type = constants.FS_DOUBLE
case "BOOLEAN":
field.Type = constants.FS_BOOLEAN
case "TIMESTAMP":
field.Type = constants.FS_TIMESTAMP
case "ARRAY<INT32>":
field.Type = constants.FS_ARRAY_INT32
case "ARRAY<INT64>":
field.Type = constants.FS_ARRAY_INT64
case "ARRAY<FLOAT>":
field.Type = constants.FS_ARRAY_FLOAT
case "ARRAY<DOUBLE>":
field.Type = constants.FS_ARRAY_DOUBLE
case "ARRAY<STRING>":
field.Type = constants.FS_ARRAY_STRING
case "ARRAY<ARRAY<FLOAT>>":
field.Type = constants.FS_ARRAY_ARRAY_FLOAT
case "MAP<INT32,INT32>":
field.Type = constants.FS_MAP_INT32_INT32
case "MAP<INT32,INT64>":
field.Type = constants.FS_MAP_INT32_INT64
case "MAP<INT32,FLOAT>":
field.Type = constants.FS_MAP_INT32_FLOAT
case "MAP<INT32,DOUBLE>":
field.Type = constants.FS_MAP_INT32_DOUBLE
case "MAP<INT32,STRING>":
field.Type = constants.FS_MAP_INT32_STRING
case "MAP<INT64,INT32>":
field.Type = constants.FS_MAP_INT64_INT32
case "MAP<INT64,INT64>":
field.Type = constants.FS_MAP_INT64_INT64
case "MAP<INT64,FLOAT>":
field.Type = constants.FS_MAP_INT64_FLOAT
case "MAP<INT64,DOUBLE>":
field.Type = constants.FS_MAP_INT64_DOUBLE
case "MAP<INT64,STRING>":
field.Type = constants.FS_MAP_INT64_STRING
case "MAP<STRING,INT32>":
field.Type = constants.FS_MAP_STRING_INT32
case "MAP<STRING,INT64>":
field.Type = constants.FS_MAP_STRING_INT64
case "MAP<STRING,FLOAT>":
field.Type = constants.FS_MAP_STRING_FLOAT
case "MAP<STRING,DOUBLE>":
field.Type = constants.FS_MAP_STRING_DOUBLE
case "MAP<STRING,STRING>":
field.Type = constants.FS_MAP_STRING_STRING
default:
field.Type = constants.FS_STRING
}
for _, attr := range fieldItem.Attributes {
switch *attr {
case "Partition":
field.IsPartition = true
case "PrimaryKey":
field.IsPrimaryKey = true
case "EventTime":
field.IsEventTime = true
}
}
fields = append(fields, &field)
}
featureView.Fields = fields
localVarReturnValue.FeatureView = &featureView
return localVarReturnValue, nil
}