pub struct RunCommandController { /* private fields */ }Expand description
Presentation layer controller for run command workflow
Coordinates user interaction, progress reporting, and input validation
before delegating to the application layer RunCommandHandler.
§Responsibilities
- Validate user input (environment name format)
- Validate environment state (must be Released)
- 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
RunCommandHandler.
Implementations§
Source§impl RunCommandController
impl RunCommandController
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 run command controller
Creates a RunCommandController with direct repository injection.
This follows the single container architecture pattern.
Sourcepub async fn execute(
&mut self,
environment_name: &str,
output_format: OutputFormat,
) -> Result<(), RunSubcommandError>
pub async fn execute( &mut self, environment_name: &str, output_format: OutputFormat, ) -> Result<(), RunSubcommandError>
Execute the complete run workflow
Orchestrates all steps of the run command:
- Validate environment name
- Run application services via
RunCommandHandler - Complete with success message
§Arguments
environment_name- The name of the environment to run services inoutput_format- Output format (Text or Json)
§Errors
Returns an error if:
- Environment name is invalid (format validation fails)
- Environment is not in the Released state
- Service start fails
§Returns
Returns Ok(()) on success, or a RunSubcommandError if any step fails.
Auto Trait Implementations§
impl !RefUnwindSafe for RunCommandController
impl !UnwindSafe for RunCommandController
impl Freeze for RunCommandController
impl Send for RunCommandController
impl Sync for RunCommandController
impl Unpin for RunCommandController
impl UnsafeUnpin for RunCommandController
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
Mutably borrows from an owned value. Read more
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> ⓘ
Converts
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> ⓘ
Converts
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>
Wrap the input message
T in a tonic::Request