Implemented nowplaying repo
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user