Implemented nowplaying repo

This commit is contained in:
Deluan
2016-03-16 20:51:03 -04:00
parent f6866f23a0
commit 9bfb61d994
4 changed files with 34 additions and 12 deletions
+17 -2
View File
@@ -1,19 +1,24 @@
package persistence
import (
"encoding/json"
"errors"
"time"
"github.com/deluan/gosonic/engine"
)
var (
nowPlayingKeyName = []byte("nowplaying")
)
type nowPlayingRepository struct {
ledisRepository
}
func NewNowPlayingRepository() engine.NowPlayingRepository {
r := &nowPlayingRepository{}
r.init("nnowplaying", &engine.NowPlayingInfo{})
r.init("nowplaying", &engine.NowPlayingInfo{})
return r
}
@@ -22,7 +27,17 @@ func (r *nowPlayingRepository) Add(id string) error {
return errors.New("Id is required")
}
m := &engine.NowPlayingInfo{TrackId: id, Start: time.Now()}
return r.saveOrUpdate(m.TrackId, m)
h, err := json.Marshal(m)
if err != nil {
return err
}
err = Db().Set(nowPlayingKeyName, []byte(h))
if err != nil {
return err
}
_, err = Db().Expire(nowPlayingKeyName, int64(engine.NowPlayingExpire.Seconds()))
return err
}
var _ engine.NowPlayingRepository = (*nowPlayingRepository)(nil)