refactor: replace generic catalog DTOs with shape-typed DTOs for type safety
Replace the single CatalogMaterialDto + CatalogDimensionsDto (bag of nullable fields) with per-shape DTOs that have strongly-typed dimension properties. Catalog JSON now groups materials by shape key instead of a flat array. Delete the old SeedController/SeedDataDtos (superseded by CatalogService). Scraper updated to emit the new grouped format, resume by default, and save items incrementally. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ public class CatalogData
|
||||
public DateTime ExportedAt { get; set; }
|
||||
public List<CatalogSupplierDto> Suppliers { get; set; } = [];
|
||||
public List<CatalogCuttingToolDto> CuttingTools { get; set; } = [];
|
||||
public List<CatalogMaterialDto> Materials { get; set; } = [];
|
||||
public CatalogMaterialsDto Materials { get; set; } = new();
|
||||
}
|
||||
|
||||
public class CatalogSupplierDto
|
||||
@@ -22,35 +22,91 @@ public class CatalogCuttingToolDto
|
||||
public bool IsDefault { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogMaterialDto
|
||||
public class CatalogMaterialsDto
|
||||
{
|
||||
public List<CatalogAngleDto> Angles { get; set; } = [];
|
||||
public List<CatalogChannelDto> Channels { get; set; } = [];
|
||||
public List<CatalogFlatBarDto> FlatBars { get; set; } = [];
|
||||
public List<CatalogIBeamDto> IBeams { get; set; } = [];
|
||||
public List<CatalogPipeDto> Pipes { get; set; } = [];
|
||||
public List<CatalogRectangularTubeDto> RectangularTubes { get; set; } = [];
|
||||
public List<CatalogRoundBarDto> RoundBars { get; set; } = [];
|
||||
public List<CatalogRoundTubeDto> RoundTubes { get; set; } = [];
|
||||
public List<CatalogSquareBarDto> SquareBars { get; set; } = [];
|
||||
public List<CatalogSquareTubeDto> SquareTubes { get; set; } = [];
|
||||
}
|
||||
|
||||
public abstract class CatalogMaterialBaseDto
|
||||
{
|
||||
public string Shape { get; set; } = "";
|
||||
public string Type { get; set; } = "";
|
||||
public string? Grade { get; set; }
|
||||
public string Size { get; set; } = "";
|
||||
public string? Description { get; set; }
|
||||
public CatalogDimensionsDto? Dimensions { get; set; }
|
||||
public List<CatalogStockItemDto> StockItems { get; set; } = [];
|
||||
}
|
||||
|
||||
public class CatalogDimensionsDto
|
||||
public class CatalogAngleDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal? Diameter { get; set; }
|
||||
public decimal? OuterDiameter { get; set; }
|
||||
public decimal? Width { get; set; }
|
||||
public decimal? Height { get; set; }
|
||||
public decimal? Thickness { get; set; }
|
||||
public decimal? Wall { get; set; }
|
||||
public decimal? Size { get; set; }
|
||||
public decimal? Leg1 { get; set; }
|
||||
public decimal? Leg2 { get; set; }
|
||||
public decimal? Flange { get; set; }
|
||||
public decimal? Web { get; set; }
|
||||
public decimal? WeightPerFoot { get; set; }
|
||||
public decimal? NominalSize { get; set; }
|
||||
public decimal Leg1 { get; set; }
|
||||
public decimal Leg2 { get; set; }
|
||||
public decimal Thickness { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogChannelDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal Height { get; set; }
|
||||
public decimal Flange { get; set; }
|
||||
public decimal Web { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogFlatBarDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal Width { get; set; }
|
||||
public decimal Thickness { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogIBeamDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal Height { get; set; }
|
||||
public decimal WeightPerFoot { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogPipeDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal NominalSize { get; set; }
|
||||
public decimal Wall { get; set; }
|
||||
public string? Schedule { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogRectangularTubeDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal Width { get; set; }
|
||||
public decimal Height { get; set; }
|
||||
public decimal Wall { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogRoundBarDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal Diameter { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogRoundTubeDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal OuterDiameter { get; set; }
|
||||
public decimal Wall { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogSquareBarDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal SideLength { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogSquareTubeDto : CatalogMaterialBaseDto
|
||||
{
|
||||
public decimal SideLength { get; set; }
|
||||
public decimal Wall { get; set; }
|
||||
}
|
||||
|
||||
public class CatalogStockItemDto
|
||||
{
|
||||
public decimal LengthInches { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user