refactor: introduce typed resource kind

This commit is contained in:
Mathis Maquenne
2026-08-05 11:33:13 +02:00
parent 3ec258b876
commit 714d567603
11 changed files with 113 additions and 96 deletions
+57
View File
@@ -0,0 +1,57 @@
package deezer
import "fmt"
type Kind string
const (
KindAlbum Kind = "album"
KindPlaylist Kind = "playlist"
KindArtist Kind = "artist"
KindTrack Kind = "track"
)
func (k Kind) pageMethod() string {
switch k {
case KindAlbum:
return "Album"
case KindPlaylist:
return "Playlist"
case KindArtist:
return "Artist"
case KindTrack:
return "Track"
}
return ""
}
func (k Kind) idKey() string {
switch k {
case KindAlbum:
return "alb_id"
case KindPlaylist:
return "playlist_id"
case KindArtist:
return "art_id"
case KindTrack:
return "sng_id"
}
return ""
}
func (k Kind) newResource() (Resource, error) {
switch k {
case KindAlbum:
return &Album{}, nil
case KindPlaylist:
return &Playlist{}, nil
case KindArtist:
return &Artist{}, nil
case KindTrack:
return &Single{}, nil
}
return nil, fmt.Errorf("unsupported resource type: %s", k)
}