"""Mailbox (folder) listing (SPEC ยง9.3 folder views, archive action).""" from __future__ import annotations import uuid from typing import Annotated from fastapi import APIRouter, Depends from pydantic import BaseModel from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.db import get_session from app.identity.deps import CurrentUser from app.models import Mailbox router = APIRouter(prefix="/mailboxes", tags=["mail"]) DbSession = Annotated[AsyncSession, Depends(get_session)] class MailboxOut(BaseModel): id: uuid.UUID account_id: uuid.UUID path: str special_use: str | None @router.get("", response_model=list[MailboxOut]) async def list_mailboxes(user: CurrentUser, db: DbSession) -> list[MailboxOut]: rows = await db.scalars( select(Mailbox).where(Mailbox.user_id == user.id).order_by(Mailbox.account_id, Mailbox.path) ) return [ MailboxOut(id=m.id, account_id=m.account_id, path=m.path, special_use=m.special_use) for m in rows ]