clidi/proto/
cli.rs

1use crate::entities::cli::use_case::{ArgParseResult, CliUseCaseMeta, RawUseCaseRequest};
2use crate::entities::errors::UseCaseError;
3
4pub trait IParamValidator {
5    fn validate(&self, param: String) -> ArgParseResult;
6}
7
8impl IParamValidator for Box<dyn Fn(String) -> ArgParseResult> {
9    fn validate(&self, param: String) -> ArgParseResult {
10        self(param)
11    }
12}
13
14pub trait ICliUseCase {
15    type Request;
16    fn execute(&mut self, request: Self::Request) -> Result<(), UseCaseError>;
17    fn get_meta(&self) -> CliUseCaseMeta;
18    fn validate_request(&self, raw: RawUseCaseRequest) -> Self::Request;
19}
20
21pub(crate) trait ICliUseCaseWrapped {
22    fn get_meta(&self) -> CliUseCaseMeta;
23    fn execute(&mut self, request: RawUseCaseRequest) -> Result<(), UseCaseError>;
24}