31 lines
766 B
Go
31 lines
766 B
Go
package model
|
|
|
|
// GetMissingModels returns model names that are referenced in the system
|
|
func GetMissingModels() ([]string, error) {
|
|
// 1. 获取所有已启用模型(去重)
|
|
models := GetEnabledModels()
|
|
if len(models) == 0 {
|
|
return []string{}, nil
|
|
}
|
|
|
|
// 2. 查询已有的元数据模型名
|
|
var existing []string
|
|
if err := DB.Model(&Model{}).Where("model_name IN ?", models).Pluck("model_name", &existing).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
existingSet := make(map[string]struct{}, len(existing))
|
|
for _, e := range existing {
|
|
existingSet[e] = struct{}{}
|
|
}
|
|
|
|
// 3. 收集缺失模型
|
|
var missing []string
|
|
for _, name := range models {
|
|
if _, ok := existingSet[name]; !ok {
|
|
missing = append(missing, name)
|
|
}
|
|
}
|
|
return missing, nil
|
|
}
|