Exclude duplicates from category counts so browse totals match the feed
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+9
-3
@@ -112,13 +112,19 @@ def brief(conn: sqlite3.Connection, brief_date: str | None = None, limit: int =
|
||||
|
||||
|
||||
def category_counts(conn: sqlite3.Connection, accepted_only: bool = True) -> list[dict]:
|
||||
"""Return per topic/flavor article counts for building browse UIs."""
|
||||
where = "WHERE s.accepted = 1" if accepted_only else "WHERE s.topic IS NOT NULL"
|
||||
"""Return per topic/flavor article counts for building browse UIs.
|
||||
|
||||
Joins articles and excludes duplicates so the counts match exactly what the
|
||||
feed endpoint will actually return for each topic/flavor.
|
||||
"""
|
||||
clauses = ["a.duplicate_of IS NULL"]
|
||||
clauses.append("s.accepted = 1" if accepted_only else "s.topic IS NOT NULL")
|
||||
rows = conn.execute(
|
||||
f"""
|
||||
SELECT s.topic, s.flavor, COUNT(*) AS count
|
||||
FROM article_scores s
|
||||
{where}
|
||||
JOIN articles a ON a.id = s.article_id
|
||||
WHERE {" AND ".join(clauses)}
|
||||
GROUP BY s.topic, s.flavor
|
||||
ORDER BY s.topic, s.flavor
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user