from models.dto import RecommendationListResponse, RecommendationItem, StockDetailResponse
from repositories.recommendations import fetch_all_recommendations
from repositories.indicators import fetch_latest_snapshot

def get_recommendations() -> RecommendationListResponse:
    rows, last_update = fetch_all_recommendations()
    items = [
        RecommendationItem(
            code=r["code"],
            name=r["name"],
            per=r.get("per"),
            roe=r.get("roe"),
            pbr=r.get("pbr"),
            sales_growth=r.get("sales_growth"),
        )
        for r in rows
    ]
    return RecommendationListResponse(
        rule_set_id="default",
        last_update=last_update,
        items=items
    )

def get_stock_detail(code: str) -> StockDetailResponse | None:
    row = fetch_latest_snapshot(code)
    if row is None:
        return None
    return StockDetailResponse(
        code=row["code"],
        name=row["name"],
        indicators={
            "per": row.get("per"),
            "roe": row.get("roe"),
            "pbr": row.get("pbr"),
            "sales_growth": row.get("sales_growth"),
        },
        last_updated=row.get("snapshot_at"),
    )
