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}}