bukang-backend / migrate.py
XRyZ's picture
Upload folder using huggingface_hub
01c6926 verified
Raw
History Blame Contribute Delete
1.97 kB
"""Add missing columns to students table and drop nrp unique constraint."""
from sqlalchemy import inspect, text
from app.db.session import engine
def run():
inspector = inspect(engine)
existing_cols = {c["name"] for c in inspector.get_columns("students")}
indexes = inspector.get_indexes("students")
dialect = engine.dialect.name
added = []
with engine.connect() as conn:
if "longitude" not in existing_cols:
t = "FLOAT" if dialect == "sqlite" else "DOUBLE PRECISION"
conn.execute(text(f"ALTER TABLE students ADD COLUMN longitude {t}"))
added.append("longitude")
if "latitude" not in existing_cols:
t = "FLOAT" if dialect == "sqlite" else "DOUBLE PRECISION"
conn.execute(text(f"ALTER TABLE students ADD COLUMN latitude {t}"))
added.append("latitude")
if "captured_at" not in existing_cols:
t = "DATETIME" if dialect == "sqlite" else "TIMESTAMP"
conn.execute(text(f"ALTER TABLE students ADD COLUMN captured_at {t}"))
added.append("captured_at")
if "user_id" not in existing_cols:
if dialect == "sqlite":
conn.execute(text("ALTER TABLE students ADD COLUMN user_id VARCHAR"))
else:
conn.execute(text("ALTER TABLE students ADD COLUMN user_id VARCHAR REFERENCES users(id)"))
added.append("user_id")
# Drop unique index on nrp (now scoped by user_id)
for idx in indexes:
if idx["name"] == "ix_students_nrp" and idx.get("unique"):
conn.execute(text("DROP INDEX ix_students_nrp"))
print(" Dropped unique index on nrp")
break
conn.commit()
if added:
print(f"✓ Added columns to {dialect}: {', '.join(added)}")
else:
print(f"✓ All columns already exist ({dialect}). Nothing to do.")
if __name__ == "__main__":
run()