"""Top-N repositories by event volume over a date window.

Usage: ``python -m duckdb.top_repos --since 2024-01-01 --until 2024-01-07 --n 20``
"""

from __future__ import annotations

import argparse

from .query import open_pipeline_db


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--since", required=True, help="YYYY-MM-DD inclusive")
    parser.add_argument("--until", required=True, help="YYYY-MM-DD inclusive")
    parser.add_argument("--n", type=int, default=10)
    args = parser.parse_args()

    with open_pipeline_db() as con:
        rows = con.execute(
            """
            SELECT repo.name AS repo, count(*) AS n
            FROM events
            WHERE date BETWEEN ? AND ?
            GROUP BY repo
            ORDER BY n DESC
            LIMIT ?
            """,
            [args.since, args.until, args.n],
        ).fetchall()
    for repo, count in rows:
        print(f"{repo}\t{count}")


if __name__ == "__main__":
    main()
