Enhance user and media management with sorting and statistics: add sorting options to user and media listing endpoints, implement media statistics retrieval, and update frontend components for sorting and displaying media processing times. Refactor related query handlers and API types to support new features.
This commit is contained in:
@@ -35,6 +35,12 @@ public class MediaAsset
|
||||
/// <summary>Текст ошибки, если <see cref="Status"/> == <see cref="MediaAssetStatus.Failed"/>.</summary>
|
||||
public string? ErrorMessage { get; private set; }
|
||||
|
||||
/// <summary>Когда началась обработка (переход в Processing) — для расчёта её длительности.</summary>
|
||||
public DateTimeOffset? ProcessingStartedAt { get; private set; }
|
||||
|
||||
/// <summary>Сколько заняла обработка завершённого ассета (Ready) = момент готовности − старт обработки.</summary>
|
||||
public TimeSpan? ProcessingDuration { get; private set; }
|
||||
|
||||
public DateTimeOffset CreatedAt { get; private set; }
|
||||
public DateTimeOffset UpdatedAt { get; private set; }
|
||||
|
||||
@@ -79,6 +85,8 @@ public class MediaAsset
|
||||
{
|
||||
Status = MediaAssetStatus.Processing;
|
||||
ErrorMessage = null;
|
||||
ProcessingStartedAt = DateTimeOffset.UtcNow;
|
||||
ProcessingDuration = null;
|
||||
Touch();
|
||||
}
|
||||
|
||||
@@ -103,6 +111,11 @@ public class MediaAsset
|
||||
AudioCodec = audioCodec;
|
||||
RelativePath = relativePath;
|
||||
ErrorMessage = null;
|
||||
if (ProcessingStartedAt is { } startedAt)
|
||||
{
|
||||
var elapsed = DateTimeOffset.UtcNow - startedAt;
|
||||
ProcessingDuration = elapsed > TimeSpan.Zero ? elapsed : TimeSpan.Zero;
|
||||
}
|
||||
Touch();
|
||||
}
|
||||
|
||||
@@ -118,6 +131,7 @@ public class MediaAsset
|
||||
{
|
||||
Status = MediaAssetStatus.Pending;
|
||||
ErrorMessage = null;
|
||||
ProcessingStartedAt = null;
|
||||
Touch();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user