package app

import (
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/api/dto"
	"github.com/tidbcloud/AgentTeam/internal/api/dto/converter"
	"github.com/tidbcloud/AgentTeam/internal/store/app/registry"
)

func (handler *WorkspaceAppHandler) providerConnectionCapability(
	appID string,
) *dto.AppProviderConnectionCapabilityResponse {
	if handler == nil || handler.extensionProviders == nil {
		return nil
	}
	capability, ok := handler.extensionProviders.
		ProviderConnectionCapabilityForAppID(strings.TrimSpace(appID))
	domain := strings.TrimSpace(capability.Domain)
	if !ok || domain == "" {
		return nil
	}
	return &dto.AppProviderConnectionCapabilityResponse{Domain: domain}
}

func (handler *WorkspaceAppHandler) toAppDefinitionResponses(
	items []registry.AppDefinitionView,
) []dto.AppDefinitionResponse {
	responses := converter.ToAppDefinitionViews(items)
	for index := range responses {
		responses[index].ProviderConnection =
			handler.providerConnectionCapability(items[index].ID)
	}
	return responses
}
