Expand GetArtists with album details, download info, and generic MonitorState enum

This commit is contained in:
Alexander
2026-05-08 23:00:42 +02:00
parent e49cc25372
commit e61e58be72
6 changed files with 169 additions and 62 deletions
+25 -11
View File
@@ -42,6 +42,16 @@ func (s *MetadataService) GetAlbum(ctx context.Context, albumID string) (*metada
return album, nil
}
func (s *MetadataService) GetArtistAlbums(ctx context.Context, artistExternalID string) ([]*metadataPb.Album, error) {
resp, err := s.client.GetArtistAlbums(ctx, &metadataPb.GetArtistAlbumsRequest{
ArtistId: artistExternalID,
})
if err != nil {
return nil, fmt.Errorf("fetching artist albums: %w", err)
}
return resp.GetAlbums(), nil
}
func (s *MetadataService) GetArtistByExternalID(ctx context.Context, externalID string) (*database.Artist, error) {
return s.artists.GetByExternalID(ctx, externalID)
}
@@ -50,6 +60,10 @@ func (s *MetadataService) GetAlbumByExternalID(ctx context.Context, externalID s
return s.albums.GetByExternalID(ctx, externalID)
}
func (s *MetadataService) GetAlbumsByArtistID(ctx context.Context, artistID string) ([]*database.Album, error) {
return s.albums.GetByArtistID(ctx, artistID)
}
func (s *MetadataService) persistArtist(ctx context.Context, album *metadataPb.Album) {
if len(album.GetArtists()) == 0 {
return
@@ -68,7 +82,7 @@ func (s *MetadataService) persistArtist(ctx context.Context, album *metadataPb.A
Country: artist.GetCountry(),
Genres: genres,
ImageURL: artist.GetImageUrl(),
MonitorState: database.ArtistMonitored,
MonitorState: database.Monitored,
})
if err != nil {
log.Warn().Err(err).Str("name", artist.GetName()).Msg("failed to persist artist")
@@ -100,16 +114,16 @@ func (s *MetadataService) persistAlbum(ctx context.Context, album *metadataPb.Al
}
err := s.albums.Create(ctx, &database.Album{
ExternalID: album.GetId(),
ArtistID: artistID,
Title: album.GetTitle(),
AlbumType: album.GetAlbumType(),
TotalTracks: int(album.GetTotalTracks()),
TotalDiscs: int(album.GetTotalDiscs()),
Label: labelName,
Genres: genres,
CoverURL: album.GetCoverUrl(),
IsMonitored: true,
ExternalID: album.GetId(),
ArtistID: artistID,
Title: album.GetTitle(),
AlbumType: album.GetAlbumType(),
TotalTracks: int(album.GetTotalTracks()),
TotalDiscs: int(album.GetTotalDiscs()),
Label: labelName,
Genres: genres,
CoverURL: album.GetCoverUrl(),
MonitorState: database.Monitored,
})
if err != nil {
log.Warn().Err(err).Str("title", album.GetTitle()).Msg("failed to persist album")