51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
// 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
|
|
}
|