APA-URAAS / scripts /migrate_add_ror.py
Lordkiki's picture
Deploy URAAS β€” African Research Archival & Analytics System
74bf532 verified
Raw
History Blame Contribute Delete
2.14 kB
"""
Database migration: Add ROR support for multi-institution comparison
"""
from sqlalchemy import text
from uraas.database import Item, SessionLocal, engine
def migrate():
print("Adding ROR columns to items table...")
with engine.connect() as conn:
try:
# Add ror column
conn.execute(text("ALTER TABLE items ADD COLUMN ror VARCHAR(128)"))
conn.execute(text("CREATE INDEX ix_items_ror ON items(ror)"))
print("βœ“ Added ror column and index")
except Exception as e:
if (
"duplicate column" in str(e).lower()
or "already exists" in str(e).lower()
):
print("βœ“ ROR column already exists")
else:
print(f"Error: {e}")
try:
# Add institution column if not exists
conn.execute(text("ALTER TABLE items ADD COLUMN institution VARCHAR(255)"))
print("βœ“ Added institution column")
except Exception as e:
if (
"duplicate column" in str(e).lower()
or "already exists" in str(e).lower()
):
print("βœ“ Institution column already exists")
else:
print(f"Error: {e}")
conn.commit()
# Set default ROR for UNILAG papers
print("\nSetting default ROR for existing UNILAG papers...")
session = SessionLocal()
try:
unilag_ror = "https://ror.org/03qcnxw14"
count = (
session.query(Item)
.filter(Item.ror.is_(None))
.update(
{Item.ror: unilag_ror, Item.institution: "University of Lagos"},
synchronize_session=False,
)
)
session.commit()
print(f"βœ“ Updated {count} papers with UNILAG ROR")
finally:
session.close()
print("\nMigration complete!")
print("\nNext steps:")
print("1. Add Comparator tab to dashboard")
print("2. Test multi-institution comparison")
print("3. Add more institutions to database")
if __name__ == "__main__":
migrate()