neurosight / migrate_otp_fields.py
dhineshkmar's picture
Upload 18 files
04a16eb verified
"""
Database migration script to add OTP verification fields
Run this script to update the database schema
"""
from neurosight_app_with_auth import app, db
from models import User
from sqlalchemy import text
def migrate_add_otp_fields():
"""Add OTP verification fields to users table"""
with app.app_context():
try:
# Add new columns
with db.engine.connect() as conn:
# Check if columns already exist
result = conn.execute(text("PRAGMA table_info(users)"))
existing_columns = [row[1] for row in result]
columns_to_add = {
'email_verified': 'ALTER TABLE users ADD COLUMN email_verified BOOLEAN DEFAULT 0',
'otp_code': 'ALTER TABLE users ADD COLUMN otp_code VARCHAR(6)',
'otp_expiry': 'ALTER TABLE users ADD COLUMN otp_expiry DATETIME',
'otp_attempts': 'ALTER TABLE users ADD COLUMN otp_attempts INTEGER DEFAULT 0'
}
added_count = 0
for column_name, sql in columns_to_add.items():
if column_name not in existing_columns:
conn.execute(text(sql))
conn.commit()
print(f"βœ“ Added column: {column_name}")
added_count += 1
else:
print(f"βŠ™ Column already exists: {column_name}")
# Set email_verified = True for existing Google OAuth users
conn.execute(text("""
UPDATE users
SET email_verified = 1
WHERE google_id IS NOT NULL AND email_verified IS NULL
"""))
conn.commit()
print("βœ“ Set email_verified=True for existing Google users")
print(f"\nβœ… Migration completed! Added {added_count} new columns.")
except Exception as e:
print(f"❌ Migration failed: {e}")
raise
if __name__ == "__main__":
print("=" * 60)
print(" OTP VERIFICATION FIELDS MIGRATION")
print("=" * 60)
print("\nThis will add the following columns to the users table:")
print(" - email_verified (BOOLEAN)")
print(" - otp_code (VARCHAR(6))")
print(" - otp_expiry (DATETIME)")
print(" - otp_attempts (INTEGER)")
print("\n" + "=" * 60)
confirm = input("\nProceed with migration? (yes/no): ").strip().lower()
if confirm == 'yes':
migrate_add_otp_fields()
else:
print("\n❌ Migration cancelled.")