feat: store and use m3u files on filesystem for playlists

closes #306
closes #307
closes #66
This commit is contained in:
sentriz
2023-04-22 18:25:19 +01:00
committed by Senan Kelly
parent 1d3877668f
commit 7dc9575e52
18 changed files with 621 additions and 355 deletions

57
playlist/playlist_test.go Normal file
View File

@@ -0,0 +1,57 @@
package playlist_test
import (
"testing"
"github.com/matryer/is"
"go.senan.xyz/gonic/playlist"
)
func TestPlaylist(t *testing.T) {
is := is.New(t)
tmp := t.TempDir()
store, err := playlist.NewStore(tmp)
is.NoErr(err)
playlistIDs, err := store.List()
is.NoErr(err)
is.True(len(playlistIDs) == 0)
for _, playlistID := range playlistIDs {
playlist, err := store.Read(playlistID)
is.NoErr(err)
is.True(!playlist.UpdatedAt.IsZero())
}
before := playlist.Playlist{
UserID: 10,
Name: "Examlpe playlist name",
Comment: `
Example comment
It has multiple lines 👍
`,
Items: []string{
"item 1.flac",
"item 2.flac",
"item 3.flac",
},
IsPublic: true,
}
newPath := playlist.NewPath(before.UserID, before.Name)
is.NoErr(store.Write(newPath, &before))
after, err := store.Read(newPath)
is.NoErr(err)
is.Equal(before.UserID, after.UserID)
is.Equal(before.Name, after.Name)
is.Equal(before.Comment, after.Comment)
is.Equal(before.Items, after.Items)
is.Equal(before.IsPublic, after.IsPublic)
playlistIDs, err = store.List()
is.NoErr(err)
is.True(len(playlistIDs) == 1)
}