package webagent

import (
	"strconv"
	"strings"

	"github.com/gin-gonic/gin"

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

func workspaceListOptions(c *gin.Context) agent.WorkspaceListOptions {
	opts := agent.WorkspaceListOptions{
		Limit:  agent.DefaultWorkspaceListLimit,
		Cursor: strings.TrimSpace(c.Query("cursor")),
	}
	if raw := strings.TrimSpace(c.Query("limit")); raw != "" {
		if n, err := strconv.Atoi(raw); err == nil && n > 0 {
			opts.Limit = n
		}
	}
	if opts.Limit > agent.MaxWorkspaceListLimit {
		opts.Limit = agent.MaxWorkspaceListLimit
	}
	return opts
}

func workspaceFilesPageResponse(page agent.WorkspaceFilePage) gin.H {
	return gin.H{
		"files":      converter.ToWorkspaceFiles(page.Files),
		"rootPath":   strings.TrimSpace(page.RootPath),
		"limit":      page.Limit,
		"cursor":     page.Cursor,
		"hasMore":    page.HasMore,
		"nextCursor": page.NextCursor,
	}
}
