feat: capture and display original upload filename for tracks

This commit is contained in:
daniel-c-harvey
2026-06-07 09:00:17 -04:00
parent 6dfb3a2f23
commit 3de88c786a
14 changed files with 171 additions and 7 deletions
@@ -39,6 +39,7 @@ public class CmsTrackService : ICmsTrackService
string? album,
string? genre,
string? releaseDate,
string? originalFileName,
long createdByUserId,
CancellationToken ct = default)
{
@@ -54,6 +55,8 @@ public class CmsTrackService : ICmsTrackService
if (!string.IsNullOrWhiteSpace(album)) multipart.Add(new StringContent(album), "album");
if (!string.IsNullOrWhiteSpace(genre)) multipart.Add(new StringContent(genre), "genre");
if (!string.IsNullOrWhiteSpace(releaseDate)) multipart.Add(new StringContent(releaseDate), "releaseDate");
// Explicit field — decouples the admin-visible display name from the WAV part's content-disposition filename.
if (!string.IsNullOrWhiteSpace(originalFileName)) multipart.Add(new StringContent(originalFileName), "originalFileName");
multipart.Add(new StringContent(createdByUserId.ToString()), "createdByUserId");
var client = _httpClientFactory.CreateClient(ContentCmsClientName);
@@ -15,6 +15,8 @@ public interface ICmsTrackService
/// Proxy a WAV upload to DeepDrftAPI. The Content API owns the dual-database write and
/// returns the persisted track carrying the SQL-assigned <c>Id</c>. A vault-without-SQL
/// orphan is handled and logged server-side; here it surfaces as a failed result.
/// <paramref name="originalFileName"/> is the browser's filename, captured at upload time and
/// stored as metadata; it is not user-editable afterwards.
/// </summary>
Task<ResultContainer<TrackDto>> UploadTrackAsync(
Stream wavStream,
@@ -25,6 +27,7 @@ public interface ICmsTrackService
string? album,
string? genre,
string? releaseDate,
string? originalFileName,
long createdByUserId,
CancellationToken ct = default);