from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.core.database import get_db from app.core.security import require_api_key from app.modules.subscriptions.schemas import PushDeliveryRead, PushSubscriptionRead from app.modules.subscriptions.services.management import SubscriptionManagementService router = APIRouter(dependencies=[Depends(require_api_key)]) @router.get("") def list_subscriptions( status_filter: str | None = None, owner_id: int | None = None, limit: int = 100, offset: int = 0, db: Session = Depends(get_db), ) -> dict: total, records = SubscriptionManagementService(db).list_all( status_filter=status_filter, owner_id=owner_id, limit=limit, offset=offset, ) return { "total": total, "items": [PushSubscriptionRead.model_validate(item) for item in records], } @router.get("/deliveries") def list_deliveries( status_filter: str | None = None, subscription_code: str | None = None, limit: int = 100, offset: int = 0, db: Session = Depends(get_db), ) -> dict: total, records = SubscriptionManagementService(db).list_deliveries( status_filter=status_filter, subscription_code=subscription_code, limit=limit, offset=offset, ) return { "total": total, "items": [PushDeliveryRead.model_validate(item) for item in records], }