refactor(database): move the initialization of database into tenant middleware

This commit is contained in:
YuehuCao 2025-09-19 12:14:16 +08:00
parent e726d7e7d5
commit 9dc8811886

View File

@ -1,44 +1,10 @@
from webapi.config.site_settings import site_settings from webapi.config.site_settings import site_settings
from beanie import init_beanie
from motor.motor_asyncio import AsyncIOMotorClient
from backend.models.models import MessageTemplateDoc, EmailSenderDoc, EmailSendStatusDoc, EmailTrackingDoc, EmailBounceDoc, UsageLogDoc
import os
# MongoDB config
MONGODB_URI = os.getenv('MONGODB_URI')
MONGODB_NAME = os.getenv('MONGODB_NAME')
# create MongoDB client
client = AsyncIOMotorClient(
MONGODB_URI,
serverSelectionTimeoutMS=60000,
minPoolSize=5,
maxPoolSize=20,
heartbeatFrequencyMS=20000,
)
# define all document models
document_models = [
MessageTemplateDoc,
EmailSenderDoc,
EmailSendStatusDoc,
EmailTrackingDoc,
EmailBounceDoc,
UsageLogDoc
]
def register(app): def register(app):
"""Register database-related configurations"""
app.debug = site_settings.DEBUG app.debug = site_settings.DEBUG
app.title = site_settings.NAME app.title = site_settings.NAME
@app.on_event("startup") # Database initialization is now handled by TenantDBConnectionMiddleware
async def start_database(): # to support per-request tenant database switching
await initiate_database()
async def initiate_database():
"""initiate Beanie database connection"""
await init_beanie(
database=client[MONGODB_NAME],
document_models=document_models
)