from __future__ import annotations

from typing import List

from app.models import QueryIntent, SqlExecutionResult


def render_answer_markdown(intent: QueryIntent, result: SqlExecutionResult) -> str:
    lines: List[str] = []
    lines.append("### Result")
    if intent.reasoning:
        lines.append(intent.reasoning)
    lines.append("")
    lines.append("**Generated SQL**")
    lines.append("")
    lines.append("```sql")
    lines.append(result.sql.strip())
    lines.append("```")
    lines.append("")
    if not result.rows:
        lines.append("_No rows returned._")
        return "\n".join(lines)

    header = " | ".join(result.columns)
    sep = " | ".join("---" for _ in result.columns)
    lines.append(header)
    lines.append(sep)
    for row in result.rows:
        cells = []
        for v in row:
            if isinstance(v, float):
                cells.append(f"{v:,.2f}")
            else:
                cells.append(str(v))
        lines.append(" | ".join(cells))
    if result.truncated:
        lines.append("")
        lines.append(f"_Showing first {result.row_count} rows (truncated)._")
    return "\n".join(lines)
