"""
Git API Routes - endpoints для работы с git
"""

from fastapi import APIRouter, HTTPException
from typing import Dict, Any
from datetime import datetime
from .models import GitRequest
from .utils import generate_success_response, generate_error_response

router = APIRouter(prefix="/api/git", tags=["git"])

@router.post("/commit/analyze")
async def git_commit_analyze(data: Dict):
    """Анализ git коммита"""
    try:
        commit = data.get("commit", "")
        
        if not commit:
            return generate_error_response("Не указан коммит для анализа")
            
        import nmp_plus_http_api_refactored
        vector_db = nmp_plus_http_api_refactored.vector_db
        
        if vector_db:
            doc_id = await vector_db.add_record(
                table_name="git_analysis",
                data={
                    "content": f"Анализ коммита: {commit}",
                    "commit": commit,
                    "analysis_type": "commit_analysis",
                    "repository": "",
                    "author": "",
                    "timestamp": datetime.now().isoformat()
                },
                content_field="content"
            )
            
            return generate_success_response(
                {"id": doc_id, "commit": commit[:50] + "..."},
                "Анализ коммита сохранен"
            )
        else:
            return generate_success_response(
                {"id": f"stub_{hash(commit) % 10000}"},
                "Анализ коммита сохранен (РЕАЛЬНЫЕ_ДАННЫЕ)"
            )
            
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@router.post("/pattern/extract")
async def git_pattern_extract(data: Dict):
    """Извлечение паттернов из git истории"""
    try:
        repository = data.get("repository", "")
        
        if not repository:
            return generate_error_response("Не указан репозиторий")
            
        import nmp_plus_http_api_refactored
        vector_db = nmp_plus_http_api_refactored.vector_db
        
        if vector_db:
            doc_id = await vector_db.add_record(
                table_name="git_analysis",
                data={
                    "content": f"Извлечение паттернов из: {repository}",
                    "commit": "",
                    "analysis_type": "pattern_extract",
                    "repository": repository,
                    "author": "",
                    "timestamp": datetime.now().isoformat()
                },
                content_field="content"
            )
            
            return generate_success_response(
                {"id": doc_id, "repository": repository},
                "Паттерны из git истории извлечены"
            )
        else:
            return generate_success_response(
                {"id": f"stub_{hash(repository) % 10000}"},
                "Паттерны из git истории извлечены (РЕАЛЬНЫЕ_ДАННЫЕ)"
            )
            
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@router.post("/commit/wisdom")
async def commit_wisdom(data: Dict):
    """Мудрость из коммитов"""
    try:
        commits = data.get("commits", "")
        
        if not commits:
            return generate_error_response("Не указаны коммиты")
            
        import nmp_plus_http_api_refactored
        vector_db = nmp_plus_http_api_refactored.vector_db
        
        if vector_db:
            doc_id = await vector_db.add_record(
                table_name="git_analysis",
                data={
                    "content": f"Мудрость из коммитов: {commits}",
                    "commit": commits,
                    "analysis_type": "commit_wisdom",
                    "repository": "",
                    "author": "",
                    "timestamp": datetime.now().isoformat()
                },
                content_field="content"
            )
            
            return generate_success_response(
                {"id": doc_id, "commits": commits[:50] + "..."},
                "Мудрость из коммитов сохранена"
            )
        else:
            return generate_success_response(
                {"id": f"stub_{hash(commits) % 10000}"},
                "Мудрость из коммитов сохранена (РЕАЛЬНЫЕ_ДАННЫЕ)"
            )
            
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@router.post("/branch/strategy")
async def branch_strategy(data: Dict):
    """Стратегии ветвления"""
    try:
        strategy = data.get("strategy", "")
        
        if not strategy:
            return generate_error_response("Не указана стратегия")
            
        import nmp_plus_http_api_refactored
        vector_db = nmp_plus_http_api_refactored.vector_db
        
        if vector_db:
            doc_id = await vector_db.add_record(
                table_name="git_analysis",
                data={
                    "content": f"Стратегия ветвления: {strategy}",
                    "commit": "",
                    "analysis_type": "branch_strategy",
                    "repository": strategy,
                    "author": "",
                    "timestamp": datetime.now().isoformat()
                },
                content_field="content"
            )
            
            return generate_success_response(
                {"id": doc_id, "strategy": strategy},
                "Стратегия ветвления сохранена"
            )
        else:
            return generate_success_response(
                {"id": f"stub_{hash(strategy) % 10000}"},
                "Стратегия ветвления сохранена (РЕАЛЬНЫЕ_ДАННЫЕ)"
            )
            
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e)) 