···12121313- [x] authentication
1414- [x] validation
1515-- [ ] settings section
1616-- [ ] services page in settings
1717-- [ ] periodically sync spotify listening history with keeptrack
1515+- [x] settings section
1616+- [x] services page in settings
1717+- [ ] (periodically sync spotify listening history with keeptrack (maybe let this be done))
1818- [ ] a general artists page to view recordings and releases from an artist
1919- [ ] a general releases page to view recordings, and release versions of a release
2020- [ ] a general recordings page to view releases it appears on, and the artists that are credited
···3737 }
3838}
39394040-func (as *ArtistService) ListArtistByCount(ctx context.Context, filter filters.ArtistCount) ([]models.Artist, pagination.Page, error) {
4040+func (as *ArtistService) GetByID(ctx context.Context, mbid string) (models.Artist, error) {
4141+ // if there is no image because of an error, just ignore the error for now
4242+ image, _ := as.mediaProvider.GetArtistImage(ctx, mbid)
4343+4444+ artist, err := as.artistRepo.GetByID(ctx, mbid)
4545+ if err != nil {
4646+ return models.Artist{}, err
4747+ }
4848+4949+ artist.ImageURL = image
5050+5151+ return artist, nil
5252+}
5353+5454+func (as *ArtistService) GetCountByID(ctx context.Context, mbid string, filter filters.ArtistCount) (int, error) {
5555+ return as.artistScrobbleRepo.GetCount(ctx, mbid, filter)
5656+}
5757+5858+func (as *ArtistService) ListByCount(ctx context.Context, filter filters.ArtistCount) ([]models.Artist, pagination.Page, error) {
4159 // Since this should return a general list, we do not want to filter on user. The user service
4260 // should be used to get the user specific list.
4361 filter.UserID = 0