feat: normalize release-cardinal fields out of track into a Release entity (Phase 8 §8.0)

This commit is contained in:
daniel-c-harvey
2026-06-11 12:51:21 -04:00
parent 16f356a760
commit f767d288c5
33 changed files with 1032 additions and 297 deletions
+13 -13
View File
@@ -450,7 +450,7 @@ public class CmsTrackService : ICmsTrackService
}
}
public async Task<ResultContainer<List<AlbumSummaryDto>>> GetAlbumSummariesAsync(CancellationToken ct = default)
public async Task<ResultContainer<List<ReleaseDto>>> GetReleasesAsync(CancellationToken ct = default)
{
var client = _httpClientFactory.CreateClient(ContentCmsClientName);
@@ -461,36 +461,36 @@ public class CmsTrackService : ICmsTrackService
}
catch (Exception ex)
{
_logger.LogError(ex, "Content API call failed for album summaries");
return ResultContainer<List<AlbumSummaryDto>>.CreateFailResult("Content API is unreachable.");
_logger.LogError(ex, "Content API call failed for releases");
return ResultContainer<List<ReleaseDto>>.CreateFailResult("Content API is unreachable.");
}
using (response)
{
if (!response.IsSuccessStatusCode)
{
_logger.LogError("Content API album summaries failed: {Status}", (int)response.StatusCode);
return ResultContainer<List<AlbumSummaryDto>>.CreateFailResult("Failed to load albums.");
_logger.LogError("Content API releases failed: {Status}", (int)response.StatusCode);
return ResultContainer<List<ReleaseDto>>.CreateFailResult("Failed to load albums.");
}
List<AlbumSummaryDto>? albums;
List<ReleaseDto>? releases;
try
{
albums = await response.Content.ReadFromJsonAsync<List<AlbumSummaryDto>>(ct);
releases = await response.Content.ReadFromJsonAsync<List<ReleaseDto>>(ct);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to deserialize album summaries from Content API response");
return ResultContainer<List<AlbumSummaryDto>>.CreateFailResult("Content API returned an unexpected response.");
_logger.LogError(ex, "Failed to deserialize releases from Content API response");
return ResultContainer<List<ReleaseDto>>.CreateFailResult("Content API returned an unexpected response.");
}
if (albums is null)
if (releases is null)
{
_logger.LogError("Content API returned a null album summaries list");
return ResultContainer<List<AlbumSummaryDto>>.CreateFailResult("Content API returned an empty response.");
_logger.LogError("Content API returned a null releases list");
return ResultContainer<List<ReleaseDto>>.CreateFailResult("Content API returned an empty response.");
}
return ResultContainer<List<AlbumSummaryDto>>.CreatePassResult(albums);
return ResultContainer<List<ReleaseDto>>.CreatePassResult(releases);
}
}