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