
class ListCreate(BaseModel):
    name: str
    description: str = ""


def _rec_out(r: Recipient) -> dict:
    return {"id": r.id, "email": r.email, "first_name": r.first_name, "last_name": r.last_name,
            "company_name": r.company_name, "company_phone": r.company_phone,
            "customer_email": r.customer_email, "custom_fields": r.custom_fields or {},
            "status": r.status, "is_valid": r.is_valid, "validation_error": r.validation_error}


async def _suppression_and_bounces(db: AsyncSession) -> tuple:
    sup = set((await db.execute(select(SuppressionEntry.email))).scalars().all())
    return sup, set()


@router.get("/lists")
async def list_lists(user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db)):
    rows = (await db.execute(select(RecipientList).where(
        RecipientList.user_id == user.id).order_by(RecipientList.id.desc()))).scalars().all()
    return {"lists": [{"id": l.id, "name": l.name, "description": l.description,
                       "source": l.source, "row_count": l.row_count,
                       "created_at": l.created_at.isoformat()} for l in rows]}


@router.post("/lists")
async def create_list(payload: ListCreate, user: User = Depends(get_current_user),
                      db: AsyncSession = Depends(get_db)):
    rl = RecipientList(user_id=user.id, name=payload.name, description=payload.description)
=== suppression out ===
44:    return {
71:    return {"entries": [_serialize(s) for s in rows],
156:    return {"added": added, "duplicates": len(entries) - added,
177:    return {"added": added, "duplicates": len(payload.emails) - added}
189:    return {"suppressed": {e: (e in suppressed) for e in emails}}
