"""期初导入。整个文件在单事务内校验并写入，任一行失败整批回滚。"""
from fastapi import HTTPException

# ponytail: 上限按 MySQL 单事务承受能力取的经验值；
# 若实际导入普遍超限，升级路径是引入「导入批次」实体让多文件共享一个期初批次，
# 而不是把单文件拆成多事务——那会破坏整批原子性。
MAX_IMPORT_ROWS = 5000


def check_import_size(row_count: int) -> None:
    if row_count <= 0:
        raise HTTPException(status_code=400, detail="导入文件为空")
    if row_count > MAX_IMPORT_ROWS:
        raise HTTPException(
            status_code=400,
            detail=f"导入行数 {row_count} 超过上限 {MAX_IMPORT_ROWS}，请拆分为多个文件后分别导入",
        )
