feat(CUB-28): [Extrudex] Define filament inventory database entities
Add storage_location and is_archived fields to Spool entity to complete the filament inventory entity definition per CUB-28 requirements. Changes: - Spool entity: add IsArchived (bool, default false) and StorageLocation (nullable string, max 200) for physical inventory tracking - SpoolConfiguration: add snake_case column mappings, defaults, and indexes (ix_spools_is_archived, ix_spools_active_archived composite) - FilamentDtos: add IsArchived + StorageLocation to Response, Create, Update - FilamentQueryDtos: add IncludeArchived and StorageLocation query filters - FilamentsController: wire new fields into query, create, update, mapping - FilamentValidators: add StorageLocation max-length validation Build: PASS (0 errors)
This commit is contained in:
@@ -59,6 +59,12 @@ public class FilamentResponse
|
||||
/// <summary>Whether the spool is currently active and available.</summary>
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
/// <summary>Whether the spool has been archived (removed from active inventory).</summary>
|
||||
public bool IsArchived { get; set; }
|
||||
|
||||
/// <summary>Physical storage location (e.g., "Shelf A", "Drawer 3"). Null if unset.</summary>
|
||||
public string? StorageLocation { get; set; }
|
||||
|
||||
/// <summary>Timestamp when this record was created (UTC).</summary>
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
@@ -133,6 +139,15 @@ public class CreateFilamentRequest
|
||||
|
||||
/// <summary>Whether the spool is active. Defaults to true.</summary>
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
/// <summary>Whether the spool is archived. Defaults to false.
|
||||
/// </summary>
|
||||
public bool IsArchived { get; set; } = false;
|
||||
|
||||
/// <summary>Physical storage location (e.g., "Shelf A", "Drawer 3"). Optional.
|
||||
/// </summary>
|
||||
[StringLength(200, ErrorMessage = "StorageLocation must not exceed 200 characters.")]
|
||||
public string? StorageLocation { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -196,4 +211,11 @@ public class UpdateFilamentRequest
|
||||
|
||||
/// <summary>Whether the spool is active.</summary>
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
/// <summary>Whether the spool is archived. Defaults to false.</summary>
|
||||
public bool IsArchived { get; set; } = false;
|
||||
|
||||
/// <summary>Physical storage location (e.g., "Shelf A", "Drawer 3"). Optional.</summary>
|
||||
[StringLength(200, ErrorMessage = "StorageLocation must not exceed 200 characters.")]
|
||||
public string? StorageLocation { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user