# app/modules/orders/__init__.py
"""
Orders Module - Order processing and fulfillment.

This is a self-contained module providing:
- Order management and tracking
- Order fulfillment workflow
- Order item exceptions handling
- Invoice generation
- Customer checkout

Module Structure:
- models/ - Database models (Order, OrderItem, Invoice, etc.)
- services/ - Business logic (OrderService, InvoiceService)
- schemas/ - Pydantic DTOs
- routes/ - API routes
- exceptions.py - Module-specific exceptions
"""

# Use lazy imports to avoid circular import issues


def __getattr__(name: str):
    """Lazy import module components to avoid circular imports."""
    if name == "orders_module":
        from app.modules.orders.definition import orders_module

        return orders_module
    if name == "get_orders_module_with_routers":
        from app.modules.orders.definition import get_orders_module_with_routers

        return get_orders_module_with_routers
    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")


__all__ = ["orders_module", "get_orders_module_with_routers"]
