82 lines
3.4 KiB
Python
82 lines
3.4 KiB
Python
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()
|