package workspace

import (
	"context"
	"fmt"
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/coredb"
)

// ListWorkspaceIDs returns all workspace ids in stable creation order.
func ListWorkspaceIDs(ctx context.Context, queryer coredb.Queryer) ([]string, error) {
	if queryer == nil {
		return nil, fmt.Errorf("workspace queryer is nil")
	}
	rows, err := queryer.Query(ctx, `
SELECT id
FROM workspaces
ORDER BY created_at ASC, id ASC
`)
	if err != nil {
		return nil, fmt.Errorf("list workspaces: %w", err)
	}
	defer rows.Close()
	workspaceIDs := make([]string, 0)
	for rows.Next() {
		var workspaceID string
		if err := rows.Scan(&workspaceID); err != nil {
			return nil, fmt.Errorf("scan workspace id: %w", err)
		}
		workspaceIDs = append(workspaceIDs, strings.TrimSpace(workspaceID))
	}
	if err := rows.Err(); err != nil {
		return nil, fmt.Errorf("iterate workspaces: %w", err)
	}
	return workspaceIDs, nil
}
