fix: address second code review findings
- Add context cancellation check between pagination pages in GetArtistReleaseGroups for responsive graceful shutdown during large discography fetches. - Eliminate double DB query on cache hit by having GetCachedReleases return []ExternalRelease directly instead of just a count, avoiding a redundant second query in SyncArtistDiscography. - Update cache_test.go to match new GetCachedReleases return type. - Format main.go (pre-existing whitespace issue).
This commit is contained in:
@@ -45,13 +45,13 @@ func TestGetCachedReleases_CacheHit(t *testing.T) {
|
||||
}
|
||||
|
||||
ttl := 24 * time.Hour
|
||||
count, err := GetCachedReleases(db, artistID, ttl)
|
||||
releases, err := GetCachedReleases(db, artistID, ttl)
|
||||
if err != nil {
|
||||
t.Fatalf("GetCachedReleases() error: %v", err)
|
||||
}
|
||||
|
||||
if count != 2 {
|
||||
t.Errorf("GetCachedReleases() = %d, want 2", count)
|
||||
if len(releases) != 2 {
|
||||
t.Errorf("GetCachedReleases() returned %d releases, want 2", len(releases))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,13 +78,13 @@ func TestGetCachedReleases_CacheMiss_Expired(t *testing.T) {
|
||||
}
|
||||
|
||||
ttl := 24 * time.Hour
|
||||
count, err := GetCachedReleases(db, artistID, ttl)
|
||||
releases, err := GetCachedReleases(db, artistID, ttl)
|
||||
if err != nil {
|
||||
t.Fatalf("GetCachedReleases() error: %v", err)
|
||||
}
|
||||
|
||||
if count != 0 {
|
||||
t.Errorf("GetCachedReleases() = %d, want 0 (expired entry should not be cached)", count)
|
||||
if len(releases) != 0 {
|
||||
t.Errorf("GetCachedReleases() returned %d releases, want 0 (expired entry should not be cached)", len(releases))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,13 +110,13 @@ func TestGetCachedReleases_CacheMiss_NoCachedAt(t *testing.T) {
|
||||
}
|
||||
|
||||
ttl := 24 * time.Hour
|
||||
count, err := GetCachedReleases(db, artistID, ttl)
|
||||
releases, err := GetCachedReleases(db, artistID, ttl)
|
||||
if err != nil {
|
||||
t.Fatalf("GetCachedReleases() error: %v", err)
|
||||
}
|
||||
|
||||
if count != 0 {
|
||||
t.Errorf("GetCachedReleases() = %d, want 0 (NULL cached_at should not be cached)", count)
|
||||
if len(releases) != 0 {
|
||||
t.Errorf("GetCachedReleases() returned %d releases, want 0 (NULL cached_at should not be cached)", len(releases))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,13 +128,13 @@ func TestGetCachedReleases_EmptyArtist(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
ttl := 24 * time.Hour
|
||||
count, err := GetCachedReleases(db, "nonexistent-artist", ttl)
|
||||
releases, err := GetCachedReleases(db, "nonexistent-artist", ttl)
|
||||
if err != nil {
|
||||
t.Fatalf("GetCachedReleases() error: %v", err)
|
||||
}
|
||||
|
||||
if count != 0 {
|
||||
t.Errorf("GetCachedReleases() = %d, want 0 for nonexistent artist", count)
|
||||
if len(releases) != 0 {
|
||||
t.Errorf("GetCachedReleases() returned %d releases, want 0 for nonexistent artist", len(releases))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,12 +170,15 @@ func TestGetCachedReleases_MixedExpiry(t *testing.T) {
|
||||
}
|
||||
|
||||
ttl := 24 * time.Hour
|
||||
count, err := GetCachedReleases(db, artistID, ttl)
|
||||
releases, err := GetCachedReleases(db, artistID, ttl)
|
||||
if err != nil {
|
||||
t.Fatalf("GetCachedReleases() error: %v", err)
|
||||
}
|
||||
|
||||
if count != 1 {
|
||||
t.Errorf("GetCachedReleases() = %d, want 1 (only fresh entry)", count)
|
||||
if len(releases) != 1 {
|
||||
t.Errorf("GetCachedReleases() returned %d releases, want 1 (only fresh entry)", len(releases))
|
||||
}
|
||||
if len(releases) > 0 && releases[0].RGID != "rg-fresh" {
|
||||
t.Errorf("expected rg-fresh, got %s", releases[0].RGID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user