diff options
| author | Ben Sima <ben@bsima.me> | 2025-11-16 03:22:28 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bsima.me> | 2025-11-16 03:22:28 -0500 |
| commit | 4106020d713ea1d8ed815b1180d8df3ea60ae46e (patch) | |
| tree | a9f16613e372f6ba167537b6516264748f4c39ed /Biz/PodcastItLater/Core.py | |
| parent | a2a4360e89603052e9f88d8405eaa386019b680f (diff) | |
Add 'Add to feed' button on episode pages and fix typecheck.sh
- Episode pages now show 'Add to feed' button for logged-in users
who don't have the episode - Added POST /episode/{id}/add-to-feed
endpoint - Tracks 'added' metric when user adds episode to their feed -
Added Database.track_episode_metric() function for metrics tracking -
Fixed typecheck.sh to use bild instead of broken repl.sh approach
Tasks completed: t-gc9aud, t-gcbqDl
Diffstat (limited to 'Biz/PodcastItLater/Core.py')
| -rw-r--r-- | Biz/PodcastItLater/Core.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Biz/PodcastItLater/Core.py b/Biz/PodcastItLater/Core.py index 7b48ac2..c625e11 100644 --- a/Biz/PodcastItLater/Core.py +++ b/Biz/PodcastItLater/Core.py @@ -1028,6 +1028,34 @@ class Database: # noqa: PLR0904 return cursor.fetchone() is not None @staticmethod + def track_episode_metric( + episode_id: int, + event_type: str, + user_id: int | None = None, + ) -> None: + """Track an episode metric event. + + Args: + episode_id: ID of the episode + event_type: Type of event ('added', 'played', 'downloaded') + user_id: Optional user ID (None for anonymous events) + """ + with Database.get_connection() as conn: + cursor = conn.cursor() + cursor.execute( + "INSERT INTO episode_metrics (episode_id, user_id, event_type) " + "VALUES (?, ?, ?)", + (episode_id, user_id, event_type), + ) + conn.commit() + logger.info( + "Tracked %s event for episode %d (user: %s)", + event_type, + episode_id, + user_id or "anonymous", + ) + + @staticmethod def get_user_episodes(user_id: int) -> list[dict[str, Any]]: """Get all episodes in a user's feed.""" with Database.get_connection() as conn: |
