diff --git a/backend/app/routes/auth.py b/backend/app/routes/auth.py index 87acb0dc..f7b98f0b 100644 --- a/backend/app/routes/auth.py +++ b/backend/app/routes/auth.py @@ -972,17 +972,6 @@ async def upgrade( ) -@router.get("/me") -async def me(user: User = Depends(current_user)) -> dict: - return { - "id": user.id, - "email": user.email, - "display_name": user.display_name, - "avatar_url": user.avatar_url, - "role": user.role, - } - - @router.get("/config") def auth_config(db: Session = Depends(get_db)) -> dict: """Public: which sign-in options this instance offers, so the login page can hide what's off diff --git a/backend/app/routes/sync.py b/backend/app/routes/sync.py index 41e0fef0..7d0131b7 100644 --- a/backend/app/routes/sync.py +++ b/backend/app/routes/sync.py @@ -7,30 +7,13 @@ from app.audit import AuditAction from app.auth import admin_user, current_user, has_read_scope, require_human from app.db import get_db from app.models import Channel, Subscription, User, Video -from app.sync.runner import ( - estimate_deep_backfill, - run_enrich, - run_recent_backfill, - run_rss_poll, -) +from app.sync.runner import estimate_deep_backfill from app.sync.subscriptions import import_subscriptions from app.scheduler import running_job_ids router = APIRouter(prefix="/api/sync", tags=["sync"]) -def _user_channels(db: Session, user: User) -> list[Channel]: - return ( - db.execute( - select(Channel) - .join(Subscription, Subscription.channel_id == Channel.id) - .where(Subscription.user_id == user.id) - ) - .scalars() - .all() - ) - - @router.post("/subscriptions") def sync_subscriptions( user: User = Depends(require_human), db: Session = Depends(get_db) @@ -48,38 +31,6 @@ def sync_subscriptions( return result -@router.post("/rss") -def sync_rss( - user: User = Depends(require_human), db: Session = Depends(get_db) -) -> dict: - # A partial failure comes back in `failed_feeds` so a manual poll reports it instead of an - # innocent-looking "0 new"; a TOTAL outage raises out of run_rss_poll and surfaces as a 500, - # which is the honest answer for a poll that reached nothing. - result = run_rss_poll(db, _user_channels(db, user)) - return {"new_videos": result["new"], "failed_feeds": result["failed"]} - - -@router.post("/backfill") -def sync_backfill( - user: User = Depends(require_human), - db: Session = Depends(get_db), - max_channels: int = 25, -) -> dict: - with quota.measured(db, user.id, quota.QuotaAction.VIDEOS_BACKFILL_RECENT) as m: - result = run_recent_backfill(db, _user_channels(db, user), max_channels=max_channels) - result["quota_used_estimate"] = m.used - return result - - -@router.post("/enrich") -def sync_enrich( - user: User = Depends(require_human), db: Session = Depends(get_db) -) -> dict: - with quota.measured(db, user.id, quota.QuotaAction.VIDEOS_ENRICH) as m: - enriched = run_enrich(db) - return {"enriched": enriched, "quota_used_estimate": m.used} - - @router.get("/status") def sync_status( user: User = Depends(current_user), db: Session = Depends(get_db) diff --git a/backend/app/routes/tags.py b/backend/app/routes/tags.py index 6e4e3e0f..b1008acd 100644 --- a/backend/app/routes/tags.py +++ b/backend/app/routes/tags.py @@ -4,11 +4,10 @@ from sqlalchemy import func, or_, select from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import Session -from app.auth import admin_user, current_user +from app.auth import current_user from app.db import get_db from app.models import ChannelTag, Tag, User from app.routes._common import owned_or_404 -from app.sync.autotag import run_autotag_all router = APIRouter(prefix="/api/tags", tags=["tags"]) @@ -113,12 +112,3 @@ def delete_tag( db.delete(tag) # ChannelTag rows cascade on tag delete. db.commit() return {"deleted": tag_id} - - -@router.post("/recompute") -def recompute( - _: User = Depends(admin_user), - db: Session = Depends(get_db), - only_missing: bool = False, -) -> dict: - return run_autotag_all(db, only_missing=only_missing)