(aliases []config.OAuthModelAlias, models []*ModelInfo)
| 2634 | } |
| 2635 | |
| 2636 | func applyOAuthModelAliasEntries(aliases []config.OAuthModelAlias, models []*ModelInfo) []*ModelInfo { |
| 2637 | type aliasEntry struct { |
| 2638 | alias string |
| 2639 | fork bool |
| 2640 | } |
| 2641 | |
| 2642 | forward := make(map[string][]aliasEntry, len(aliases)) |
| 2643 | for i := range aliases { |
| 2644 | name := strings.TrimSpace(aliases[i].Name) |
| 2645 | alias := strings.TrimSpace(aliases[i].Alias) |
| 2646 | if name == "" || alias == "" { |
| 2647 | continue |
| 2648 | } |
| 2649 | if strings.EqualFold(name, alias) { |
| 2650 | continue |
| 2651 | } |
| 2652 | key := strings.ToLower(name) |
| 2653 | forward[key] = append(forward[key], aliasEntry{alias: alias, fork: aliases[i].Fork}) |
| 2654 | } |
| 2655 | if len(forward) == 0 { |
| 2656 | return models |
| 2657 | } |
| 2658 | |
| 2659 | out := make([]*ModelInfo, 0, len(models)) |
| 2660 | seen := make(map[string]struct{}, len(models)) |
| 2661 | for _, model := range models { |
| 2662 | if model == nil { |
| 2663 | continue |
| 2664 | } |
| 2665 | id := strings.TrimSpace(model.ID) |
| 2666 | if id == "" { |
| 2667 | continue |
| 2668 | } |
| 2669 | key := strings.ToLower(id) |
| 2670 | entries := forward[key] |
| 2671 | if len(entries) == 0 { |
| 2672 | if _, exists := seen[key]; exists { |
| 2673 | continue |
| 2674 | } |
| 2675 | seen[key] = struct{}{} |
| 2676 | out = append(out, model) |
| 2677 | continue |
| 2678 | } |
| 2679 | |
| 2680 | keepOriginal := false |
| 2681 | for _, entry := range entries { |
| 2682 | if entry.fork { |
| 2683 | keepOriginal = true |
| 2684 | break |
| 2685 | } |
| 2686 | } |
| 2687 | if keepOriginal { |
| 2688 | if _, exists := seen[key]; !exists { |
| 2689 | seen[key] = struct{}{} |
| 2690 | out = append(out, model) |
| 2691 | } |
| 2692 | } |
| 2693 |
no test coverage detected