package trigger

import (
	"net/http"
	"strconv"
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/api"
	"github.com/tidbcloud/AgentTeam/internal/api/dto"
)

// List handles GET /api/v1/workspaces/:workspaceId/triggers/:triggerId/runs.
// It returns a paginated list of recent execution runs for a specific trigger.
func (handler *RunHandler) List(request api.WorkspaceScopedRequest) (api.Response, error) {
	limit := 20
	if rawLimit := strings.TrimSpace(request.Gin.Query("limit")); rawLimit != "" {
		parsed, err := strconv.Atoi(rawLimit)
		if err != nil {
			return api.Response{}, api.NewHTTPError(http.StatusBadRequest, "invalid limit")
		}
		limit = parsed
	}

	result, err := handler.triggerService.ListRunsForOwner(
		request.Context(),
		request.UserID(),
		request.WorkspaceID(),
		scheduleOrTriggerID(request.Gin),
		limit,
	)
	if err != nil {
		return api.Response{}, err
	}
	return api.OK(dto.TriggerRunListResponse(result)), nil
}
