package exec

import (
	"context"
	"fmt"
	"net/url"

	"github.com/tidbcloud/AgentTeam/desktop/internal/wire/apiclient"
)

type workspaceRemote struct {
	client *apiclient.Client
	read   remoteReadTransport
}

func (remote workspaceRemote) readTransport() remoteReadTransport {
	transport := remote.read
	transport.client = remote.client
	return transport
}

func (a workspaceRemote) list(ctx context.Context, kind, query string, limit int, cursor string) (workspaceListResponse, error) {
	if err := requireRuntimeClient(a.client); err != nil {
		return workspaceListResponse{}, err
	}
	values := url.Values{}
	values.Set("kind", kind)
	values.Set("limit", fmt.Sprintf("%d", limit))
	if query != "" {
		values.Set("query", query)
	}
	if cursor != "" {
		values.Set("cursor", cursor)
	}
	var result workspaceListResponse
	return result, a.readTransport().get(ctx, a.client.AgentRuntimePath("/workspace?"+values.Encode()), &result)
}
