package schedule

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/schedules/:scheduleId/runs.
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.scheduleService.ListAutomationRunsForScheduleOwner(request.Context(), request.UserID(), request.WorkspaceID(), scheduleID(request.Gin), limit)
	if err != nil {
		return api.Response{}, err
	}
	return api.OK(dto.ScheduleRunListResponse(result)), nil
}
