pub struct ConfigureCommandController { /* private fields */ }Expand description
Presentation layer controller for configure command workflow
Coordinates user interaction, progress reporting, and input validation
before delegating to the application layer ConfigureCommandHandler.
§Responsibilities
- Validate user input (environment name format)
- Show progress updates to the user
- Format success/error messages for display
- Delegate business logic to application layer
§Architecture
This controller sits in the presentation layer and handles all user-facing
concerns. It delegates actual business logic to the application layer’s
ConfigureCommandHandler, maintaining clear separation of concerns.
Implementations§
Source§impl ConfigureCommandController
impl ConfigureCommandController
Sourcepub fn new(
repository: Arc<dyn EnvironmentRepository + Send + Sync>,
clock: Arc<dyn Clock>,
user_output: Arc<ReentrantMutex<RefCell<UserOutput>>>,
) -> Self
pub fn new( repository: Arc<dyn EnvironmentRepository + Send + Sync>, clock: Arc<dyn Clock>, user_output: Arc<ReentrantMutex<RefCell<UserOutput>>>, ) -> Self
Create a new configure command controller
Creates a ConfigureCommandController with direct service injection.
This follows the single container architecture pattern.
Sourcepub fn execute(
&mut self,
environment_name: &str,
output_format: OutputFormat,
) -> Result<Environment<Configured>, ConfigureSubcommandError>
pub fn execute( &mut self, environment_name: &str, output_format: OutputFormat, ) -> Result<Environment<Configured>, ConfigureSubcommandError>
Execute the complete configure workflow
Orchestrates all steps of the configure command:
- Validate environment name
- Load and validate environment state
- Create command handler
- Configure infrastructure
- Display results (in specified format)
- Complete with success message
§Arguments
environment_name- The name of the environment to configureoutput_format- The output format (Text or Json)
§Errors
Returns an error if:
- Environment name is invalid (format validation fails)
- Environment cannot be loaded from repository
- Environment is not in “Provisioned” state
- Infrastructure configuration fails
- Progress reporting encounters a poisoned mutex
§Returns
Returns Ok(Environment<Configured>) on success, or a ConfigureSubcommandError if any step fails.
Auto Trait Implementations§
impl !RefUnwindSafe for ConfigureCommandController
impl !UnwindSafe for ConfigureCommandController
impl Freeze for ConfigureCommandController
impl Send for ConfigureCommandController
impl Sync for ConfigureCommandController
impl Unpin for ConfigureCommandController
impl UnsafeUnpin for ConfigureCommandController
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request