fix(backend): make track media fields and external id nullable
Artist, ExternalId, OriginalPictureName and OriginalAudioName were non-nullable with '' sentinels, which forced the unique (Source, ExternalId) index to rely on a filtered "<> ''" clause. Make them truly nullable and drop the empty-string sentinels, backfilling existing rows to NULL. Also fixes a formatting regression (`track != null&&`) introduced alongside the nullability change.
This commit is contained in:
@@ -2,8 +2,8 @@ namespace Musify.Infrastructure.MassTransit.Logs
|
||||
{
|
||||
public record UpdateTrackPictureLog(
|
||||
Guid TrackId,
|
||||
string PreviousOriginalPictureKey,
|
||||
string? PreviousSmallPictureKey,
|
||||
string? PreviousMediumPictureKey,
|
||||
string? PreviousLargePictureKey);
|
||||
string? PreviousOriginalPictureKey,
|
||||
string? PreviousSmallPictureKey,
|
||||
string? PreviousMediumPictureKey,
|
||||
string? PreviousLargePictureKey);
|
||||
}
|
||||
|
||||
+18
-12
@@ -41,12 +41,15 @@ namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
{
|
||||
var bucket = storageConfiguration.Bucket;
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackOriginalPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildOriginalPicturePath(userId, track.OriginalPictureName)));
|
||||
if (!string.IsNullOrEmpty(track.OriginalPictureName))
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackOriginalPicture,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildOriginalPicturePath(userId, track.OriginalPictureName)));
|
||||
}
|
||||
|
||||
if (track.IsPicturesProcessed)
|
||||
{
|
||||
@@ -72,12 +75,15 @@ namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
|
||||
trackConfiguration.Routes.BuildLargePicturePath(track.LargePictureName)));
|
||||
}
|
||||
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackOriginalAudio,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildOriginalAudioPath(userId, track.OriginalAudioName)));
|
||||
if (!string.IsNullOrEmpty(track.OriginalAudioName))
|
||||
{
|
||||
routingSlipBuilder.AddActivity(
|
||||
ActivityNames.RemoveTrackOriginalAudio,
|
||||
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
|
||||
new RemoveFileFromBucketArguments(
|
||||
bucket,
|
||||
trackConfiguration.Routes.BuildOriginalAudioPath(userId, track.OriginalAudioName)));
|
||||
}
|
||||
|
||||
if (track.IsAudioProcessed)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user