package agents import ( "context" "github.com/Masterminds/squirrel" "github.com/navidrome/navidrome/model" ) const LocalAgentName = "local" type localAgent struct { ds model.DataStore } func localsConstructor(ds model.DataStore) Interface { return &localAgent{ds} } func (p *localAgent) AgentName() string { return LocalAgentName } func (p *localAgent) GetArtistTopSongs(ctx context.Context, id, artistName, mbid string, count int) ([]Song, error) { top, err := p.ds.MediaFile(ctx).GetAll(model.QueryOptions{ Sort: "playCount", Order: "desc", Max: count, Filters: squirrel.And{ squirrel.Eq{"artist_id": id}, squirrel.Or{ squirrel.Eq{"starred": true}, squirrel.Eq{"rating": 5}, }, }, }) if err != nil { return nil, err } var result []Song for _, s := range top { result = append(result, Song{ Name: s.Title, MBID: s.MbzReleaseTrackID, }) } return result, nil } func init() { Register(LocalAgentName, localsConstructor) }