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:
2026-07-17 17:53:57 +02:00
parent eeec891870
commit fa45843079
9 changed files with 877 additions and 33 deletions
@@ -32,8 +32,7 @@ namespace Musify.Infrastructure.Persistence
modelBuilder.Entity<Track>()
.HasIndex(track => new { track.Source, track.ExternalId })
.IsUnique()
.HasFilter("\"ExternalId\" <> ''");
.IsUnique();
var playListProcessing = modelBuilder.Entity<PlayListProcessingState>();
playListProcessing.HasKey(state => state.CorrelationId);