missing_models.go 766 B

123456789101112131415161718192021222324252627282930
  1. package model
  2. // GetMissingModels returns model names that are referenced in the system
  3. func GetMissingModels() ([]string, error) {
  4. // 1. 获取所有已启用模型(去重)
  5. models := GetEnabledModels()
  6. if len(models) == 0 {
  7. return []string{}, nil
  8. }
  9. // 2. 查询已有的元数据模型名
  10. var existing []string
  11. if err := DB.Model(&Model{}).Where("model_name IN ?", models).Pluck("model_name", &existing).Error; err != nil {
  12. return nil, err
  13. }
  14. existingSet := make(map[string]struct{}, len(existing))
  15. for _, e := range existing {
  16. existingSet[e] = struct{}{}
  17. }
  18. // 3. 收集缺失模型
  19. var missing []string
  20. for _, name := range models {
  21. if _, ok := existingSet[name]; !ok {
  22. missing = append(missing, name)
  23. }
  24. }
  25. return missing, nil
  26. }