using System.Text.Json;
using System.Text.Json.Serialization;
namespace ControlPlane.Core.Models;
public enum BuildStatus { Running, Succeeded, Failed }
public enum BuildKind { DockerImage, DotnetProject, NpmProject }
///
/// Persisted record of a single build run — image build, dotnet build, or npm build.
/// Stored in ClientAssets/builds.json.
///
public class BuildRecord
{
public string Id { get; set; } = Guid.NewGuid().ToString("N")[..8];
public BuildKind Kind { get; set; }
public string Target { get; set; } = string.Empty; // image name or project path
public BuildStatus Status { get; set; } = BuildStatus.Running;
public DateTimeOffset StartedAt { get; set; } = DateTimeOffset.UtcNow;
public DateTimeOffset? FinishedAt { get; set; }
public int? DurationMs { get; set; }
public string? ImageDigest { get; set; } // populated for DockerImage builds
public List Log { get; set; } = [];
}