(ctx context.Context, providers []database.AIProvider)
| 8670 | } |
| 8671 | |
| 8672 | func (p *Server) aiProviderConfigs(ctx context.Context, providers []database.AIProvider) ([]chatprovider.ConfiguredProvider, error) { |
| 8673 | if len(providers) == 0 { |
| 8674 | return nil, nil |
| 8675 | } |
| 8676 | providerIDs := make([]uuid.UUID, 0, len(providers)) |
| 8677 | for _, provider := range providers { |
| 8678 | providerIDs = append(providerIDs, provider.ID) |
| 8679 | } |
| 8680 | keys, err := p.db.GetAIProviderKeysByProviderIDs(ctx, providerIDs) |
| 8681 | if err != nil { |
| 8682 | return nil, xerrors.Errorf("get AI provider keys: %w", err) |
| 8683 | } |
| 8684 | keysByProviderID := make(map[uuid.UUID][]database.AIProviderKey, len(providers)) |
| 8685 | for _, key := range keys { |
| 8686 | keysByProviderID[key.ProviderID] = append(keysByProviderID[key.ProviderID], key) |
| 8687 | } |
| 8688 | configuredProviders := make([]chatprovider.ConfiguredProvider, 0, len(providers)) |
| 8689 | for _, provider := range providers { |
| 8690 | configuredProvider, err := p.aiProviderConfigFromKeys(provider, keysByProviderID[provider.ID]) |
| 8691 | if err != nil { |
| 8692 | return nil, err |
| 8693 | } |
| 8694 | configuredProviders = append(configuredProviders, configuredProvider) |
| 8695 | } |
| 8696 | return configuredProviders, nil |
| 8697 | } |
| 8698 | |
| 8699 | func ensureUniqueConfiguredProviderTypes(providers []chatprovider.ConfiguredProvider) error { |
| 8700 | seen := make(map[string]uuid.UUID, len(providers)) |
no test coverage detected