generated from noisedestroyers/claude
[claudesquad] update from 'database' on 22 Jul 25 13:45 EDT (paused)
This commit is contained in:
104
src/Database/Models/PublishingStep.cs
Normal file
104
src/Database/Models/PublishingStep.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Database.Models
|
||||
{
|
||||
public class PublishingStep : BaseEntity
|
||||
{
|
||||
public int PublicationId { get; set; }
|
||||
|
||||
[Required]
|
||||
[MaxLength(200)]
|
||||
public string StepName { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string Status { get; set; } = "Pending"; // Pending, InProgress, Completed, Failed, Skipped
|
||||
|
||||
public string? Details { get; set; }
|
||||
|
||||
public DateTime? StartedAt { get; set; }
|
||||
|
||||
public DateTime? CompletedAt { get; set; }
|
||||
|
||||
[Range(0, 100)]
|
||||
public int ProgressPercent { get; set; } = 0;
|
||||
|
||||
public string? ErrorMessage { get; set; }
|
||||
|
||||
public int StepOrder { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey(nameof(PublicationId))]
|
||||
public Publication Publication { get; set; } = null!;
|
||||
|
||||
// Helper properties
|
||||
public TimeSpan? Duration => CompletedAt?.Subtract(StartedAt ?? CreatedAt);
|
||||
|
||||
public bool IsCompleted => Status == "Completed" && CompletedAt.HasValue;
|
||||
|
||||
public bool IsFailed => Status == "Failed";
|
||||
|
||||
public bool IsInProgress => Status == "InProgress";
|
||||
|
||||
public bool IsPending => Status == "Pending";
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Status = "InProgress";
|
||||
StartedAt = DateTime.UtcNow;
|
||||
UpdateTimestamp("System");
|
||||
}
|
||||
|
||||
public void Complete(string? details = null)
|
||||
{
|
||||
Status = "Completed";
|
||||
CompletedAt = DateTime.UtcNow;
|
||||
ProgressPercent = 100;
|
||||
if (details != null)
|
||||
Details = details;
|
||||
UpdateTimestamp("System");
|
||||
}
|
||||
|
||||
public void Fail(string errorMessage, string? details = null)
|
||||
{
|
||||
Status = "Failed";
|
||||
CompletedAt = DateTime.UtcNow;
|
||||
ErrorMessage = errorMessage;
|
||||
if (details != null)
|
||||
Details = details;
|
||||
UpdateTimestamp("System");
|
||||
}
|
||||
|
||||
public void Skip(string reason)
|
||||
{
|
||||
Status = "Skipped";
|
||||
CompletedAt = DateTime.UtcNow;
|
||||
Details = reason;
|
||||
ProgressPercent = 100;
|
||||
UpdateTimestamp("System");
|
||||
}
|
||||
|
||||
public void UpdateProgress(int percent, string? details = null)
|
||||
{
|
||||
ProgressPercent = Math.Max(0, Math.Min(100, percent));
|
||||
if (details != null)
|
||||
Details = details;
|
||||
UpdateTimestamp("System");
|
||||
}
|
||||
}
|
||||
|
||||
public static class PublishingStepNames
|
||||
{
|
||||
public const string ValidateConfiguration = "Validate Configuration";
|
||||
public const string CollectBuildData = "Collect Build Data";
|
||||
public const string QueryFogBugz = "Query FogBugz Data";
|
||||
public const string GenerateReleaseNotes = "Generate Release Notes";
|
||||
public const string CompressFiles = "Compress Files";
|
||||
public const string UploadToStorage = "Upload to Storage";
|
||||
public const string CleanupOldVersions = "Cleanup Old Versions";
|
||||
public const string UpdateHelpCenter = "Update Help Center";
|
||||
public const string UpdatePackageStatus = "Update Package Status";
|
||||
public const string SendNotification = "Send Notification";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user