# app/modules/marketplace/definition.py """ Marketplace module definition. Defines the marketplace module including its features, menu items, dependencies, and route configurations. Note: This module requires the inventory module to be enabled. """ 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.marketplace.routes.admin import admin_router return admin_router def _get_vendor_router(): """Lazy import of vendor router to avoid circular imports.""" from app.modules.marketplace.routes.vendor import vendor_router return vendor_router # Marketplace module definition marketplace_module = ModuleDefinition( code="marketplace", name="Marketplace (Letzshop)", description=( "Letzshop marketplace integration for product sync, order import, " "and catalog synchronization." ), requires=["inventory"], # Depends on inventory module features=[ "letzshop_sync", # Sync products with Letzshop "marketplace_import", # Import products from marketplace "product_sync", # Bidirectional product sync "order_import", # Import orders from marketplace "marketplace_analytics", # Marketplace performance metrics ], menu_items={ FrontendType.ADMIN: [ "marketplace-letzshop", # Marketplace monitoring ], FrontendType.VENDOR: [ "marketplace", # Vendor marketplace settings "letzshop", # Letzshop integration ], }, is_core=False, ) def get_marketplace_module_with_routers() -> ModuleDefinition: """ Get marketplace module with routers attached. This function attaches the routers lazily to avoid circular imports during module initialization. """ marketplace_module.admin_router = _get_admin_router() marketplace_module.vendor_router = _get_vendor_router() return marketplace_module __all__ = ["marketplace_module", "get_marketplace_module_with_routers"]