style: format backend
This commit is contained in:
@@ -106,12 +106,12 @@ impl HealthStatus {
|
|||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn record_error(self) -> Self {
|
pub fn record_error(self) -> Self {
|
||||||
match self {
|
match self {
|
||||||
Self::Healthy => Self::Degraded { consecutive_errors: 1 },
|
Self::Healthy => Self::Degraded {
|
||||||
Self::Degraded { consecutive_errors } => {
|
consecutive_errors: 1,
|
||||||
Self::Degraded {
|
},
|
||||||
consecutive_errors: consecutive_errors + 1,
|
Self::Degraded { consecutive_errors } => Self::Degraded {
|
||||||
}
|
consecutive_errors: consecutive_errors + 1,
|
||||||
}
|
},
|
||||||
Self::Unhealthy { reason } => Self::Unhealthy { reason },
|
Self::Unhealthy { reason } => Self::Unhealthy { reason },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,7 +161,12 @@ mod tests {
|
|||||||
assert!(!status.is_healthy());
|
assert!(!status.is_healthy());
|
||||||
assert!(status.is_degraded());
|
assert!(status.is_degraded());
|
||||||
assert!(!status.is_unhealthy());
|
assert!(!status.is_unhealthy());
|
||||||
assert_eq!(status, HealthStatus::Degraded { consecutive_errors: 3 });
|
assert_eq!(
|
||||||
|
status,
|
||||||
|
HealthStatus::Degraded {
|
||||||
|
consecutive_errors: 3
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -183,7 +188,12 @@ mod tests {
|
|||||||
let status = HealthStatus::healthy();
|
let status = HealthStatus::healthy();
|
||||||
let status = status.record_error();
|
let status = status.record_error();
|
||||||
assert!(status.is_degraded());
|
assert!(status.is_degraded());
|
||||||
assert_eq!(status, HealthStatus::Degraded { consecutive_errors: 1 });
|
assert_eq!(
|
||||||
|
status,
|
||||||
|
HealthStatus::Degraded {
|
||||||
|
consecutive_errors: 1
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -191,7 +201,12 @@ mod tests {
|
|||||||
let status = HealthStatus::degraded(2);
|
let status = HealthStatus::degraded(2);
|
||||||
let status = status.record_error();
|
let status = status.record_error();
|
||||||
assert!(status.is_degraded());
|
assert!(status.is_degraded());
|
||||||
assert_eq!(status, HealthStatus::Degraded { consecutive_errors: 3 });
|
assert_eq!(
|
||||||
|
status,
|
||||||
|
HealthStatus::Degraded {
|
||||||
|
consecutive_errors: 3
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -274,15 +289,30 @@ mod tests {
|
|||||||
// Record first error -> Degraded with 1 error
|
// Record first error -> Degraded with 1 error
|
||||||
let status = status.record_error();
|
let status = status.record_error();
|
||||||
assert!(status.is_degraded());
|
assert!(status.is_degraded());
|
||||||
assert_eq!(status, HealthStatus::Degraded { consecutive_errors: 1 });
|
assert_eq!(
|
||||||
|
status,
|
||||||
|
HealthStatus::Degraded {
|
||||||
|
consecutive_errors: 1
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Record second error -> Degraded with 2 errors
|
// Record second error -> Degraded with 2 errors
|
||||||
let status = status.record_error();
|
let status = status.record_error();
|
||||||
assert_eq!(status, HealthStatus::Degraded { consecutive_errors: 2 });
|
assert_eq!(
|
||||||
|
status,
|
||||||
|
HealthStatus::Degraded {
|
||||||
|
consecutive_errors: 2
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Record third error -> Degraded with 3 errors
|
// Record third error -> Degraded with 3 errors
|
||||||
let status = status.record_error();
|
let status = status.record_error();
|
||||||
assert_eq!(status, HealthStatus::Degraded { consecutive_errors: 3 });
|
assert_eq!(
|
||||||
|
status,
|
||||||
|
HealthStatus::Degraded {
|
||||||
|
consecutive_errors: 3
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Mark unhealthy -> Unhealthy
|
// Mark unhealthy -> Unhealthy
|
||||||
let status = status.mark_unhealthy("Too many consecutive errors");
|
let status = status.mark_unhealthy("Too many consecutive errors");
|
||||||
|
|||||||
@@ -35,6 +35,6 @@
|
|||||||
//! - Type design: `specs/001-modbus-relay-control/types-design.md`
|
//! - Type design: `specs/001-modbus-relay-control/types-design.md`
|
||||||
//! - Domain specification: `specs/001-modbus-relay-control/spec.md`
|
//! - Domain specification: `specs/001-modbus-relay-control/spec.md`
|
||||||
|
|
||||||
pub mod relay;
|
|
||||||
pub mod modbus;
|
|
||||||
pub mod health;
|
pub mod health;
|
||||||
|
pub mod modbus;
|
||||||
|
pub mod relay;
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ impl Relay {
|
|||||||
pub fn label(&self) -> Option<RelayLabel> {
|
pub fn label(&self) -> Option<RelayLabel> {
|
||||||
self.label.clone()
|
self.label.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
//! This module contains the core domain logic for relay control and management,
|
//! This module contains the core domain logic for relay control and management,
|
||||||
//! including relay types, repository abstractions, and business rules.
|
//! including relay types, repository abstractions, and business rules.
|
||||||
|
|
||||||
|
/// Controller error types for relay operations.
|
||||||
|
pub mod controller;
|
||||||
|
/// Relay entity representing the relay aggregate.
|
||||||
|
pub mod entity;
|
||||||
/// Repository trait and error types for relay persistence.
|
/// Repository trait and error types for relay persistence.
|
||||||
pub mod repository;
|
pub mod repository;
|
||||||
/// Domain types for relay identification and control.
|
/// Domain types for relay identification and control.
|
||||||
pub mod types;
|
pub mod types;
|
||||||
/// Controller error types for relay operations.
|
|
||||||
pub mod controler;
|
|
||||||
/// Relay entity representing the relay aggregate.
|
|
||||||
pub mod entity;
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
mod relayid;
|
mod relayid;
|
||||||
mod relaystate;
|
|
||||||
mod relaylabel;
|
mod relaylabel;
|
||||||
|
mod relaystate;
|
||||||
|
|
||||||
pub use relayid::RelayId;
|
pub use relayid::RelayId;
|
||||||
pub use relaystate::RelayState;
|
|
||||||
pub use relaylabel::RelayLabel;
|
pub use relaylabel::RelayLabel;
|
||||||
|
pub use relaystate::RelayState;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use crate::domain::relay::controler::ControllerError;
|
use crate::domain::relay::controller::ControllerError;
|
||||||
|
|
||||||
/// Unique identifier for a relay in the system.
|
/// Unique identifier for a relay in the system.
|
||||||
///
|
///
|
||||||
@@ -33,7 +33,6 @@ impl RelayId {
|
|||||||
pub const fn as_u8(&self) -> u8 {
|
pub const fn as_u8(&self) -> u8 {
|
||||||
self.0
|
self.0
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for RelayId {
|
impl std::fmt::Display for RelayId {
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
use std::fmt::Display;
|
|
||||||
|
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
/// Human-readable label for a relay.
|
/// Human-readable label for a relay.
|
||||||
@@ -15,7 +13,7 @@ pub enum RelayLabelError {
|
|||||||
#[error("Label cannot be empty")]
|
#[error("Label cannot be empty")]
|
||||||
Empty,
|
Empty,
|
||||||
#[error("Label exceeds maximum length of 50 characters: {0}")]
|
#[error("Label exceeds maximum length of 50 characters: {0}")]
|
||||||
TooLong(usize)
|
TooLong(usize),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RelayLabel {
|
impl RelayLabel {
|
||||||
|
|||||||
Reference in New Issue
Block a user