"""Pavyzdys: kaip per Python užklausti DB ir gauti įdomių statistikų.

Paleidimas:
    python examples/inspect_results.py
"""

from __future__ import annotations

from collections import Counter

from sqlalchemy import func, select

from trends_collector.config import load_config
from trends_collector.database import Country, DatabaseHandler, Trend


def main():
    cfg = load_config("config.yaml")
    db = DatabaseHandler(cfg.db)

    with db.session() as s:
        # 1) Top 10 šalių pagal trendų skaičių per 24h
        q = (select(Country.iso_code, Country.name_lt,
                    func.count(Trend.id).label("n"))
             .join(Trend, Trend.country_id == Country.id)
             .group_by(Country.id, Country.iso_code, Country.name_lt)
             .order_by(func.count(Trend.id).desc())
             .limit(10))
        print("Top 10 šalių pagal trendų skaičių:")
        for row in s.execute(q):
            print(f"  {row.iso_code:>3}  {row.name_lt:<28} {row.n}")

        # 2) Kategorijų pasiskirstymas
        q2 = select(Trend.category, func.count(Trend.id)).group_by(Trend.category)
        print("\nKategorijų pasiskirstymas:")
        for cat, n in s.execute(q2):
            print(f"  {cat or 'unknown':<18} {n}")

        # 3) Top 10 trendų pagal volume
        q3 = (select(Trend.keyword, Trend.country_id, Trend.volume, Trend.trend_type)
              .where(Trend.volume.is_not(None))
              .order_by(Trend.volume.desc())
              .limit(10))
        print("\nTop 10 trendų pagal volume:")
        for row in s.execute(q3):
            print(f"  vol={row.volume:>10}  type={row.trend_type:<8}  {row.keyword[:80]}")


if __name__ == "__main__":
    main()
