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}