// 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 }