Initial commit: Crumbforest Architecture Refinement v1 (Clean)

This commit is contained in:
2025-12-07 01:26:46 +01:00
commit 6c38ed680b
633 changed files with 61797 additions and 0 deletions

61
migrate_users.py Normal file
View File

@@ -0,0 +1,61 @@
import pymysql
import os
import sys
from pymysql.cursors import DictCursor
def get_db_connection():
try:
return pymysql.connect(
host=os.getenv("MARIADB_HOST", "127.0.0.1"),
port=int(os.getenv("MARIADB_PORT", 3306)),
user=os.getenv("MARIADB_USER", "crumb"),
password=os.getenv("MARIADB_PASSWORD", "secret"),
database=os.getenv("MARIADB_DATABASE", "crumbcrm"),
autocommit=True,
charset="utf8mb4",
cursorclass=DictCursor,
)
except Exception as e:
print(f"Error connecting to database: {e}")
return None
def migrate():
print("🚀 Starting user migration...")
conn = get_db_connection()
if not conn:
print("❌ Could not connect to database. Please ensure MariaDB is running and accessible.")
sys.exit(1)
try:
with conn.cursor() as cursor:
# Check if columns exist
cursor.execute("DESCRIBE users")
columns = [row['Field'] for row in cursor.fetchall()]
alter_statements = []
if 'user_group' not in columns:
alter_statements.append("ADD COLUMN user_group VARCHAR(50) DEFAULT 'demo'")
if 'theme' not in columns:
alter_statements.append("ADD COLUMN theme VARCHAR(50) DEFAULT 'pico-default'")
if 'accessibility' not in columns:
alter_statements.append("ADD COLUMN accessibility JSON DEFAULT NULL")
if alter_statements:
sql = f"ALTER TABLE users {', '.join(alter_statements)}"
print(f"Executing: {sql}")
cursor.execute(sql)
print("✅ Migration successful: Added new columns.")
else:
print(" Migration skipped: Columns already exist.")
except Exception as e:
print(f"❌ Migration failed: {e}")
sys.exit(1)
finally:
conn.close()
if __name__ == "__main__":
migrate()