Skip to content

Commit

Permalink
Fix feed ID
Browse files Browse the repository at this point in the history
  • Loading branch information
mxpv committed Jan 25, 2020
1 parent d04b033 commit 415bd0e
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 15 deletions.
20 changes: 18 additions & 2 deletions cmd/podsync/updater.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func (u *Updater) updateFeed(ctx context.Context, feedConfig *config.Feed) error

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

if err := u.db.AddFeed(ctx, result); err != nil {
if err := u.db.AddFeed(ctx, feedConfig.ID, result); err != nil {
return err
}

Expand Down Expand Up @@ -121,7 +121,17 @@ func (u *Updater) downloadEpisodes(ctx context.Context, feedConfig *config.Feed,
return errors.Wrapf(err, "failed to build update list")
}

log.Debugf("update list: %+v", updateList)
var (
updateListLen = len(updateList)
downloaded = 0
)

if updateListLen > 0 {
log.Infof("update list size: %d", updateListLen)
} else {
log.Info("no episodes to download")
return nil
}

// Download pending episodes
for idx, episode := range updateList {
Expand Down Expand Up @@ -181,12 +191,15 @@ func (u *Updater) downloadEpisodes(ctx context.Context, feedConfig *config.Feed,

// Update file status in database

logger.Infof("successfully downloaded file %q", episode.ID)

if err := u.db.UpdateFile(feedID, episode.ID, func(file *model.File) error {
// Record file size of newly downloaded file
size, err := u.fileSize(episodePath)
if err != nil {
logger.WithError(err).Error("failed to get episode file size")
} else {
logger.Debugf("file size: %d bytes", file.Size)
file.Size = size
}

Expand All @@ -195,8 +208,11 @@ func (u *Updater) downloadEpisodes(ctx context.Context, feedConfig *config.Feed,
}); err != nil {
return err
}

downloaded++
}

log.Infof("downloaded %d episode(s)", downloaded)
return nil
}

Expand Down
12 changes: 6 additions & 6 deletions pkg/storage/badger.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,31 +81,31 @@ func (b *Badger) Version() (int, error) {
return version, err
}

func (b *Badger) AddFeed(_ context.Context, feed *model.Feed) error {
func (b *Badger) AddFeed(_ context.Context, feedID string, feed *model.Feed) error {
return b.db.Update(func(txn *badger.Txn) error {
// Insert or update feed info
feedKey := b.getKey(feedPath, feed.ID)
feedKey := b.getKey(feedPath, feedID)
if err := b.setObj(txn, feedKey, feed, true); err != nil {
return err
}

// Append new episodes
for _, episode := range feed.Episodes {
episodeKey := b.getKey(episodePath, feed.ID, episode.ID)
episodeKey := b.getKey(episodePath, feedID, episode.ID)
err := b.setObj(txn, episodeKey, episode, false)
if err == nil || err == ErrAlreadyExists {
// Do nothing
} else {
return errors.Wrapf(err, "failed to save episode %q", feed.ID)
return errors.Wrapf(err, "failed to save episode %q", feedID)
}
}

// Update download file statuses
for _, episode := range feed.Episodes {
fileKey := b.getKey(filePath, feed.ID, episode.ID)
fileKey := b.getKey(filePath, feedID, episode.ID)
file := &model.File{
EpisodeID: episode.ID,
FeedID: feed.ID,
FeedID: feedID,
Size: episode.Size, // Use estimated file size
Status: model.EpisodeNew,
}
Expand Down
13 changes: 7 additions & 6 deletions pkg/storage/badger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ func TestBadger_AddFeed(t *testing.T) {
require.NoError(t, err)
defer db.Close()

err = db.AddFeed(testCtx, getFeed())
feed := getFeed()
err = db.AddFeed(testCtx, feed.ID, feed)
assert.NoError(t, err)
}

Expand All @@ -70,7 +71,7 @@ func TestBadger_GetFeed(t *testing.T) {
feed := getFeed()
feed.Episodes = nil

err = db.AddFeed(testCtx, feed)
err = db.AddFeed(testCtx, feed.ID, feed)
require.NoError(t, err)

actual, err := db.GetFeed(testCtx, feed.ID)
Expand All @@ -90,7 +91,7 @@ func TestBadger_WalkFeeds(t *testing.T) {
feed := getFeed()
feed.Episodes = nil // These are not serialized to database

err = db.AddFeed(testCtx, feed)
err = db.AddFeed(testCtx, feed.ID, feed)
assert.NoError(t, err)

called := 0
Expand All @@ -114,7 +115,7 @@ func TestBadger_DeleteFeed(t *testing.T) {
defer db.Close()

feed := getFeed()
err = db.AddFeed(testCtx, feed)
err = db.AddFeed(testCtx, feed.ID, feed)
require.NoError(t, err)

err = db.DeleteFeed(testCtx, feed.ID)
Expand Down Expand Up @@ -147,7 +148,7 @@ func TestBadger_WalkFiles(t *testing.T) {
defer db.Close()

feed := getFeed()
err = db.AddFeed(testCtx, feed)
err = db.AddFeed(testCtx, feed.ID, feed)
assert.NoError(t, err)

called := 0
Expand Down Expand Up @@ -176,7 +177,7 @@ func TestBadger_UpdateFile(t *testing.T) {
defer db.Close()

feed := getFeed()
err = db.AddFeed(testCtx, feed)
err = db.AddFeed(testCtx, feed.ID, feed)
assert.NoError(t, err)

err = db.UpdateFile(feed.ID, feed.Episodes[0].ID, func(file *model.File) error {
Expand Down
2 changes: 1 addition & 1 deletion pkg/storage/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ type Storage interface {
// - Insert or update feed info
// - Append new episodes to the existing list of episodes
// - Insert File model for each new episode
AddFeed(ctx context.Context, feed *model.Feed) error
AddFeed(ctx context.Context, feedID string, feed *model.Feed) error

// GetFeed gets a feed by ID
GetFeed(ctx context.Context, feedID string) (*model.Feed, error)
Expand Down

0 comments on commit 415bd0e

Please sign in to comment.