# app/modules/messaging/definition.py """ Messaging module definition. Defines the messaging module including its features, menu items, and route configurations. """ from app.modules.base import ModuleDefinition from models.database.admin_menu_config import FrontendType def _get_admin_router(): """Lazy import of admin router to avoid circular imports.""" from app.modules.messaging.routes.admin import admin_router return admin_router def _get_admin_notifications_router(): """Lazy import of admin notifications router to avoid circular imports.""" from app.modules.messaging.routes.admin import admin_notifications_router return admin_notifications_router def _get_vendor_router(): """Lazy import of vendor router to avoid circular imports.""" from app.modules.messaging.routes.vendor import vendor_router return vendor_router def _get_vendor_notifications_router(): """Lazy import of vendor notifications router to avoid circular imports.""" from app.modules.messaging.routes.vendor import vendor_notifications_router return vendor_notifications_router # Messaging module definition messaging_module = ModuleDefinition( code="messaging", name="Messaging & Notifications", description="Internal messages, customer communication, and notifications.", features=[ "customer_messaging", # Customer communication "internal_messages", # Internal team messages "notification_center", # Notification management ], menu_items={ FrontendType.ADMIN: [ "messages", # Admin messages "notifications", # Admin notifications ], FrontendType.VENDOR: [ "messages", # Vendor messages "notifications", # Vendor notifications ], }, is_core=False, ) def get_messaging_module_with_routers() -> ModuleDefinition: """ Get messaging module with routers attached. This function attaches the routers lazily to avoid circular imports during module initialization. """ messaging_module.admin_router = _get_admin_router() messaging_module.vendor_router = _get_vendor_router() return messaging_module __all__ = ["messaging_module", "get_messaging_module_with_routers"]