printjob_backend/internal/model/configuration.go

44 lines
1.7 KiB
Go

package model
import "time"
// Configuration links a plate and item with layout spacing for maximum packing.
type Configuration struct {
ID string `json:"id"`
Name string `json:"name,omitempty"`
PlateID string `json:"plate_id"`
ItemID string `json:"item_id"`
SpacingMM float64 `json:"spacing_mm"`
CreatedAt time.Time `json:"created_at"`
}
// LayoutPosition is the top-left corner of one item on the plate (mm).
type LayoutPosition struct {
XMM float64 `json:"x_mm"`
YMM float64 `json:"y_mm"`
}
// LayoutPreview describes how many items fit on a plate.
type LayoutPreview struct {
PlateID string `json:"plate_id"`
ItemID string `json:"item_id"`
SpacingMM float64 `json:"spacing_mm"`
PlateWidthMM float64 `json:"plate_width_mm"`
PlateHeightMM float64 `json:"plate_height_mm"`
PrintableXMM float64 `json:"printable_x_mm"`
PrintableYMM float64 `json:"printable_y_mm"`
PrintableWMM float64 `json:"printable_width_mm"`
PrintableHMM float64 `json:"printable_height_mm"`
CellWidthMM float64 `json:"cell_width_mm"`
CellHeightMM float64 `json:"cell_height_mm"`
FootprintWMM float64 `json:"footprint_width_mm"`
FootprintHMM float64 `json:"footprint_height_mm"`
TrimOffsetMM float64 `json:"trim_offset_mm"`
CanvasWidthMM float64 `json:"canvas_width_mm"`
CanvasHeightMM float64 `json:"canvas_height_mm"`
Columns int `json:"columns"`
Rows int `json:"rows"`
Count int `json:"count"`
Positions []LayoutPosition `json:"positions"`
}