import os import certifi from beanie import init_beanie from app.config import settings from app.models.user import User from app.models.report import Report from app.models.analysis import Analysis from app.models.chat import ChatSession from app.models.checkup import CheckupPlan async def init_db(): use_mock = os.environ.get("USE_MONGOMOCK", "").lower() in ("1", "true", "yes") if use_mock: # 使用 mongomock 内存数据库(无需安装 MongoDB) from mongomock_motor import AsyncMongoMockClient client = AsyncMongoMockClient() else: from motor.motor_asyncio import AsyncIOMotorClient # Only use TLS for Atlas (mongodb+srv://) connections if settings.mongodb_url.startswith("mongodb+srv://") or "mongodb.net" in settings.mongodb_url: client = AsyncIOMotorClient(settings.mongodb_url, tlsCAFile=certifi.where()) else: client = AsyncIOMotorClient(settings.mongodb_url) await init_beanie( database=client[settings.mongodb_db_name], document_models=[ User, Report, Analysis, ChatSession, CheckupPlan, ], )