export const MAX_CONCURRENT_SENDS = 5;

export async function runInBatches<T>(
  items: T[],
  size: number,
  worker: (item: T) => Promise<boolean>
): Promise<{ successCount: number; failureCount: number }> {
  let successCount = 0;
  let failureCount = 0;

  for (let i = 0; i < items.length; i += size) {
    const batch = items.slice(i, i + size);
    const results = await Promise.allSettled(batch.map(worker));

    for (const result of results) {
      if (result.status === "fulfilled" && result.value) {
        successCount += 1;
      } else {
        failureCount += 1;
      }
    }
  }

  return { successCount, failureCount };
}
