#!/usr/bin/env python3 """ Initialize database with default data Usage: python init_db.py """ import sys import os # Add app to path sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from app.database import engine, SessionLocal, Base from app.models import Admin, HomeModule, NavMenu, Setting from app.auth import get_password_hash import json def init_database(): print("Creating database tables...") Base.metadata.create_all(bind=engine) db = SessionLocal() try: # Check if already initialized if db.query(Admin).first(): print("Database already initialized!") return print("Creating default admin...") admin = Admin( username="admin", password_hash=get_password_hash("abcd1234") ) db.add(admin) print("Creating default home modules...") default_modules = [ HomeModule( name="轮播图", code="banner", type="banner", sort_order=1, is_enabled=True, is_fixed=True, content=json.dumps({"slides": []}), style_config=json.dumps({"backgroundColor": "#ffffff"}) ), HomeModule( name="产品优势", code="features", type="features", sort_order=2, is_enabled=True, is_fixed=False, title="为什么选择我们", content=json.dumps({"items": []}), style_config=json.dumps({"backgroundColor": "#FEF9E7"}) ), HomeModule( name="新闻动态", code="news", type="news", sort_order=3, is_enabled=True, is_fixed=False, title="新闻动态", content=json.dumps({"count": 4}), style_config=json.dumps({"backgroundColor": "#ffffff"}) ), HomeModule( name="合作伙伴", code="partners", type="partners", sort_order=4, is_enabled=True, is_fixed=False, title="合作伙伴", content=json.dumps({"logos": []}), style_config=json.dumps({"backgroundColor": "#FEF9E7"}) ), HomeModule( name="APP下载", code="downloads", type="downloads", sort_order=5, is_enabled=True, is_fixed=False, title="下载我们的APP", content=json.dumps({"apps": []}), style_config=json.dumps({"backgroundColor": "#ffffff"}) ), HomeModule( name="联系我们", code="contact", type="contact", sort_order=6, is_enabled=True, is_fixed=False, title="联系我们", content=json.dumps({"phone": "", "email": "", "address": ""}), style_config=json.dumps({"backgroundColor": "#FEF9E7"}) ), HomeModule( name="专家团队", code="experts", type="experts", sort_order=7, is_enabled=True, is_fixed=False, title="专家团队", content=json.dumps({"view_more_link": ""}), style_config=json.dumps({"backgroundColor": "#ffffff"}) ) ] for module in default_modules: db.add(module) print("Creating default nav menus...") default_menus = [ NavMenu(name="首页", link="/", sort_order=1, is_enabled=True), NavMenu(name="产品介绍", link="/product", sort_order=2, is_enabled=True), NavMenu(name="新闻动态", link="/news", sort_order=3, is_enabled=True), NavMenu(name="关于我们", link="/about", sort_order=4, is_enabled=True), NavMenu(name="联系我们", link="/contact", sort_order=5, is_enabled=True), ] for menu in default_menus: db.add(menu) print("Creating default settings...") default_settings = [ Setting(key="site_name", value="飞点健康", group="general", description="网站名称"), Setting(key="site_logo", value="/logo.png", group="general", description="网站Logo"), Setting(key="company_name", value="深圳飞点健康科技有限公司", group="company", description="公司名称"), Setting(key="copyright", value="© 2024 飞点健康 版权所有", group="general", description="版权信息"), ] for setting in default_settings: db.add(setting) db.commit() print("✅ Database initialized successfully!") print("\nDefault admin credentials:") print(" Username: admin") print(" Password: abcd1234") except Exception as e: db.rollback() print(f"❌ Error: {e}") raise finally: db.close() if __name__ == "__main__": init_database()