# app/api/v1/store/__init__.py
"""
Store API router aggregation.

This module aggregates all store-related JSON API endpoints.

IMPORTANT:
- This router is for JSON API endpoints only
- HTML page routes are mounted separately in main.py at /store/*
- Do NOT include pages.router here - it causes route conflicts

MODULE SYSTEM:
Routes can be module-gated using require_module_access() dependency.
For multi-tenant apps, module enablement is checked at request time
based on platform context (not at route registration time).

Self-contained modules (auto-discovered from app/modules/{module}/routes/api/store.py):
- analytics: Store analytics and reporting
- billing: Subscription tiers, store billing, checkout, add-ons, features, usage
- inventory: Stock management, inventory tracking
- orders: Order management, fulfillment, exceptions, invoices
- marketplace: Letzshop integration, product sync, onboarding
- catalog: Store product catalog management
- cms: Content pages management, media library
- customers: Customer management
- payments: Payment configuration, Stripe connect, transactions
- tenancy: Store info, auth, profile, team management
- messaging: Messages, notifications, email settings, email templates
- core: Dashboard, settings
"""

from fastapi import APIRouter

# Create store router
router = APIRouter()

# ============================================================================
# JSON API ROUTES ONLY
# ============================================================================
# All store routes are now auto-discovered from self-contained modules.


# ============================================================================
# Auto-discovered Module Routes
# ============================================================================
# Routes from self-contained modules are auto-discovered and registered.
# Modules include: billing, inventory, orders, marketplace, cms, customers, payments
# Routes are sorted by priority, so catch-all routes (CMS) come last.

from app.modules.routes import get_store_api_routes

for route_info in get_store_api_routes():
    # Only pass prefix if custom_prefix is set (router already has internal prefix)
    if route_info.custom_prefix:
        router.include_router(
            route_info.router,
            prefix=route_info.custom_prefix,
            tags=route_info.tags,
        )
    else:
        router.include_router(
            route_info.router,
            tags=route_info.tags,
        )


__all__ = ["router"]
