storage/service_line/mod.rs
1//! Service-line-owned storage records and code tables.
2//!
3//! The `domain::<service-line>` modules own service-line concepts such as
4//! boarding suites, daycare eligibility, grooming rebooking cadence, training
5//! programs, and retail partner products. These modules own the
6//! persistence-facing shapes and explicit promotion/demotion at the storage
7//! gate.
8//!
9//! Keep provider/source-system identifiers and durable codes here. Keep labor,
10//! safety, eligibility, and customer-facing decisions in domain/app workflows so
11//! runtime surfaces cannot treat a stored code as authority to override review
12//! gates or invent availability.
13//!
14//! ```rust
15//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
16//! use storage::service_line::{boarding, grooming, training};
17//!
18//! let stored_suite = boarding::AccommodationCode::LuxurySuite;
19//! let promoted_suite: domain::operations::lodging_offer::Accommodation = stored_suite.into();
20//! assert_eq!(boarding::AccommodationCode::from(promoted_suite), stored_suite);
21//!
22//! let stored_grooming_cadence = grooming::StoredCadenceWeeks::try_new(6)?;
23//! let promoted_grooming_cadence: domain::grooming::rebooking::CadenceWeeks =
24//! stored_grooming_cadence.try_into()?;
25//! assert_eq!(promoted_grooming_cadence.get(), 6);
26//!
27//! let stored_training_duration = training::StoredProgramDurationWeeks::try_new(3)?;
28//! let promoted_training_duration: domain::training::program::DurationWeeks =
29//! stored_training_duration.try_into()?;
30//! assert_eq!(promoted_training_duration.get(), 3);
31//! # Ok(())
32//! # }
33//! ```
34
35/// Boarding persistence shape for service-line rules.
36pub mod boarding;
37/// Daycare persistence shape for service-line rules.
38pub mod daycare;
39/// Grooming persistence shape for service-line rules.
40pub mod grooming;
41/// Retail persistence shape for service-line rules.
42pub mod retail;
43/// Training persistence shape for service-line rules.
44pub mod training;