diff --git a/backend/Core/Musify.Application/Albums/AddTrackToAlbum.cs b/backend/Core/Musify.Application/Albums/AddTrackToAlbum.cs index ac4fceb..219705e 100644 --- a/backend/Core/Musify.Application/Albums/AddTrackToAlbum.cs +++ b/backend/Core/Musify.Application/Albums/AddTrackToAlbum.cs @@ -20,7 +20,7 @@ namespace Musify.Application.Albums var album = await database.Albums .AsNoTracking() .SingleOrDefaultAsync(a => a.Id == request.AlbumId, cancellationToken); - if (album is null) + if (album == null) { logger.LogInformation("Album {AlbumId} not found", request.AlbumId); return Error.NotFound(); @@ -35,7 +35,7 @@ namespace Musify.Application.Albums var track = await database.Tracks .AsNoTracking() .SingleOrDefaultAsync(t => t.Id == request.TrackId, cancellationToken); - if (track is null) + if (track == null) { logger.LogInformation("Track {TrackId} not found", request.TrackId); return Error.NotFound(description: $"Track {request.TrackId} not found"); diff --git a/backend/Core/Musify.Application/Albums/DeleteAlbum.cs b/backend/Core/Musify.Application/Albums/DeleteAlbum.cs index fa8786b..182a1fb 100644 --- a/backend/Core/Musify.Application/Albums/DeleteAlbum.cs +++ b/backend/Core/Musify.Application/Albums/DeleteAlbum.cs @@ -18,7 +18,7 @@ namespace Musify.Application.Albums { var album = await database.Albums .SingleOrDefaultAsync(a => a.Id == request.AlbumId, cancellationToken); - if (album is null) + if (album == null) { logger.LogDebug("Album {AlbumId} not found", request.AlbumId); return Error.NotFound(); diff --git a/backend/Core/Musify.Application/Albums/GetAlbumById.cs b/backend/Core/Musify.Application/Albums/GetAlbumById.cs index 7f18ebd..97e92c2 100644 --- a/backend/Core/Musify.Application/Albums/GetAlbumById.cs +++ b/backend/Core/Musify.Application/Albums/GetAlbumById.cs @@ -29,7 +29,7 @@ namespace Musify.Application.Albums }) .SingleOrDefaultAsync(cancellationToken); - if (album is null) + if (album == null) return Error.NotFound(); return AlbumApplicationResponse.FromEntity(album.Album, album.TrackCount, album.CoverTrackIds); diff --git a/backend/Core/Musify.Application/Albums/GetAlbumCover.cs b/backend/Core/Musify.Application/Albums/GetAlbumCover.cs index a78fbb5..0ade1b8 100644 --- a/backend/Core/Musify.Application/Albums/GetAlbumCover.cs +++ b/backend/Core/Musify.Application/Albums/GetAlbumCover.cs @@ -25,7 +25,7 @@ namespace Musify.Application.Albums .Select(a => a.Pictures) .SingleOrDefaultAsync(cancellationToken); - if (pictures is null) + if (pictures == null) return Error.NotFound(); var routes = albumConfiguration.Routes; diff --git a/backend/Core/Musify.Application/Albums/RemoveTrackFromAlbum.cs b/backend/Core/Musify.Application/Albums/RemoveTrackFromAlbum.cs index b295e61..d913840 100644 --- a/backend/Core/Musify.Application/Albums/RemoveTrackFromAlbum.cs +++ b/backend/Core/Musify.Application/Albums/RemoveTrackFromAlbum.cs @@ -19,7 +19,7 @@ namespace Musify.Application.Albums var album = await database.Albums .AsNoTracking() .SingleOrDefaultAsync(a => a.Id == request.AlbumId, cancellationToken); - if (album is null) + if (album == null) { logger.LogInformation("Album {AlbumId} not found", request.AlbumId); return Error.NotFound(); @@ -37,7 +37,7 @@ namespace Musify.Application.Albums .ToListAsync(cancellationToken); var link = albumTracks.SingleOrDefault(albumTrack => albumTrack.TrackId == request.TrackId); - if (link is null) + if (link == null) { logger.LogInformation("Track {TrackId} not in album {AlbumId}", request.TrackId, request.AlbumId); return Error.NotFound(description: "Track is not in the album."); diff --git a/backend/Core/Musify.Application/Albums/UpdateAlbum.cs b/backend/Core/Musify.Application/Albums/UpdateAlbum.cs index 4794ce6..0d56817 100644 --- a/backend/Core/Musify.Application/Albums/UpdateAlbum.cs +++ b/backend/Core/Musify.Application/Albums/UpdateAlbum.cs @@ -36,7 +36,7 @@ namespace Musify.Application.Albums { var album = await database.Albums .SingleOrDefaultAsync(a => a.Id == request.AlbumId, cancellationToken); - if (album is null) + if (album == null) { logger.LogInformation("Album {AlbumId} not found", request.AlbumId); return Error.NotFound(); diff --git a/backend/Core/Musify.Application/Likes/ToggleTrackLike.cs b/backend/Core/Musify.Application/Likes/ToggleTrackLike.cs index a2ae08a..7fe93a1 100644 --- a/backend/Core/Musify.Application/Likes/ToggleTrackLike.cs +++ b/backend/Core/Musify.Application/Likes/ToggleTrackLike.cs @@ -30,7 +30,7 @@ namespace Musify.Application.Likes .SingleOrDefaultAsync(like => like.UserId == request.UserId && like.TrackId == request.TrackId, cancellationToken); bool nowLiked; - if (existingLike is not null) + if (existingLike != null) { database.TrackLikes.Remove(existingLike); nowLiked = false; diff --git a/backend/Core/Musify.Application/Mixes/GetMixById.cs b/backend/Core/Musify.Application/Mixes/GetMixById.cs index e10c5c1..c909ad1 100644 --- a/backend/Core/Musify.Application/Mixes/GetMixById.cs +++ b/backend/Core/Musify.Application/Mixes/GetMixById.cs @@ -19,7 +19,7 @@ namespace Musify.Application.Mixes .Include(mix => mix.Items) .SingleOrDefaultAsync(mix => mix.Id == request.MixId && mix.UserId == request.UserId, cancellationToken); - if (mix is null) + if (mix == null) return Error.NotFound(description: $"Mix {request.MixId} was not found"); var orderedItems = mix.Items.OrderBy(item => item.Position).ToList(); diff --git a/backend/Core/Musify.Application/PlayLists/AddTrackToPlayList.cs b/backend/Core/Musify.Application/PlayLists/AddTrackToPlayList.cs index 4aa584f..737f9be 100644 --- a/backend/Core/Musify.Application/PlayLists/AddTrackToPlayList.cs +++ b/backend/Core/Musify.Application/PlayLists/AddTrackToPlayList.cs @@ -19,7 +19,7 @@ namespace Musify.Application.PlayLists { var playList = await database.PlayLists .SingleOrDefaultAsync(pl => pl.Id == request.PlayListId, cancellationToken); - if (playList is null) + if (playList == null) { logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId); return Error.NotFound(); diff --git a/backend/Core/Musify.Application/PlayLists/DeletePlayList.cs b/backend/Core/Musify.Application/PlayLists/DeletePlayList.cs index 05c0b61..51b4fd5 100644 --- a/backend/Core/Musify.Application/PlayLists/DeletePlayList.cs +++ b/backend/Core/Musify.Application/PlayLists/DeletePlayList.cs @@ -20,7 +20,7 @@ namespace Musify.Application.PlayLists public async ValueTask> Handle(DeletePlayListCommand request, CancellationToken cancellationToken) { var playList = await database.PlayLists.SingleOrDefaultAsync(p => p.Id == request.PlayListId, cancellationToken); - if (playList is null) + if (playList == null) { logger.LogDebug("Playlist {PlayListId} not found", request.PlayListId); return Error.NotFound(); diff --git a/backend/Core/Musify.Application/PlayLists/GetPlayListById.cs b/backend/Core/Musify.Application/PlayLists/GetPlayListById.cs index 71b87bc..0fc11b7 100644 --- a/backend/Core/Musify.Application/PlayLists/GetPlayListById.cs +++ b/backend/Core/Musify.Application/PlayLists/GetPlayListById.cs @@ -29,7 +29,7 @@ namespace Musify.Application.PlayLists }) .SingleOrDefaultAsync(cancellationToken); - if (entry is null) + if (entry == null) return Error.NotFound(); if (entry.PlayList.Visibility == PlaylistVisibility.Private diff --git a/backend/Core/Musify.Application/PlayLists/GetPlayListCover.cs b/backend/Core/Musify.Application/PlayLists/GetPlayListCover.cs index 577d120..312d609 100644 --- a/backend/Core/Musify.Application/PlayLists/GetPlayListCover.cs +++ b/backend/Core/Musify.Application/PlayLists/GetPlayListCover.cs @@ -25,7 +25,7 @@ namespace Musify.Application.PlayLists .Select(p => p.Pictures) .SingleOrDefaultAsync(cancellationToken); - if (pictures is null) + if (pictures == null) return Error.NotFound(); var routes = playListConfiguration.Routes; diff --git a/backend/Core/Musify.Application/PlayLists/RemoveTrackFromPlayList.cs b/backend/Core/Musify.Application/PlayLists/RemoveTrackFromPlayList.cs index c7024f7..1202324 100644 --- a/backend/Core/Musify.Application/PlayLists/RemoveTrackFromPlayList.cs +++ b/backend/Core/Musify.Application/PlayLists/RemoveTrackFromPlayList.cs @@ -18,7 +18,7 @@ namespace Musify.Application.PlayLists { var playList = await database.PlayLists .SingleOrDefaultAsync(pl => pl.Id == request.PlayListId, cancellationToken); - if (playList is null) + if (playList == null) { logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId); return Error.NotFound(); @@ -32,7 +32,7 @@ namespace Musify.Application.PlayLists var link = await database.PlayListHasTracks .SingleOrDefaultAsync(plt => plt.PlayListId == request.PlayListId && plt.TrackId == request.TrackId, cancellationToken); - if (link is null) + if (link == null) { logger.LogInformation("Track {TrackId} not in playlist {PlayListId}", request.TrackId, request.PlayListId); return Error.NotFound(description: "Track is not in the playlist."); diff --git a/backend/Core/Musify.Application/PlayLists/UpdatePlayList.cs b/backend/Core/Musify.Application/PlayLists/UpdatePlayList.cs index b3379cf..624bbb7 100644 --- a/backend/Core/Musify.Application/PlayLists/UpdatePlayList.cs +++ b/backend/Core/Musify.Application/PlayLists/UpdatePlayList.cs @@ -35,7 +35,7 @@ namespace Musify.Application.PlayLists public async ValueTask> Handle(UpdatePlayListCommand request, CancellationToken cancellationToken) { var playListEntity = await database.PlayLists.SingleOrDefaultAsync(pl => pl.Id == request.PlayListId, cancellationToken); - if (playListEntity is null) + if (playListEntity == null) { logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId); return Error.NotFound(); diff --git a/backend/Core/Musify.Application/Services/TrackStreamIssuer.cs b/backend/Core/Musify.Application/Services/TrackStreamIssuer.cs index e3986e5..3ceaab2 100644 --- a/backend/Core/Musify.Application/Services/TrackStreamIssuer.cs +++ b/backend/Core/Musify.Application/Services/TrackStreamIssuer.cs @@ -32,7 +32,7 @@ public sealed class TrackStreamIssuer( // Anonymous listeners have no User row to satisfy ListeningHistory's foreign key against, and // their plays aren't "history" anyone can look back on anyway, so there's nothing to record. - if (userId is not null) + if (userId != null) { var newListeningHistory = new ListeningHistory { @@ -48,7 +48,7 @@ public sealed class TrackStreamIssuer( private long? AnonymousFragmentBytes(long? userId) { - if (userId is not null || playbackConfiguration.AnonymousFragmentSeconds <= 0) + if (userId != null || playbackConfiguration.AnonymousFragmentSeconds <= 0) return null; return (long)playbackConfiguration.AnonymousFragmentSeconds * playbackConfiguration.EstimatedAudioBytesPerSecond; diff --git a/backend/Core/Musify.Application/Services/UploadIntentValidator.cs b/backend/Core/Musify.Application/Services/UploadIntentValidator.cs index 78339e3..7b9bbb4 100644 --- a/backend/Core/Musify.Application/Services/UploadIntentValidator.cs +++ b/backend/Core/Musify.Application/Services/UploadIntentValidator.cs @@ -42,7 +42,7 @@ public sealed class UploadIntentValidator( var intent = await database.UploadIntents .FirstOrDefaultAsync(i => i.Id == intentId, cancellationToken); - if (intent is null || intent.UserId != userId) + if (intent == null || intent.UserId != userId) return Error.NotFound(description: "Upload intent not found or not accessible."); if (intent.IsConsumed) @@ -52,7 +52,7 @@ public sealed class UploadIntentValidator( return Error.Validation(description: "Upload intent has expired."); var metadata = await storageService.HeadObjectAsync(intent.Bucket, intent.Key, cancellationToken); - if (metadata is null) + if (metadata == null) return Error.NotFound(description: "Uploaded object not found in storage. Upload the file first."); if (metadata.ContentLength > config.MaxUploadBytes) diff --git a/backend/Core/Musify.Application/Tracks/CreateTrack.cs b/backend/Core/Musify.Application/Tracks/CreateTrack.cs index 80cc7c3..1b4ff52 100644 --- a/backend/Core/Musify.Application/Tracks/CreateTrack.cs +++ b/backend/Core/Musify.Application/Tracks/CreateTrack.cs @@ -35,7 +35,7 @@ namespace Musify.Application.Tracks { var user = await database.Users .SingleOrDefaultAsync(u => u.Id == request.UserId, cancellationToken); - if (user is null) + if (user == null) { logger.LogWarning("User {UserId} not found", request.UserId); return Error.NotFound(description: $"User {request.UserId} not found"); diff --git a/backend/Core/Musify.Application/Tracks/DeleteTrack.cs b/backend/Core/Musify.Application/Tracks/DeleteTrack.cs index 3a712d3..9756b3b 100644 --- a/backend/Core/Musify.Application/Tracks/DeleteTrack.cs +++ b/backend/Core/Musify.Application/Tracks/DeleteTrack.cs @@ -23,7 +23,7 @@ namespace Musify.Application.Tracks public async ValueTask> Handle(DeleteTrackCommand request, CancellationToken cancellationToken) { var track = await database.Tracks.SingleOrDefaultAsync(t => t.Id == request.TrackId, cancellationToken); - if (track is null) + if (track == null) { logger.LogInformation("Track {TrackId} not found", request.TrackId); return Error.NotFound(); diff --git a/backend/Core/Musify.Application/Tracks/GetTrackById.cs b/backend/Core/Musify.Application/Tracks/GetTrackById.cs index 86c7c67..9b4851a 100644 --- a/backend/Core/Musify.Application/Tracks/GetTrackById.cs +++ b/backend/Core/Musify.Application/Tracks/GetTrackById.cs @@ -21,7 +21,7 @@ namespace Musify.Application.Tracks .Select(t => new { Track = t, ListensCount = t.ListeningHistories.Count }) .SingleOrDefaultAsync(cancellationToken); - if (entity is null) + if (entity == null) return Error.NotFound(); return TrackApplicationResponse.FromEntity(entity.Track, entity.ListensCount); diff --git a/backend/Core/Musify.Application/Tracks/GetTrackStream.cs b/backend/Core/Musify.Application/Tracks/GetTrackStream.cs index e0da954..ca0b7da 100644 --- a/backend/Core/Musify.Application/Tracks/GetTrackStream.cs +++ b/backend/Core/Musify.Application/Tracks/GetTrackStream.cs @@ -23,7 +23,7 @@ namespace Musify.Application.Tracks { public async ValueTask> Handle(GetTrackStreamQuery request, CancellationToken cancellationToken) { - if (request.UserId is null && !playbackConfiguration.AllowAnonymousListening) + if (request.UserId == null && !playbackConfiguration.AllowAnonymousListening) return Error.Unauthorized(description: "Sign in to stream music, or ask an administrator to enable anonymous listening."); var track = await database.Tracks.AsNoTracking() diff --git a/backend/Core/Musify.Application/Users/GetUserById.cs b/backend/Core/Musify.Application/Users/GetUserById.cs index 50e9359..145a7ff 100644 --- a/backend/Core/Musify.Application/Users/GetUserById.cs +++ b/backend/Core/Musify.Application/Users/GetUserById.cs @@ -20,7 +20,7 @@ namespace Musify.Application.Users .Select(u => UserApplicationResponse.FromEntity(u)) .SingleOrDefaultAsync(cancellationToken); - if (user is null) + if (user == null) return Error.NotFound(); return user; diff --git a/backend/Core/Musify.Application/Users/GetUserProfile.cs b/backend/Core/Musify.Application/Users/GetUserProfile.cs index f697448..4d897d2 100644 --- a/backend/Core/Musify.Application/Users/GetUserProfile.cs +++ b/backend/Core/Musify.Application/Users/GetUserProfile.cs @@ -38,7 +38,7 @@ namespace Musify.Application.Users }) .SingleOrDefaultAsync(cancellationToken); - if (user is null) + if (user == null) return Error.NotFound(); var followersCount = await database.UserFollows diff --git a/backend/Core/Musify.Application/Users/SyncUser.cs b/backend/Core/Musify.Application/Users/SyncUser.cs index 576d149..58056ba 100644 --- a/backend/Core/Musify.Application/Users/SyncUser.cs +++ b/backend/Core/Musify.Application/Users/SyncUser.cs @@ -23,7 +23,7 @@ namespace Musify.Application.Users var user = await database.Users .SingleOrDefaultAsync(u => u.Id == request.Id, cancellationToken); - if (user is null) + if (user == null) { await database.Users.AddAsync(new User { diff --git a/backend/Core/Musify.Application/Users/UnfollowUser.cs b/backend/Core/Musify.Application/Users/UnfollowUser.cs index b960c64..1009d94 100644 --- a/backend/Core/Musify.Application/Users/UnfollowUser.cs +++ b/backend/Core/Musify.Application/Users/UnfollowUser.cs @@ -18,7 +18,7 @@ namespace Musify.Application.Users var follow = await database.UserFollows .SingleOrDefaultAsync(f => f.FollowerId == request.FollowerId && f.FollowedId == request.FollowedId, cancellationToken); - if (follow is null) + if (follow == null) return new Success(); database.UserFollows.Remove(follow); diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Albums/MarkAlbumAsFailedActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Albums/MarkAlbumAsFailedActivity.cs index 61b765c..9e55e31 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Albums/MarkAlbumAsFailedActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Albums/MarkAlbumAsFailedActivity.cs @@ -19,7 +19,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Albums var album = await database.Albums .SingleOrDefaultAsync(a => a.Id == executeContext.Arguments.AlbumId, executeContext.CancellationToken); - if (album is not null) + if (album != null) { album.LifeCycleStatus = LifeCycleStatus.Failed; await database.SaveChangesAsync(executeContext.CancellationToken); diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs index 9c953ec..472e7fc 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs @@ -93,7 +93,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Audio try { var track = await database.Tracks.SingleOrDefaultAsync(t => t.Id == compensateContext.Log.TrackId, compensateContext.CancellationToken); - if (track is null) + if (track == null) throw new InvalidOperationException($"Track with id {compensateContext.Log.TrackId} not found"); track.Audio.FolderName = compensateContext.Log.PreviousAudioFolderName; diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateAlbumPictureActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateAlbumPictureActivity.cs index a8e1dec..53102ea 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateAlbumPictureActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateAlbumPictureActivity.cs @@ -31,14 +31,14 @@ namespace Musify.Infrastructure.MassTransit.Activities.Pictures [executeContext.Arguments.AlbumId], cancellationToken: executeContext.CancellationToken); - if (album is null) + if (album == null) { logger.LogWarning("Album {AlbumId} not found", executeContext.Arguments.AlbumId); throw new InvalidOperationException($"Album with id {executeContext.Arguments.AlbumId} not found"); } - if (album.Pictures is null) + if (album.Pictures == null) { logger.LogWarning("Album {AlbumId} has no pending picture upload", executeContext.Arguments.AlbumId); @@ -85,7 +85,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Pictures [compensateContext.Log.AlbumId], cancellationToken: compensateContext.CancellationToken); - if (album is null) + if (album == null) { return compensateContext.Compensated(); } diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs index 6f1e99c..4a4bfe2 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs @@ -31,14 +31,14 @@ namespace Musify.Infrastructure.MassTransit.Activities.Pictures [executeContext.Arguments.PlayListId], cancellationToken: executeContext.CancellationToken); - if (playList is null) + if (playList == null) { logger.LogWarning("Playlist {PlayListId} not found", executeContext.Arguments.PlayListId); throw new InvalidOperationException($"PlayList with id {executeContext.Arguments.PlayListId} not found"); } - if (playList.Pictures is null) + if (playList.Pictures == null) { logger.LogWarning("Playlist {PlayListId} has no pending picture upload", executeContext.Arguments.PlayListId); @@ -85,7 +85,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Pictures [compensateContext.Log.PlayListId], cancellationToken: compensateContext.CancellationToken); - if (playList is null) + if (playList == null) { return compensateContext.Compensated(); } diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs index 6de5103..2f240c8 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs @@ -31,7 +31,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Pictures [executeContext.Arguments.TrackId], cancellationToken: executeContext.CancellationToken); - if (track is null) + if (track == null) { logger.LogWarning("Track {TrackId} not found", executeContext.Arguments.TrackId); @@ -79,7 +79,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Pictures [compensateContext.Log.TrackId], cancellationToken: compensateContext.CancellationToken); - if (track is null) + if (track == null) return compensateContext.Compensated(); track.Pictures.OriginalName = compensateContext.Log.PreviousOriginalPictureKey; diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/DeletePlayListFromDbActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/DeletePlayListFromDbActivity.cs index 8329408..1c589e8 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/DeletePlayListFromDbActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/DeletePlayListFromDbActivity.cs @@ -18,7 +18,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.PlayLists var playList = await database.PlayLists .SingleOrDefaultAsync(p => p.Id == executeContext.Arguments.PlayListId, executeContext.CancellationToken); - if (playList is null) + if (playList == null) { logger.LogInformation( "PlayList {PlayListId} not found while deleting from DB, skipping", diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsFailedActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsFailedActivity.cs index 41f4ddd..f534204 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsFailedActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsFailedActivity.cs @@ -19,7 +19,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.PlayLists var playList = await database.PlayLists .SingleOrDefaultAsync(p => p.Id == executeContext.Arguments.PlayListId, executeContext.CancellationToken); - if (playList is not null) + if (playList != null) { playList.LifeCycleStatus = LifeCycleStatus.Failed; await database.SaveChangesAsync(executeContext.CancellationToken); diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsRemovingActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsRemovingActivity.cs index fefc42a..bac3433 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsRemovingActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/PlayLists/MarkPlayListAsRemovingActivity.cs @@ -19,7 +19,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.PlayLists var playList = await database.PlayLists .SingleOrDefaultAsync(p => p.Id == executeContext.Arguments.PlayListId, executeContext.CancellationToken); - if (playList is null) + if (playList == null) { logger.LogInformation( "PlayList {PlayListId} not found while marking as removing, skipping", diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/DeleteTrackFromDbActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/DeleteTrackFromDbActivity.cs index 28e4c15..cb1b0e0 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/DeleteTrackFromDbActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/DeleteTrackFromDbActivity.cs @@ -18,7 +18,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Tracks var track = await database.Tracks .SingleOrDefaultAsync(t => t.Id == executeContext.Arguments.TrackId, executeContext.CancellationToken); - if (track is null) + if (track == null) { logger.LogInformation( "Track {TrackId} not found while deleting from DB, skipping", diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsFailedActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsFailedActivity.cs index 10541b1..46f2a69 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsFailedActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsFailedActivity.cs @@ -19,7 +19,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Tracks var track = await database.Tracks .SingleOrDefaultAsync(t => t.Id == executeContext.Arguments.TrackId, executeContext.CancellationToken); - if (track is not null) + if (track != null) { track.LifeCycleStatus = LifeCycleStatus.Failed; await database.SaveChangesAsync(executeContext.CancellationToken); diff --git a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsRemovingActivity.cs b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsRemovingActivity.cs index f54b42e..d5b9a10 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsRemovingActivity.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/Activities/Tracks/MarkTrackAsRemovingActivity.cs @@ -19,7 +19,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Tracks var track = await database.Tracks .SingleOrDefaultAsync(t => t.Id == executeContext.Arguments.TrackId, executeContext.CancellationToken); - if (track is null) + if (track == null) { logger.LogInformation( "Track {TrackId} not found while marking as removing, skipping", diff --git a/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeletePlayListRoutingSlipBuilder.cs b/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeletePlayListRoutingSlipBuilder.cs index c61a037..9af5547 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeletePlayListRoutingSlipBuilder.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeletePlayListRoutingSlipBuilder.cs @@ -37,7 +37,7 @@ namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders EndpointHelper.BuildExecuteActivityUri(MarkPlayListAsRemovingActivity.ExecuteEndpointName), new MarkPlayListAsRemovingArguments(playListId)); - if (playList?.Pictures is not null) + if (playList?.Pictures != null) { var bucket = storageConfiguration.Bucket; var routes = playListConfiguration.Routes; diff --git a/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeleteTrackRoutingSlipBuilder.cs b/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeleteTrackRoutingSlipBuilder.cs index b5d9800..35b8000 100644 --- a/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeleteTrackRoutingSlipBuilder.cs +++ b/backend/Core/Musify.Infrastructure/MassTransit/RoutingSlip/Builders/DeleteTrackRoutingSlipBuilder.cs @@ -37,7 +37,7 @@ namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders EndpointHelper.BuildExecuteActivityUri(MarkTrackAsRemovingActivity.ExecuteEndpointName), new MarkTrackAsRemovingArguments(trackId)); - if (track is not null) + if (track != null) { var bucket = storageConfiguration.Bucket; diff --git a/backend/Core/Musify.Infrastructure/Persistence/AuditableEntityInterceptor.cs b/backend/Core/Musify.Infrastructure/Persistence/AuditableEntityInterceptor.cs index 8b42267..b5b9bdf 100644 --- a/backend/Core/Musify.Infrastructure/Persistence/AuditableEntityInterceptor.cs +++ b/backend/Core/Musify.Infrastructure/Persistence/AuditableEntityInterceptor.cs @@ -21,7 +21,7 @@ namespace Musify.Infrastructure.Persistence private static void ApplyTimestamps(DbContext? context) { - if (context is null) + if (context == null) return; // SavingChanges(Async) fires before EF's own automatic change detection for this diff --git a/backend/Core/Musify.Infrastructure/Services/SingleFlightCache.cs b/backend/Core/Musify.Infrastructure/Services/SingleFlightCache.cs index bd34a1c..97693d1 100644 --- a/backend/Core/Musify.Infrastructure/Services/SingleFlightCache.cs +++ b/backend/Core/Musify.Infrastructure/Services/SingleFlightCache.cs @@ -16,7 +16,7 @@ namespace Musify.Infrastructure.Services if (duration <= TimeSpan.Zero) return await factory(); - if (cache.TryGetValue(key, out TValue? cached) && cached is not null) + if (cache.TryGetValue(key, out TValue? cached) && cached != null) return cached; var pending = (Lazy>>)inFlight.GetOrAdd( diff --git a/backend/Core/Musify.Infrastructure/Services/StorageService.cs b/backend/Core/Musify.Infrastructure/Services/StorageService.cs index 2319524..04a7034 100644 --- a/backend/Core/Musify.Infrastructure/Services/StorageService.cs +++ b/backend/Core/Musify.Infrastructure/Services/StorageService.cs @@ -276,7 +276,7 @@ namespace Musify.Infrastructure.Services { listResponse = await amazonS3.ListObjectsV2Async(listRequest, cancellationToken); - if (listResponse.S3Objects is null or { Count: 0 } ) + if (listResponse.S3Objects == null|| listResponse.S3Objects.Count == 0) break; var deleteRequest = new DeleteObjectsRequest @@ -289,9 +289,6 @@ namespace Musify.Infrastructure.Services var deleteResponse = await amazonS3.DeleteObjectsAsync(deleteRequest, cancellationToken); - // Some S3-compatible backends (SeaweedFS included) omit the list from the - // XML response entirely when nothing failed, which the SDK deserializes as null - // rather than an empty list — real AWS S3 always returns a (possibly empty) list. var deleteErrors = deleteResponse.DeleteErrors ?? []; if (deleteErrors.Count > 0) { diff --git a/backend/Core/Musify.Infrastructure/Services/StreamTicketService.cs b/backend/Core/Musify.Infrastructure/Services/StreamTicketService.cs index 70454de..67d6c16 100644 --- a/backend/Core/Musify.Infrastructure/Services/StreamTicketService.cs +++ b/backend/Core/Musify.Infrastructure/Services/StreamTicketService.cs @@ -29,9 +29,9 @@ namespace Musify.Infrastructure.Services var now = DateTimeOffset.UtcNow; var claims = new Dictionary { ["prefix"] = keyPrefix }; - if (userId is not null) + if (userId != null) claims["sub"] = userId.Value.ToString(); - if (maxBytes is not null) + if (maxBytes != null) claims["maxBytes"] = maxBytes.Value.ToString(); var descriptor = new SecurityTokenDescriptor diff --git a/backend/Directory.Packages.props b/backend/Directory.Packages.props index f4282db..c9174b6 100644 --- a/backend/Directory.Packages.props +++ b/backend/Directory.Packages.props @@ -29,8 +29,9 @@ - + + @@ -43,7 +44,7 @@ - + diff --git a/backend/Hosts/Musify.Api/Api.csproj b/backend/Hosts/Musify.Api/Api.csproj index b825241..b693556 100644 --- a/backend/Hosts/Musify.Api/Api.csproj +++ b/backend/Hosts/Musify.Api/Api.csproj @@ -19,6 +19,7 @@ + diff --git a/backend/Hosts/Musify.Api/Authentication/JwtBearerEventsHandler.cs b/backend/Hosts/Musify.Api/Authentication/JwtBearerEventsHandler.cs index 7f1b7e3..dcbc302 100644 --- a/backend/Hosts/Musify.Api/Authentication/JwtBearerEventsHandler.cs +++ b/backend/Hosts/Musify.Api/Authentication/JwtBearerEventsHandler.cs @@ -125,7 +125,7 @@ public sealed class JwtBearerEventsHandler( public override Task Challenge(JwtBearerChallengeContext context) { - if (context.AuthenticateFailure is not null) + if (context.AuthenticateFailure != null) logger.LogWarning("JWT challenge: {Error} - {Description}", context.Error, context.ErrorDescription); return Task.CompletedTask; } diff --git a/backend/Hosts/Musify.Api/Filters/ValidationFilter.cs b/backend/Hosts/Musify.Api/Filters/ValidationFilter.cs index 65e743b..cd66124 100644 --- a/backend/Hosts/Musify.Api/Filters/ValidationFilter.cs +++ b/backend/Hosts/Musify.Api/Filters/ValidationFilter.cs @@ -8,7 +8,7 @@ public sealed class ValidationFilter(IValidator validator) : IEndpointFilt { var argument = context.Arguments.OfType().FirstOrDefault(); - if (argument is null) + if (argument == null) return await next(context); var result = await validator.ValidateAsync(argument, context.HttpContext.RequestAborted); diff --git a/backend/Hosts/Musify.Api/Validators/PlayLists/UpdatePlayListRequestValidator.cs b/backend/Hosts/Musify.Api/Validators/PlayLists/UpdatePlayListRequestValidator.cs index c18fd81..c886937 100644 --- a/backend/Hosts/Musify.Api/Validators/PlayLists/UpdatePlayListRequestValidator.cs +++ b/backend/Hosts/Musify.Api/Validators/PlayLists/UpdatePlayListRequestValidator.cs @@ -10,10 +10,10 @@ public sealed class UpdatePlayListRequestValidator : AbstractValidator x.NewName) .NotEmpty() .MaximumLength(50) - .When(x => x.NewName is not null); + .When(x => x.NewName != null); RuleFor(x => x.NewDescription) .MaximumLength(256) - .When(x => x.NewDescription is not null); + .When(x => x.NewDescription != null); } } diff --git a/backend/Hosts/Musify.Worker/Worker.csproj b/backend/Hosts/Musify.Worker/Worker.csproj index ff6b88d..e264aa3 100644 --- a/backend/Hosts/Musify.Worker/Worker.csproj +++ b/backend/Hosts/Musify.Worker/Worker.csproj @@ -15,6 +15,7 @@ + diff --git a/backend/Tests/Musify.Api.Tests/Api.Tests.csproj b/backend/Tests/Musify.Api.Tests/Api.Tests.csproj index 39b562c..5835725 100644 --- a/backend/Tests/Musify.Api.Tests/Api.Tests.csproj +++ b/backend/Tests/Musify.Api.Tests/Api.Tests.csproj @@ -11,6 +11,7 @@ + diff --git a/backend/Tests/Musify.Application.Tests/Albums/CreateAlbumCommandHandlerTests.cs b/backend/Tests/Musify.Application.Tests/Albums/CreateAlbumCommandHandlerTests.cs index eeb6cea..b242565 100644 --- a/backend/Tests/Musify.Application.Tests/Albums/CreateAlbumCommandHandlerTests.cs +++ b/backend/Tests/Musify.Application.Tests/Albums/CreateAlbumCommandHandlerTests.cs @@ -47,7 +47,7 @@ namespace Musify.Application.Tests.Albums var stored = await Database.Albums.FindAsync([result.Value.Id], TestContext.Current.CancellationToken); Assert.NotNull(stored); Assert.Equal("MY ALBUM", stored.NormalizedTitle); - Assert.Equal("cover.webp", stored.Pictures.OriginalName); + Assert.Equal("cover.webp", stored.Pictures?.OriginalName); await eventBus.Received(1).PublishAsync(Arg.Any(), Arg.Any()); } diff --git a/backend/Tests/Musify.Application.Tests/Albums/UpdateAlbumCommandHandlerTests.cs b/backend/Tests/Musify.Application.Tests/Albums/UpdateAlbumCommandHandlerTests.cs index 930d33f..3d304d0 100644 --- a/backend/Tests/Musify.Application.Tests/Albums/UpdateAlbumCommandHandlerTests.cs +++ b/backend/Tests/Musify.Application.Tests/Albums/UpdateAlbumCommandHandlerTests.cs @@ -62,7 +62,7 @@ namespace Musify.Application.Tests.Albums Assert.False(result.IsError); var stored = await Database.Albums.FindAsync([album.Id], TestContext.Current.CancellationToken); Assert.NotNull(stored); - Assert.Equal("new-cover.webp", stored.Pictures.OriginalName); + Assert.Equal("new-cover.webp", stored.Pictures?.OriginalName); await eventBus.Received(1).PublishAsync(Arg.Any(), Arg.Any()); } diff --git a/backend/Tests/Musify.Application.Tests/PlayLists/CreatePlayListCommandHandlerTests.cs b/backend/Tests/Musify.Application.Tests/PlayLists/CreatePlayListCommandHandlerTests.cs index 1ef27a2..697a4de 100644 --- a/backend/Tests/Musify.Application.Tests/PlayLists/CreatePlayListCommandHandlerTests.cs +++ b/backend/Tests/Musify.Application.Tests/PlayLists/CreatePlayListCommandHandlerTests.cs @@ -56,7 +56,7 @@ namespace Musify.Application.Tests.PlayLists Assert.False(result.IsError); var stored = await Database.PlayLists.FindAsync([result.Value.Id], TestContext.Current.CancellationToken); Assert.NotNull(stored); - Assert.Equal("cover.webp", stored.Pictures.OriginalName); + Assert.Equal("cover.webp", stored.Pictures?.OriginalName); await eventBus.Received(1).PublishAsync(Arg.Any(), Arg.Any()); } diff --git a/backend/Tests/Musify.Infrastructure.Tests/Infrastructure.Tests.csproj b/backend/Tests/Musify.Infrastructure.Tests/Infrastructure.Tests.csproj index 613e7eb..f056cab 100644 --- a/backend/Tests/Musify.Infrastructure.Tests/Infrastructure.Tests.csproj +++ b/backend/Tests/Musify.Infrastructure.Tests/Infrastructure.Tests.csproj @@ -14,6 +14,7 @@ solution (and Musify.Infrastructure itself) is built against. --> + diff --git a/backend/Tests/Musify.StreamingGateway.Tests/Authentication/TicketValidatorTests.cs b/backend/Tests/Musify.StreamingGateway.Tests/Authentication/TicketValidatorTests.cs index c84b094..c454c9a 100644 --- a/backend/Tests/Musify.StreamingGateway.Tests/Authentication/TicketValidatorTests.cs +++ b/backend/Tests/Musify.StreamingGateway.Tests/Authentication/TicketValidatorTests.cs @@ -36,7 +36,7 @@ namespace Musify.StreamingGateway.Tests.Authentication DateTime? expires = null, DateTime? notBefore = null, long? maxBytes = null) { var claims = new Dictionary { ["prefix"] = prefix }; - if (maxBytes is not null) + if (maxBytes != null) claims["maxBytes"] = maxBytes.Value.ToString(); var descriptor = new SecurityTokenDescriptor diff --git a/backend/Tests/Musify.StreamingGateway.Tests/Middleware/TicketValidationMiddlewareTests.cs b/backend/Tests/Musify.StreamingGateway.Tests/Middleware/TicketValidationMiddlewareTests.cs index fb8ab99..9082339 100644 --- a/backend/Tests/Musify.StreamingGateway.Tests/Middleware/TicketValidationMiddlewareTests.cs +++ b/backend/Tests/Musify.StreamingGateway.Tests/Middleware/TicketValidationMiddlewareTests.cs @@ -39,7 +39,7 @@ namespace Musify.StreamingGateway.Tests.Middleware private string IssueValidToken(string prefix = Prefix, long? maxBytes = null) { var claims = new Dictionary { ["prefix"] = prefix }; - if (maxBytes is not null) + if (maxBytes != null) claims["maxBytes"] = maxBytes.Value.ToString(); return new JsonWebTokenHandler().CreateToken(new SecurityTokenDescriptor