diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-06 12:57:27 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-06 13:08:52 +0300 |
| commit | 259be64f758e275e8e9fc23de4a7de87526147c9 (patch) | |
| tree | 96832e9f7c84c062abccec03a373875262763ac9 /docs/api.md | |
| parent | 5157db5a6a92617e1232845fbbc3c67fcdcaf5d5 (diff) | |
w0: Split SubscribeFeed into smaller helpers
SubscribeFeed was ~100 lines and did too much: admin check, feed parsing,
filesystem setup, DB set creation, permission grant, feed creation, cover
download, episode insertion, and marking checked.
Refactored into focused helpers:
- verifyAdmin – admin gate
- resolveSetPath – sanitize name and build disk path
- createPodcastSet – mkdir, create set row, grant owner perm
- rollbackSet – delete set row + remove directory
- createPodcastFeed – insert feed row
- insertPodcastEpisodes – bulk insert parsed episodes
Injected dependency fields (parseFeed, parseFeedReader, downloadCover)
into podcastService so unit tests can replace them with fakes instead of
hitting real HTTP or disk.
Added internal/service/podcast_test.go with coverage for:
- happy path SubscribeFeed
- non-admin rejection
- user lookup error
- feed parse error
- set creation error (directory cleaned up)
- grant permission error (rollback)
- feed creation error (rollback)
- resolveSetPath / sanitize helpers
- DownloadEpisode permission check
- upsertFeedEpisodes (new + skip existing)
- updateFeedFromParsed
- insertPodcastEpisodes
Diffstat (limited to 'docs/api.md')
0 files changed, 0 insertions, 0 deletions
