print("DEBUG: Migration script starting") from db import SanatanDatabase import logging from dotenv import load_dotenv # Load environment variables load_dotenv() # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def update_wiki_paths(): arcadedb = SanatanDatabase() scripture_name = "divya_prabandham" # Query all verses using a simpler structure query = "MATCH (s:Scripture {name: $name})<-[:PART_OF]-(v:Verse) RETURN v" logger.info("Fetching all verses for %s...", scripture_name) results = arcadedb.run_cypher(query, {"name": scripture_name}) logger.info(f"DEBUG: Type of results: {type(results)}") if results: logger.info(f"DEBUG: Number of results: {len(results)}") logger.info(f"DEBUG: First result keys: {results[0].keys()}") else: logger.info("DEBUG: Results is empty or None") logger.info(f"Found {len(results)} verses. Updating wiki_path...") for r in results: v = r # Accessing directly, as ArcadeDB returns properties as root keys if not v or "global_id" not in v: continue old_wiki_path = v.get("wiki_path", "") # Properties required for new wiki_path prabandham = v.get("prabandham_name") decade = v.get("decade") padigam = v.get("chapter") # 'chapter' field maps to 'Padigam' in DP pos = v.get("position_in_chapter") if not all([prabandham, decade, padigam, pos]): logger.warning(f"Missing hierarchy data for verse {v.get('global_id')}: {prabandham}, {decade}, {padigam}, {pos}") continue # Construct new wiki_path # Example: Thiruvaimozhi__Decade_10__Padigam_10__10 new_wiki_path = f"{prabandham}__Decade_{decade}__Padigam_{padigam}__{pos}" if old_wiki_path == new_wiki_path: continue # Update in ArcadeDB update_query = """ MATCH (v:Verse {global_id: $global_id}) SET v.wiki_path = $new_wiki_path RETURN v """ try: arcadedb.run_cypher(update_query, { "global_id": v.get("global_id"), "new_wiki_path": new_wiki_path }) logger.info(f"Updated {v.get('global_id')}: {old_wiki_path} -> {new_wiki_path}") except Exception as e: logger.error(f"Failed to update {v.get('global_id')}: {e}") if __name__ == "__main__": update_wiki_paths()