masina-dock/backend/init_db.py

83 lines
3.4 KiB
Python
Raw Permalink Normal View History

from app import app
from models import db, User
import os
import sqlite3
def migrate_database():
db_path = '/app/data/masina_dock.db'
if os.path.exists(db_path):
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
try:
cursor.execute("PRAGMA table_info(user)")
columns = [column[1] for column in cursor.fetchall()]
if 'language' not in columns:
print("Adding language column...")
cursor.execute("ALTER TABLE user ADD COLUMN language VARCHAR(5) DEFAULT 'en'")
if 'unit_system' not in columns:
print("Adding unit_system column...")
cursor.execute("ALTER TABLE user ADD COLUMN unit_system VARCHAR(20) DEFAULT 'imperial'")
if 'currency' not in columns:
print("Adding currency column...")
cursor.execute("ALTER TABLE user ADD COLUMN currency VARCHAR(10) DEFAULT 'GBP'")
if 'photo' not in columns:
print("Adding photo column...")
cursor.execute("ALTER TABLE user ADD COLUMN photo VARCHAR(255)")
if 'must_change_credentials' not in columns:
print("Adding must_change_credentials column...")
cursor.execute("ALTER TABLE user ADD COLUMN must_change_credentials BOOLEAN DEFAULT 0")
if 'email_verified' not in columns:
print("Adding email_verified column...")
cursor.execute("ALTER TABLE user ADD COLUMN email_verified BOOLEAN DEFAULT 1")
if 'email_verification_token' not in columns:
print("Adding email_verification_token column...")
cursor.execute("ALTER TABLE user ADD COLUMN email_verification_token VARCHAR(100)")
if 'email_verification_sent_at' not in columns:
print("Adding email_verification_sent_at column...")
cursor.execute("ALTER TABLE user ADD COLUMN email_verification_sent_at DATETIME")
if 'two_factor_enabled' not in columns:
print("Adding two_factor_enabled column...")
cursor.execute("ALTER TABLE user ADD COLUMN two_factor_enabled BOOLEAN DEFAULT 0")
if 'two_factor_secret' not in columns:
print("Adding two_factor_secret column...")
cursor.execute("ALTER TABLE user ADD COLUMN two_factor_secret VARCHAR(32)")
if 'backup_codes' not in columns:
print("Adding backup_codes column...")
cursor.execute("ALTER TABLE user ADD COLUMN backup_codes TEXT")
if 'last_login' not in columns:
print("Adding last_login column...")
cursor.execute("ALTER TABLE user ADD COLUMN last_login DATETIME")
conn.commit()
print("Database migration completed!")
except Exception as e:
print(f"Migration error: {e}")
conn.rollback()
finally:
conn.close()
def init_database():
with app.app_context():
migrate_database()
db.create_all()
print("Database initialized successfully!")
print("Please register your admin account at http://localhost:5000/register")
if __name__ == '__main__':
init_database()