Fix 9 design majors: ITrackService interface, IsDescending, ArrayPool base, CliUtils, sort sentinel cleanup, content controller via TrackService, Skip property
This commit is contained in:
@@ -26,11 +26,18 @@ public class TrackRepository
|
||||
|
||||
public async Task<PagedResult<TrackEntity>> GetPage(PagingParameters<TrackEntity> pageParameters)
|
||||
{
|
||||
// Two separate queries with no transaction: count and page can be momentarily inconsistent
|
||||
// under concurrent writes. Acceptable — SQLite concurrency is low and the UI is read-only.
|
||||
// If filtering is added, the count query must be updated to apply the same filter.
|
||||
var count = await _db.Tracks.CountAsync();
|
||||
|
||||
var page = await _db.Tracks
|
||||
.OrderBy(pageParameters.OrderBy ?? (t => t.Id))
|
||||
.Skip((pageParameters.Page - 1) * pageParameters.PageSize)
|
||||
|
||||
var orderBy = pageParameters.OrderBy ?? (t => t.Id);
|
||||
var ordered = pageParameters.IsDescending
|
||||
? _db.Tracks.OrderByDescending(orderBy)
|
||||
: _db.Tracks.OrderBy(orderBy);
|
||||
|
||||
var page = await ordered
|
||||
.Skip(pageParameters.Skip)
|
||||
.Take(pageParameters.PageSize)
|
||||
.ToListAsync();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user