app/api/routers/campaigns.py:20:                        EmailTemplate, GmailAccount, Recipient, RecipientList,
app/api/routers/campaigns.py:126:        rl = await db.get(RecipientList, data.recipient_list_id)
app/api/routers/campaigns.py:301:    rl = await db.get(RecipientList, c.recipient_list_id)
app/api/routers/campaigns.py:374:        rl = await db.get(RecipientList, c.recipient_list_id)
app/api/routers/campaigns.py:629:    lists = (await db.execute(select(RecipientList).where(RecipientList.user_id == user.id)
app/api/routers/campaigns.py:630:                              .order_by(RecipientList.id.desc()))).scalars().all()
app/api/routers/dashboard.py:12:                        EmailTemplate, GmailAccount, Recipient, RecipientList,
app/api/routers/dashboard.py:69:            "recipients": await count(Recipient, Recipient.user_id == user.id),
app/api/routers/dashboard.py:70:            "recipient_lists": await count(RecipientList, RecipientList.user_id == user.id),
app/api/routers/recipients.py:15:from app.models import Recipient, RecipientList, SuppressionEntry, User
app/api/routers/recipients.py:50:    rows = (await db.execute(select(RecipientList).where(
app/api/routers/recipients.py:51:        RecipientList.user_id == user.id).order_by(RecipientList.id.desc()))).scalars().all()
=== dashboard overview section ===
router = APIRouter(prefix="/dashboard", tags=["dashboard"])


@router.get("/overview")
async def overview(db: AsyncSession = Depends(get_db),
                   user: User = Depends(get_current_user)):
    """Everything the Dashboard page needs in one call."""
    now = datetime.now(timezone.utc)
    week_ago = now - timedelta(days=7)

    async def count(model, *filters):
        q = select(func.count()).select_from(model)
        for f in filters:
            q = q.where(f)
        return (await db.execute(q)).scalar() or 0

    total_campaigns = await count(Campaign, Campaign.user_id == user.id)
    active_campaigns = await count(Campaign, Campaign.user_id == user.id,
                                   Campaign.status.in_(["running", "queued"]))
    accounts = (await db.execute(
        select(GmailAccount).where(GmailAccount.user_id == user.id))).scalars().all()
    account_health = [{"id": a.id, "email": a.email, "status": a.status,
                       "sends_today": a.sends_today, "daily_limit": a.daily_limit,
                       "cooldown": a.cooldown_until.isoformat() if a.cooldown_until else None,
                       "is_active": a.is_active,
                       "sending_method": a.sending_method}
                      for a in accounts]

    # aggregate campaign counters
    agg = (await db.execute(
        select(func.count(Campaign.id),
               func.coalesce(func.sum(Campaign.total_recipients), 0),
               func.coalesce(func.sum(Campaign.sent_count), 0),
               func.coalesce(func.sum(Campaign.failed_count), 0),
               func.coalesce(func.sum(Campaign.suppressed_count), 0),
               func.coalesce(func.sum(Campaign.skipped_count), 0))
        .where(Campaign.user_id == user.id))).one()

    sends_last_7d = (await db.execute(
        select(func.count()).select_from(CampaignRecipient)
        .join(Campaign, Campaign.id == CampaignRecipient.campaign_id)
        .where(Campaign.user_id == user.id,
               CampaignRecipient.status == "sent",
               CampaignRecipient.sent_at >= week_ago))).scalar() or 0

    recent_campaigns = (await db.execute(
        select(Campaign).where(Campaign.user_id == user.id)
        .order_by(Campaign.id.desc()).limit(8))).scalars().all()

    return {
        "user": {"id": user.id, "email": user.email, "name": user.full_name},
        "totals": {
            "campaigns": total_campaigns,
            "active_campaigns": active_campaigns,
            "recipients": await count(Recipient, Recipient.user_id == user.id),
            "recipient_lists": await count(RecipientList, RecipientList.user_id == user.id),
            "subjects": await count(SubjectLine, SubjectLine.user_id == user.id),
            "templates": await count(EmailTemplate, EmailTemplate.user_id == user.id),
            "attachments": await count(Attachment, Attachment.user_id == user.id),
            "phones": await count(CompanyPhoneNumber, CompanyPhoneNumber.user_id == user.id),
            "suppression": await count(SuppressionEntry, SuppressionEntry.user_id == user.id),
            "gmail_accounts": len(accounts),
        },
        "send_stats": {
            "total_recipients": int(agg[1]), "sent": int(agg[2]),
            "failed": int(agg[3]), "suppressed": int(agg[4]),
