66 lines
1.3 KiB
Go
66 lines
1.3 KiB
Go
package db_storm
|
|
|
|
import (
|
|
"github.com/cloudsonic/sonic-server/domain"
|
|
)
|
|
|
|
type _Playlist struct {
|
|
ID string
|
|
Name string
|
|
Comment string
|
|
FullPath string
|
|
Duration int
|
|
Owner string
|
|
Public bool
|
|
Tracks []string
|
|
}
|
|
|
|
type playlistRepository struct {
|
|
stormRepository
|
|
}
|
|
|
|
func NewPlaylistRepository() domain.PlaylistRepository {
|
|
r := &playlistRepository{}
|
|
r.init(&_Playlist{})
|
|
return r
|
|
}
|
|
|
|
func (r *playlistRepository) Put(p *domain.Playlist) error {
|
|
tp := _Playlist(*p)
|
|
return Db().Save(&tp)
|
|
}
|
|
|
|
func (r *playlistRepository) Get(id string) (*domain.Playlist, error) {
|
|
tp := &_Playlist{}
|
|
err := r.getByID(id, tp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
a := domain.Playlist(*tp)
|
|
return &a, err
|
|
}
|
|
|
|
func (r *playlistRepository) GetAll(options domain.QueryOptions) (domain.Playlists, error) {
|
|
var all []_Playlist
|
|
err := r.getAll(&all, &options)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return r.toPlaylists(all)
|
|
}
|
|
|
|
func (r *playlistRepository) toPlaylists(all []_Playlist) (domain.Playlists, error) {
|
|
result := make(domain.Playlists, len(all))
|
|
for i, p := range all {
|
|
result[i] = domain.Playlist(p)
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (r *playlistRepository) PurgeInactive(activeList domain.Playlists) ([]string, error) {
|
|
return r.purgeInactive(activeList)
|
|
}
|
|
|
|
var _ domain.PlaylistRepository = (*playlistRepository)(nil)
|
|
var _ = domain.Playlist(_Playlist{})
|