using OpenNest;
namespace OpenNest.Data;
///
/// Server-side metadata for one revision of a shared library drawing. The geometry
/// travels separately as a drawing package (a single-drawing, zero-plate .nest archive).
///
public sealed class DrawingLibraryRecord
{
/// Allocated by the client before the first upload; kept by every revision.
public Guid Id { get; set; }
/// Immutable revision number, starting at 1. Ignored on upload.
public int Revision { get; set; }
public string Name { get; set; } = "";
public string Customer { get; set; } = "";
/// Post material name, for example "Carbon Steel".
public string MaterialName { get; set; } = "";
/// Alloy or grade within the material, for example "A36 HR".
public string MaterialGrade { get; set; } = "";
/// Thickness in , stored rounded to four decimals.
public double Thickness { get; set; }
public Units Units { get; set; } = Units.Inches;
public CutType CutType { get; set; } = CutType.Laser;
public string Notes { get; set; } = "";
///
/// Nesting settings applied when the drawing is added to a nest. Not part of the
/// package, so changing them adds a revision that reuses the same package.
///
public DrawingNestingSettings Settings { get; set; } = new();
/// Hidden from browsing by default; still readable by id.
public bool Archived { get; set; }
/// Lower-case hex SHA-256 of the package bytes. Server-computed.
public string PackageSha256 { get; set; } = "";
/// Package size in bytes. Server-computed.
public long PackageSize { get; set; }
/// When the server stored this revision. Server-computed.
public DateTime SavedAt { get; set; }
/// Who saved this revision, as reported by the client.
public string SavedBy { get; set; } = "";
}