rswag-online/backend/app/api/admin/analytics.py

40 lines
1.2 KiB
Python

"""Admin analytics endpoints."""
from datetime import datetime, timedelta
from fastapi import APIRouter, Depends, Query
from sqlalchemy.ext.asyncio import AsyncSession
from app.database import get_db
from app.services.analytics_service import AnalyticsService
from app.services.auth_service import get_current_admin
router = APIRouter()
def get_analytics_service(db: AsyncSession = Depends(get_db)) -> AnalyticsService:
return AnalyticsService(db)
@router.get("/sales")
async def get_sales_analytics(
days: int = Query(default=30, le=365),
service: AnalyticsService = Depends(get_analytics_service),
_admin=Depends(get_current_admin),
):
"""Get sales analytics (admin only)."""
start_date = datetime.utcnow() - timedelta(days=days)
return await service.get_sales_summary(start_date)
@router.get("/products")
async def get_product_analytics(
days: int = Query(default=30, le=365),
limit: int = Query(default=10, le=50),
service: AnalyticsService = Depends(get_analytics_service),
_admin=Depends(get_current_admin),
):
"""Get product performance analytics (admin only)."""
start_date = datetime.utcnow() - timedelta(days=days)
return await service.get_product_performance(start_date, limit)