Rework feed creation in Redis

This commit is contained in:
Maksym Pavlenko
2017-08-20 18:49:50 -07:00
parent ed08543a5f
commit 99cac5f464
2 changed files with 25 additions and 16 deletions
+25 -14
View File
@@ -1,7 +1,6 @@
package storage
import (
"encoding/json"
"fmt"
"strconv"
"strings"
@@ -80,15 +79,6 @@ func (r *RedisStorage) GetFeed(hashId string) (*api.Feed, error) {
m[strings.ToLower(key)] = val
}
j, ok := m["json"]
if ok {
if err := json.Unmarshal([]byte(j), feed); err != nil {
return nil, err
}
return feed, nil
}
// Unpack provider and link type
provider := m["provider"]
linkType := m["type"]
@@ -152,6 +142,7 @@ func (r *RedisStorage) GetFeed(hashId string) (*api.Feed, error) {
return nil, err
}
feed.PageSize = pageSize
feed.Format = format
feed.Quality = quality
@@ -159,12 +150,32 @@ func (r *RedisStorage) GetFeed(hashId string) (*api.Feed, error) {
}
func (r *RedisStorage) CreateFeed(feed *api.Feed) error {
raw, err := json.Marshal(feed)
if err != nil {
return err
fields := map[string]interface{}{
"provider": string(feed.Provider),
"type": string(feed.LinkType),
"id": feed.ItemId,
"patreonid": feed.UserId,
"pagesize": feed.PageSize,
}
if feed.Format == api.VideoFormat {
if feed.Quality == api.HighQuality {
fields["quality"] = "VideoHigh"
} else {
fields["quality"] = "VideoLow"
}
} else {
if feed.Quality == api.HighQuality {
fields["quality"] = "AudioHigh"
} else {
fields["quality"] = "AudioLow"
}
}
fields := map[string]interface{}{"json": string(raw)}
if err := r.client.HMSet(feed.HashId, fields).Err(); err != nil {
return errors.Wrap(err, "failed to save feed")
}
-2
View File
@@ -38,7 +38,6 @@ func TestRedisStorage_CreateFeed(t *testing.T) {
hashId := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
err := client.CreateFeed(&api.Feed{
Id: 123,
HashId: hashId,
UserId: "321",
Provider: api.Youtube,
@@ -54,7 +53,6 @@ func TestRedisStorage_CreateFeed(t *testing.T) {
feed, err := client.GetFeed(hashId)
require.NoError(t, err)
require.Equal(t, int64(123), feed.Id)
require.Equal(t, hashId, feed.HashId)
require.Equal(t, "321", feed.UserId)
require.Equal(t, api.Youtube, feed.Provider)