"""
API v2 Routes
Enhanced endpoints with additional features
"""
from typing import List, Optional, Dict, Any
from fastapi import APIRouter, Depends, HTTPException, Query
from pydantic import BaseModel
from sqlalchemy.ext.asyncio import AsyncSession

from app.database import get_db
from app.auth.jwt_handler import get_current_user
from app.models.user import User
from app.api.versioning import APIVersion, VersionedAPIRouter

# Create versioned router
router = VersionedAPIRouter(version=APIVersion.V2, tags=["API v2"])


# ============== Enhanced Schemas ==============

class PaginatedResponse(BaseModel):
    """Standard paginated response for v2"""
    data: List[Any]
    meta: Dict[str, Any]
    links: Dict[str, Optional[str]]


class FilterParams(BaseModel):
    """Standard filter parameters"""
    search: Optional[str] = None
    sort_by: Optional[str] = None
    sort_order: Optional[str] = "asc"
    page: int = 1
    per_page: int = 20


# ============== V2 Endpoints ==============

@router.get("/info")
async def api_v2_info():
    """
    Get API v2 information and capabilities
    """
    return {
        "version": "v2",
        "status": "beta",
        "features": [
            "Enhanced pagination",
            "Advanced filtering",
            "Bulk operations",
            "GraphQL support",
            "Improved error responses"
        ],
        "documentation": "/docs",
        "graphql_endpoint": "/api/v2/graphql"
    }


@router.get("/health")
async def health_check_v2():
    """
    Enhanced health check with more details
    """
    return {
        "status": "healthy",
        "version": "v2",
        "services": {
            "database": {"status": "connected", "latency_ms": 5},
            "ai_service": {"status": "ready", "model": "gpt-4o-mini"},
            "cache": {"status": "connected", "type": "redis"},
            "queue": {"status": "ready", "pending_jobs": 0}
        },
        "uptime_seconds": 3600
    }
