fix bug of measurement api and add func of traverse attribute group table
This commit is contained in:
parent
0add3cf6db
commit
252699cb77
|
|
@ -0,0 +1,50 @@
|
||||||
|
// Package model define model struct of model runtime service
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"modelRT/logger"
|
||||||
|
"modelRT/orm"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TraverseAttributeGroupTables define func to traverse component attribute group tables
|
||||||
|
func TraverseAttributeGroupTables(ctx context.Context, db *gorm.DB) error {
|
||||||
|
var tableNames []string
|
||||||
|
|
||||||
|
result := db.Model(&orm.ProjectManager{}).Pluck("name", &tableNames)
|
||||||
|
fmt.Println(result)
|
||||||
|
if result.Error != nil && result.Error != gorm.ErrRecordNotFound {
|
||||||
|
logger.Error(ctx, "query name column data from postgres table failed", "err", result.Error)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(tableNames) == 0 {
|
||||||
|
logger.Info(ctx, "query from postgres successed, but no records found")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tableName := range tableNames {
|
||||||
|
if tableName == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
exists := db.Migrator().HasTable(tableName)
|
||||||
|
if !exists {
|
||||||
|
logger.Warn(ctx, fmt.Sprintf("table %s does not exist in the database", tableName))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO 优化返回结构,尝试首先获取表的结构
|
||||||
|
var records []map[string]any
|
||||||
|
err := db.Table(tableName).Find(&records).Error
|
||||||
|
if err != nil && err != gorm.ErrRecordNotFound {
|
||||||
|
logger.Error(ctx, fmt.Sprintf("query table '%s' data failed", tableName), "table_name", tableName, "err", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// TODO 将筛选后的属性值加入到缓存系统中
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -147,7 +147,7 @@ func RedisSearchRecommend(ctx context.Context, input string) map[string]SearchRe
|
||||||
for range 2 {
|
for range 2 {
|
||||||
result := <-fanInChan
|
result := <-fanInChan
|
||||||
if result.Err != nil {
|
if result.Err != nil {
|
||||||
logger.Error(ctx, "exec redis fuzzy search by key :%s failed", "query_key", result.RecommendType, "error", result.Err)
|
logger.Error(ctx, "exec redis fuzzy search by key failed", "recommend_type", result.RecommendType, "error", result.Err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if result.RecommendType == constants.CompNSPathRecommendHierarchyType {
|
if result.RecommendType == constants.CompNSPathRecommendHierarchyType {
|
||||||
|
|
@ -265,11 +265,11 @@ func queryMemberFromSpecificsLevel(ctx context.Context, rdb *redis.Client, hiera
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAllKeyByGridLevel(ctx context.Context, rdb *redis.Client, fanInChan chan SearchResult) {
|
func getAllKeyByGridLevel(ctx context.Context, rdb *redis.Client, fanInChan chan SearchResult) {
|
||||||
queryKey := constants.RedisAllGridSetKey
|
setKey := constants.RedisAllGridSetKey
|
||||||
hierarchy := constants.GridRecommendHierarchyType
|
hierarchy := constants.GridRecommendHierarchyType
|
||||||
members, err := rdb.SMembers(ctx, queryKey).Result()
|
members, err := rdb.SMembers(ctx, setKey).Result()
|
||||||
if err != nil {
|
if err != nil && err != redigo.ErrNil {
|
||||||
logger.Error(ctx, "get all members by special key failed", "key", queryKey, "op", "SMembers", "error", err)
|
logger.Error(ctx, "get all members from redis by special key failed", "key", setKey, "op", "SMembers", "error", err)
|
||||||
|
|
||||||
fanInChan <- SearchResult{
|
fanInChan <- SearchResult{
|
||||||
RecommendType: hierarchy,
|
RecommendType: hierarchy,
|
||||||
|
|
@ -292,7 +292,7 @@ func getAllKeyByNSPathLevel(ctx context.Context, rdb *redis.Client, fanInChan ch
|
||||||
queryKey := constants.RedisAllCompNSPathSetKey
|
queryKey := constants.RedisAllCompNSPathSetKey
|
||||||
hierarchy := constants.CompNSPathRecommendHierarchyType
|
hierarchy := constants.CompNSPathRecommendHierarchyType
|
||||||
members, err := rdb.SMembers(ctx, queryKey).Result()
|
members, err := rdb.SMembers(ctx, queryKey).Result()
|
||||||
if err != nil {
|
if err != nil && err != redigo.ErrNil {
|
||||||
logger.Error(ctx, "get all members by special key failed", "key", queryKey, "op", "SMembers", "error", err)
|
logger.Error(ctx, "get all members by special key failed", "key", queryKey, "op", "SMembers", "error", err)
|
||||||
|
|
||||||
fanInChan <- SearchResult{
|
fanInChan <- SearchResult{
|
||||||
|
|
@ -380,7 +380,7 @@ func handleLevelFuzzySearch(ctx context.Context, rdb *redis.Client, hierarchy co
|
||||||
}
|
}
|
||||||
|
|
||||||
members, err := queryMemberFromSpecificsLevel(ctx, rdb, hierarchy, specificalKey)
|
members, err := queryMemberFromSpecificsLevel(ctx, rdb, hierarchy, specificalKey)
|
||||||
if err != nil {
|
if err != nil && err != redis.Nil {
|
||||||
logger.Error(ctx, "query members from redis by special key failed", "key", specificalKey, "member", searchInput, "op", "SMember", "error", err)
|
logger.Error(ctx, "query members from redis by special key failed", "key", specificalKey, "member", searchInput, "op", "SMember", "error", err)
|
||||||
fanInChan <- SearchResult{
|
fanInChan <- SearchResult{
|
||||||
RecommendType: hierarchy,
|
RecommendType: hierarchy,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
// Package orm define database data struct
|
||||||
|
package orm
|
||||||
|
|
||||||
|
// ProjectManager define struct to manager component attribute tables
|
||||||
|
type ProjectManager struct {
|
||||||
|
ID int32 `gorm:"primaryKey;column:id"`
|
||||||
|
Name string `gorm:"column:name;type:varchar(64);not null"`
|
||||||
|
Tag string `gorm:"column:tag;type:varchar(64);not null"`
|
||||||
|
MetaModel string `gorm:"column:meta_model;type:varchar(64);not null"`
|
||||||
|
GroupName string `gorm:"column:group_name;type:varchar(64);not null"`
|
||||||
|
LinkType int32 `gorm:"column:link_type;type:integer;not null;default:0"`
|
||||||
|
CheckState JSONMap `gorm:"column:check_state;type:jsonb;not null;default:'{}'"`
|
||||||
|
IsPublic bool `gorm:"column:ispublic;type:boolean;not null;default:false"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TableName func respresent return table name of Page
|
||||||
|
func (p *ProjectManager) TableName() string {
|
||||||
|
return "project_manager"
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue