package com.zioinfo.kintex.mail;

import java.util.ArrayList;
import java.util.List;

/**
 * 발송 배치 유틸 — 대량 수신자를 고정 크기(예: 50) 청크로 분할한다. 순수 함수(단위 테스트 고정).
 */
public final class MailBatch {

    private MailBatch() {
    }

    /** list 를 size 단위 청크로 분할. size <= 0 이면 전체를 단일 청크로 반환. */
    public static <T> List<List<T>> partition(List<T> list, int size) {
        List<List<T>> out = new ArrayList<>();
        if (list == null || list.isEmpty()) {
            return out;
        }
        if (size <= 0) {
            out.add(new ArrayList<>(list));
            return out;
        }
        for (int i = 0; i < list.size(); i += size) {
            out.add(new ArrayList<>(list.subList(i, Math.min(i + size, list.size()))));
        }
        return out;
    }
}
