From ffcff82d203caa2518b080dccf43e64072c475dd Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sat, 3 Jan 2026 22:49:13 +0100 Subject: [PATCH] feat(domain): implement RelayState enum with serialization support Add RelayState enum to domain layer with: - Display, Debug, Clone, Copy, PartialEq, Eq derives - serde Serialize/Deserialize traits for API JSON handling - Type-safe representation of relay on/off states TDD green phase: Tests from T019 now pass. Ref: T020 (specs/001-modbus-relay-control/tasks.md) --- backend/src/domain/relay/types/relaystate.rs | 4 +++- specs/001-modbus-relay-control/tasks.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/domain/relay/types/relaystate.rs b/backend/src/domain/relay/types/relaystate.rs index e651d27..f77859e 100644 --- a/backend/src/domain/relay/types/relaystate.rs +++ b/backend/src/domain/relay/types/relaystate.rs @@ -1,11 +1,13 @@ /// State of a relay (on or off). /// /// Represents the binary state of a relay channel in the Modbus controller. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub enum RelayState { /// Relay is energized (circuit closed). + #[serde(rename = "on")] On, /// Relay is de-energized (circuit open). + #[serde(rename = "off")] Off, } diff --git a/specs/001-modbus-relay-control/tasks.md b/specs/001-modbus-relay-control/tasks.md index ae5f6aa..eda7f91 100644 --- a/specs/001-modbus-relay-control/tasks.md +++ b/specs/001-modbus-relay-control/tasks.md @@ -225,7 +225,7 @@ - **File**: src/domain/relay.rs - **Complexity**: Low | **Uncertainty**: Low -- [ ] **T020** [P] [US1] [TDD] Implement RelayState enum +- [x] **T020** [P] [US1] [TDD] Implement RelayState enum - Enum: On, Off - Implement Display, Debug, Clone, Copy, PartialEq, Eq, serde::Serialize/Deserialize - **File**: src/domain/relay.rs