from pathlib import Path from sqlalchemy.orm import Session from ..database import SessionLocal from ..models import Topic import os def sync_topic_to_db(topic_id: str, db: Session = None) -> Topic: close_db = False if db is None: db = SessionLocal() close_db = True try: topic = db.query(Topic).filter(Topic.id == topic_id).first() if not topic: raise ValueError(f"Topic {topic_id} not found in DB") return topic finally: if close_db: db.close() def sync_all_topics(): logger = __import__('logging').getLogger(__name__) try: from sqlalchemy import func db = SessionLocal() total = db.query(Topic).count() rows = db.query(Topic.status, func.count(Topic.id)).group_by(Topic.status).all() by_status = {s: int(c) for s, c in rows} logger.info(f"sync_all_topics: DB verified — {total} topics total, statuses: {by_status}") db.close() except Exception as e: logger.error(f"sync_all_topics: DB connection failed — {e}") raise if __name__ == "__main__": sync_all_topics()