rag_template / scripts /run_migration_003.py
Guilherme Favaron
Sync: Complete project update (Phase 6) - API, Metadata, Eval, Docs
a686b1b
"""
Script para executar migracao 003: Adicionar metadata JSONB.
Uso:
python scripts/run_migration_003.py
"""
import sys
import os
from pathlib import Path
# Adicionar src ao path
sys.path.insert(0, str(Path(__file__).parent.parent))
from src.database import DatabaseManager
from src.config import DATABASE_URL
def run_migration():
"""Executa migracao 003."""
print("Executando migracao 003: Adicionar metadata JSONB...")
# Conectar ao banco
db = DatabaseManager(DATABASE_URL)
# Ler arquivo de migracao
migration_file = Path(__file__).parent.parent / "db" / "migrations" / "003_add_metadata.sql"
if not migration_file.exists():
print(f"Erro: Arquivo de migracao nao encontrado: {migration_file}")
return False
with open(migration_file, 'r', encoding='utf-8') as f:
migration_sql = f.read()
# Executar migracao
try:
with db.get_connection() as conn:
with conn.cursor() as cur:
# Executar cada statement
statements = [s.strip() for s in migration_sql.split(';') if s.strip() and not s.strip().startswith('--')]
for i, statement in enumerate(statements, 1):
if statement:
print(f" Executando statement {i}/{len(statements)}...")
cur.execute(statement)
conn.commit()
print("Migracao 003 executada com sucesso!")
return True
except Exception as e:
print(f"Erro ao executar migracao: {e}")
return False
def verify_migration():
"""Verifica se migracao foi aplicada."""
print("\nVerificando migracao...")
db = DatabaseManager(DATABASE_URL)
try:
with db.get_connection() as conn:
with conn.cursor() as cur:
# Verificar se coluna existe
cur.execute("""
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'documents'
AND column_name = 'metadata'
""")
if cur.fetchone():
print(" Coluna 'metadata' existe")
# Verificar indices
cur.execute("""
SELECT indexname
FROM pg_indexes
WHERE tablename = 'documents'
AND indexname LIKE '%metadata%'
""")
indices = [row[0] for row in cur.fetchall()]
print(f" Indices criados: {len(indices)}")
for idx in indices:
print(f" - {idx}")
print("\nMigracao verificada com sucesso!")
return True
else:
print(" Erro: Coluna 'metadata' nao encontrada")
return False
except Exception as e:
print(f"Erro ao verificar migracao: {e}")
return False
if __name__ == "__main__":
success = run_migration()
if success:
verify_migration()
else:
sys.exit(1)