Introduced Backend.Close method

This allows Backend implementations to free used resources.
Currently used for musicbrainzws2.Client
This commit is contained in:
Philipp Wolfer 2025-06-10 08:30:26 +02:00
parent c1a480a1a6
commit 499786cab9
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
14 changed files with 45 additions and 8 deletions

View file

@ -36,12 +36,18 @@ const lovesBatchSize = listenbrainz.MaxItemsPerGet
type ListenBrainzApiBackend struct {
client listenbrainz.Client
mbClient musicbrainzws2.Client
mbClient *musicbrainzws2.Client
username string
checkDuplicates bool
existingMBIDs map[mbtypes.MBID]bool
}
func (b *ListenBrainzApiBackend) Close() {
if b.mbClient != nil {
b.mbClient.Close()
}
}
func (b *ListenBrainzApiBackend) Name() string { return "listenbrainz" }
func (b *ListenBrainzApiBackend) Options() []models.BackendOption {
@ -62,7 +68,7 @@ func (b *ListenBrainzApiBackend) Options() []models.BackendOption {
func (b *ListenBrainzApiBackend) InitConfig(config *config.ServiceConfig) error {
b.client = listenbrainz.NewClient(config.GetString("token"), version.UserAgent())
b.mbClient = *musicbrainzws2.NewClient(musicbrainzws2.AppInfo{
b.mbClient = musicbrainzws2.NewClient(musicbrainzws2.AppInfo{
Name: version.AppName,
Version: version.AppVersion,
URL: version.AppURL,
@ -261,7 +267,7 @@ out:
// Missing track metadata indicates that the recording MBID is no
// longer available and might have been merged. Try fetching details
// from MusicBrainz.
lovesBatch, err := ExtendTrackMetadata(ctx, &b.client, &b.mbClient, &batch)
lovesBatch, err := ExtendTrackMetadata(ctx, &b.client, b.mbClient, &batch)
if err != nil {
results <- models.LovesResult{Error: err}
return
@ -276,7 +282,7 @@ out:
offset += listenbrainz.MaxItemsPerGet
}
lovesBatch, err := ExtendTrackMetadata(ctx, &b.client, &b.mbClient, &batch)
lovesBatch, err := ExtendTrackMetadata(ctx, &b.client, b.mbClient, &batch)
if err != nil {
results <- models.LovesResult{Error: err}
return