buildRequest = (pipeName, options = {}) => {
        const statsConfig = config.get('tinybird:stats');
        const localEnabled = statsConfig?.local?.enabled ?? false;
        const endpoint = localEnabled ? statsConfig.local.endpoint : statsConfig.endpoint;
        const token = localEnabled ? statsConfig.local.token : statsConfig.token;

        // Use tbVersion if provided for constructing the URL
        const pipeUrl = (options.tbVersion && !localEnabled) ? 
            `/v0/pipes/${pipeName}__v${options.tbVersion}.json` : 
            `/v0/pipes/${pipeName}.json`;
        
        const tinybirdUrl = `${endpoint}${pipeUrl}`;

        // Use snake_case for query parameters as expected by Tinybird API
        const searchParams = {
            site_uuid: statsConfig.id
        };

        // todo: refactor all uses to simply pass options through
        if (options.dateFrom) {
            searchParams.date_from = options.dateFrom;
        }
        if (options.dateTo) {
            searchParams.date_to = options.dateTo;
        }
        if (options.timezone) {
            searchParams.timezone = options.timezone;
        }
        if (options.memberStatus) {
            searchParams.member_status = options.memberStatus;
        }
        if (options.postType) {
            searchParams.post_type = options.postType;
        }
        // Add any other options that might be needed
        Object.entries(options).forEach(([key, value]) => {
            if (!['dateFrom', 'dateTo', 'timezone', 'memberStatus'].includes(key)) {
                searchParams[key] = value;
            }
        });
        
        // Convert searchParams to query string and append to URL
        const queryString = new URLSearchParams(searchParams).toString();
        const fullUrl = `${tinybirdUrl}?${queryString}`;
        
        const requestOptions = {
            headers: {
                Authorization: `Bearer ${token}`
            },
            timeout: {
                request: 10000
            }
        };
        
        return {url: fullUrl, options: requestOptions};
    }
Builds a Tinybird API request
@param {string} pipeName - The name of the Tinybird pipe to query
@param {Object} options - Request options in camelCase format
@param {string} [options.dateFrom] - Start date in YYYY-MM-DD format
@param {string} [options.dateTo] - End date in YYYY-MM-DD format
@param {string} [options.timezone] - Timezone for the query
@param {string} [options.memberStatus] - Member status filter (defaults to 'all')
@param {string} [options.postType] - Post type filter
@param {string} [options.tbVersion] - Tinybird version for API URL
@returns {Object} Object with URL and request options