from fastapi import APIRouter, Depends from sqlalchemy import func, select from sqlalchemy.orm import Session from app import quota from app.auth import current_user from app.db import get_db from app.models import Channel, Subscription, User, Video from app.sync.subscriptions import import_subscriptions router = APIRouter(prefix="/api/sync", tags=["sync"]) @router.post("/subscriptions") def sync_subscriptions( user: User = Depends(current_user), db: Session = Depends(get_db) ) -> dict: before = quota.units_used_today(db) result = import_subscriptions(db, user) result["quota_used_estimate"] = quota.units_used_today(db) - before result["quota_remaining_today"] = quota.remaining_today(db) return result @router.get("/status") def sync_status( user: User = Depends(current_user), db: Session = Depends(get_db) ) -> dict: sub_count = db.scalar( select(func.count()) .select_from(Subscription) .where(Subscription.user_id == user.id) ) return { "subscriptions": sub_count, "channels_total": db.scalar(select(func.count()).select_from(Channel)), "videos_total": db.scalar(select(func.count()).select_from(Video)), "quota_used_today": quota.units_used_today(db), "quota_remaining_today": quota.remaining_today(db), }