# util/db_config.py import json import os import mysql.connector from util.logger import logger CONFIG_PATH = "./config/db_config.json" def load_config(): try: with open(CONFIG_PATH, "r") as f: return json.load(f) except Exception as e: logger.error(f"Failed to load database config: {e}") return None def save_config(data): try: os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True) with open(CONFIG_PATH, "w") as f: json.dump(data, f, indent=2) logger.info("Database config saved.") except Exception as e: logger.error(f"Failed to save database config: {e}") def test_connection(config): try: conn = mysql.connector.connect(**config) conn.close() logger.info("Database connection successful.") return True except Exception as e: logger.warning(f"Database connection failed: {e}") return False def initialize_admin_user(config): try: conn = mysql.connector.connect(**config) cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role VARCHAR(20) NOT NULL ) """) cursor.execute("SELECT COUNT(*) FROM users WHERE username = 'admin'") if cursor.fetchone()[0] == 0: from werkzeug.security import generate_password_hash cursor.execute( "INSERT INTO users (username, password, role) VALUES (%s, %s, %s)", ("admin", generate_password_hash("admin"), "admin") ) logger.info("Admin user created (username: admin, password: admin)") conn.commit() cursor.close() conn.close() except Exception as e: logger.error(f"Failed to initialize admin user: {e}")