import random

# Mock database or data source
data = [
    {"region_id": 1, "count": random.randint(10, 50)},
    {"region_id": 1, "count": random.randint(10, 50)},
    {"region_id": 2, "count": random.randint(10, 50)},
    {"region_id": 2, "count": random.randint(10, 50)},
    {"region_id": 3, "count": random.randint(10, 50)}
]

def get_aggregated_downscale_trigger_counts(region_id=None):
    if region_id:
        try:
            region_id = int(region_id)
        except ValueError:
            raise ValueError("Invalid region_id. Must be an integer.")
        
        filtered_data = [item for item in data if item['region_id'] == region_id]
        if not filtered_data:
            raise ValueError(f"No data found for region_id: {region_id}")
        
        aggregated_count = sum(item['count'] for item in filtered_data)
        return {"region_id": region_id, "aggregated_count": aggregated_count}
    else:
        # Aggregate all region data
        aggregated_data = {}
        for item in data:
            region_id = item['region_id']
            if region_id not in aggregated_data:
                aggregated_data[region_id] = 0
            aggregated_data[region_id] += item['count']
        
        result = []
        for region_id, count in aggregated_data.items():
            result.append({"region_id": region_id, "aggregated_count": count})
        return result
