sanatan_ai / modules /db /migrate_wiki_path.py
vikramvasudevan's picture
Upload folder using huggingface_hub
595350e verified
Raw
History Blame Contribute Delete
2.54 kB
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()