using dy.net.model.dto; using SqlSugar; using AppStorageType = dy.net.model.dto.StorageType; namespace dy.net.model.entity { [SugarTable(TableName = "storage_migration_task")] public class StorageMigrationTask { [SugarColumn(IsPrimaryKey = true, Length = 50)] public string Id { get; set; } public StorageMigrationTaskStatus Status { get; set; } [SugarColumn(IsNullable = true)] public AppStorageType? TargetStorageType { get; set; } public int Concurrency { get; set; } = 1; public int TotalCount { get; set; } public int PendingCount { get; set; } public int SuccessCount { get; set; } public int WarningCount { get; set; } public int FailedCount { get; set; } public int RemovedCount { get; set; } public long TotalBytes { get; set; } [SugarColumn(Length = 128)] public string ConfigurationFingerprint { get; set; } [SugarColumn(Length = 200, IsNullable = true)] public string CurrentVideoId { get; set; } [SugarColumn(Length = 2000, IsNullable = true)] public string CurrentFile { get; set; } [SugarColumn(ColumnDataType = "TEXT", Length = -1, IsNullable = true)] public string ErrorMessage { get; set; } public DateTime CreatedAt { get; set; } [SugarColumn(IsNullable = true)] public DateTime? StartedAt { get; set; } public DateTime UpdatedAt { get; set; } [SugarColumn(IsNullable = true)] public DateTime? CompletedAt { get; set; } [SugarColumn(IsNullable = true)] public DateTime? CleanedAt { get; set; } [SugarColumn(IsNullable = true)] public DateTime? RolledBackAt { get; set; } /// /// 已归档的终态任务不再出现在系统配置和任务中心,但保留条目用于审计及失败记录处理。 /// public bool IsArchived { get; set; } } }