Design Prot Merge #1

Merged
NotS1mp merged 217 commits from design-prot into master 2026-09-21 15:48:16 +00:00
19 changed files with 46 additions and 45 deletions
Showing only changes of commit ea9bf07126 - Show all commits
@@ -77,8 +77,6 @@ namespace Musify.Application.Albums
finalPictureKey = albumConfiguration.Routes.BuildOriginalPicturePath(request.UserId, pictureIntent.ObjectName); finalPictureKey = albumConfiguration.Routes.BuildOriginalPicturePath(request.UserId, pictureIntent.ObjectName);
} }
database.Albums.Update(album);
if (pictureIntent != null && finalPictureKey != null) if (pictureIntent != null && finalPictureKey != null)
{ {
var publishResult = await PublishUpdateAlbumPictureSourceEventAsync( var publishResult = await PublishUpdateAlbumPictureSourceEventAsync(
@@ -106,7 +106,7 @@ namespace Musify.Application.PlayLists
}, validation.Value); }, validation.Value);
} }
async Task<ErrorOr<Success>> PublishCreatePlayListEventAsync( private async Task<ErrorOr<Success>> PublishCreatePlayListEventAsync(
Guid playListId, Guid playListId,
UploadIntent pictureIntent, UploadIntent pictureIntent,
string finalPictureKey, string finalPictureKey,
@@ -85,8 +85,6 @@ namespace Musify.Application.PlayLists
finalPictureKey = playListConfiguration.Routes.BuildOriginalPicturePath(request.UserId, pictureIntent.ObjectName); finalPictureKey = playListConfiguration.Routes.BuildOriginalPicturePath(request.UserId, pictureIntent.ObjectName);
} }
database.PlayLists.Update(playListEntity);
if (pictureIntent != null && finalPictureKey != null) if (pictureIntent != null && finalPictureKey != null)
{ {
var publishResult = await PublishUpdatePlayListPictureSourceEventAsync( var publishResult = await PublishUpdatePlayListPictureSourceEventAsync(
@@ -117,7 +115,7 @@ namespace Musify.Application.PlayLists
return PlayListApplicationResponse.FromEntity(playListEntity, coverTrackIds); return PlayListApplicationResponse.FromEntity(playListEntity, coverTrackIds);
} }
async Task<ErrorOr<Success>> PublishUpdatePlayListPictureSourceEventAsync( private async Task<ErrorOr<Success>> PublishUpdatePlayListPictureSourceEventAsync(
Guid playListId, Guid playListId,
UploadIntent pictureIntent, UploadIntent pictureIntent,
string finalPictureKey, string finalPictureKey,
@@ -14,6 +14,7 @@ namespace Musify.Application.Tracks
public async ValueTask<ErrorOr<TrackApplicationResponse>> Handle(GetLastTrackListenedByUserIdQuery query, CancellationToken cancellationToken) public async ValueTask<ErrorOr<TrackApplicationResponse>> Handle(GetLastTrackListenedByUserIdQuery query, CancellationToken cancellationToken)
{ {
var track = await database.ListeningHistories var track = await database.ListeningHistories
.AsNoTracking()
.Include(t => t.Track.Owner) .Include(t => t.Track.Owner)
.Include(t => t.Track.Tags) .Include(t => t.Track.Tags)
.Where(t => t.UserId == query.UserId) .Where(t => t.UserId == query.UserId)
@@ -16,6 +16,7 @@ namespace Musify.Application.Tracks
public async ValueTask<IEnumerable<TrackApplicationResponse>> Handle(GetListeningHistoryQuery query, CancellationToken cancellationToken) public async ValueTask<IEnumerable<TrackApplicationResponse>> Handle(GetListeningHistoryQuery query, CancellationToken cancellationToken)
{ {
var recentTrackIds = await database.ListeningHistories var recentTrackIds = await database.ListeningHistories
.AsNoTracking()
.Where(l => l.UserId == query.UserId) .Where(l => l.UserId == query.UserId)
.GroupBy(l => l.TrackId) .GroupBy(l => l.TrackId)
.OrderByDescending(g => g.Max(l => l.ListenedAt)) .OrderByDescending(g => g.Max(l => l.ListenedAt))
@@ -24,6 +25,7 @@ namespace Musify.Application.Tracks
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
var tracksById = await database.Tracks var tracksById = await database.Tracks
.AsNoTracking()
.Include(t => t.Owner) .Include(t => t.Owner)
.Include(t => t.Tags) .Include(t => t.Tags)
.Where(t => recentTrackIds.Contains(t.Id)) .Where(t => recentTrackIds.Contains(t.Id))
@@ -16,6 +16,7 @@ namespace Musify.Application.Users
var weekAgo = DateTime.UtcNow.AddDays(-7); var weekAgo = DateTime.UtcNow.AddDays(-7);
var thisWeekHistory = database.ListeningHistories var thisWeekHistory = database.ListeningHistories
.AsNoTracking()
.Where(l => l.UserId == request.UserId && l.ListenedAt >= weekAgo); .Where(l => l.UserId == request.UserId && l.ListenedAt >= weekAgo);
var tracksThisWeek = await thisWeekHistory var tracksThisWeek = await thisWeekHistory
@@ -24,10 +25,11 @@ namespace Musify.Application.Users
.CountAsync(cancellationToken); .CountAsync(cancellationToken);
var secondsThisWeek = await thisWeekHistory var secondsThisWeek = await thisWeekHistory
.Join(database.Tracks, l => l.TrackId, t => t.Id, (l, t) => t.DurationSeconds) .Join(database.Tracks.AsNoTracking(), l => l.TrackId, t => t.Id, (l, t) => t.DurationSeconds)
.SumAsync(cancellationToken); .SumAsync(cancellationToken);
var listenedDates = await database.ListeningHistories var listenedDates = await database.ListeningHistories
.AsNoTracking()
.Where(l => l.UserId == request.UserId) .Where(l => l.UserId == request.UserId)
.Select(l => l.ListenedAt.Date) .Select(l => l.ListenedAt.Date)
.Distinct() .Distinct()
@@ -16,22 +16,22 @@ namespace Musify.Application.Users
{ {
public async ValueTask<ErrorOr<PaginatedResponse<UserApplicationResponse>>> Handle(GetUsersQuery request, CancellationToken cancellationToken) public async ValueTask<ErrorOr<PaginatedResponse<UserApplicationResponse>>> Handle(GetUsersQuery request, CancellationToken cancellationToken)
{ {
var user = database.Users var usersQuery = database.Users
.AsNoTracking() .AsNoTracking()
.AsQueryable(); .AsQueryable();
if (!string.IsNullOrEmpty(request.UsernameSearch)) if (!string.IsNullOrEmpty(request.UsernameSearch))
{ {
var normalizedUsername = request.UsernameSearch.Trim().ToUpperInvariant(); var normalizedUsername = request.UsernameSearch.Trim().ToUpperInvariant();
user = user.Where(u => u.NormalizedName.Contains(normalizedUsername)); usersQuery = usersQuery.Where(u => u.NormalizedName.Contains(normalizedUsername));
} }
var totalCount = await user.CountAsync(cancellationToken); var totalCount = await usersQuery.CountAsync(cancellationToken);
var pagedUser = await user var pagedUsers = await usersQuery
.Select(u => UserApplicationResponse.FromEntity(u)) .Select(u => UserApplicationResponse.FromEntity(u))
.ToPagedListAsync(request.PageNumber, request.PageSize, totalCount, cancellationToken); .ToPagedListAsync(request.PageNumber, request.PageSize, totalCount, cancellationToken);
return PaginatedResponse<UserApplicationResponse>.FromPagedList(pagedUser); return PaginatedResponse<UserApplicationResponse>.FromPagedList(pagedUsers);
} }
} }
} }