Skip to content

Commit 00c7bce

Browse files
authored
Merge pull request #153 from dop251/cleanup-pr
Cleanup improvements
2 parents 0c41b47 + a21f8d9 commit 00c7bce

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

cmd/podsync/updater.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,33 @@ func (u *Updater) updateFeed(ctx context.Context, feedConfig *config.Feed) error
116116

117117
log.Debugf("received %d episode(s) for %q", len(result.Episodes), result.Title)
118118

119+
episodeSet := make(map[string]struct{})
120+
if err := u.db.WalkEpisodes(ctx, feedConfig.ID, func(episode *model.Episode) error {
121+
if episode.Status != model.EpisodeDownloaded && episode.Status != model.EpisodeCleaned {
122+
episodeSet[episode.ID] = struct{}{}
123+
}
124+
return nil
125+
}); err != nil {
126+
return err
127+
}
128+
119129
if err := u.db.AddFeed(ctx, feedConfig.ID, result); err != nil {
120130
return err
121131
}
122132

133+
for _, episode := range result.Episodes {
134+
delete(episodeSet, episode.ID)
135+
}
136+
137+
// removing episodes that are no longer available in the feed and not downloaded or cleaned
138+
for id := range episodeSet {
139+
log.Infof("removing episode %q", id)
140+
err := u.db.DeleteEpisode(feedConfig.ID, id)
141+
if err != nil {
142+
return err
143+
}
144+
}
145+
123146
log.Debug("successfully saved updates to storage")
124147
return nil
125148
}
@@ -372,6 +395,8 @@ func (u *Updater) cleanup(ctx context.Context, feedConfig *config.Feed) error {
372395

373396
if err := u.db.UpdateEpisode(feedID, episode.ID, func(episode *model.Episode) error {
374397
episode.Status = model.EpisodeCleaned
398+
episode.Title = ""
399+
episode.Description = ""
375400
return nil
376401
}); err != nil {
377402
result = multierror.Append(result, errors.Wrapf(err, "failed to set state for cleaned episode: %s", episode.ID))

pkg/db/badger.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,13 @@ func (b *Badger) UpdateEpisode(feedID string, episodeID string, cb func(episode
214214
})
215215
}
216216

217+
func (b *Badger) DeleteEpisode(feedID, episodeID string) error {
218+
key := b.getKey(episodePath, feedID, episodeID)
219+
return b.db.Update(func(txn *badger.Txn) error {
220+
return txn.Delete(key)
221+
})
222+
}
223+
217224
func (b *Badger) WalkEpisodes(ctx context.Context, feedID string, cb func(episode *model.Episode) error) error {
218225
return b.db.View(func(txn *badger.Txn) error {
219226
return b.walkEpisodes(txn, feedID, cb)

pkg/db/storage.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ type Storage interface {
3636
// UpdateEpisode updates episode fields
3737
UpdateEpisode(feedID string, episodeID string, cb func(episode *model.Episode) error) error
3838

39+
// DeleteEpisode deletes an episode
40+
DeleteEpisode(feedID string, episodeID string) error
41+
3942
// WalkEpisodes iterates over episodes that belong to the given feed ID
4043
WalkEpisodes(ctx context.Context, feedID string, cb func(episode *model.Episode) error) error
4144
}

0 commit comments

Comments
 (0)