navidrome/persistence/db_storm/playlist_repository.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{})