use super::{Module, ModuleSummary, SubModule, SubModuleSummary};
use crate::errors::{DomainError, DomainResult};
pub trait ModuleRepository {
fn exists(&self, id: &str) -> bool;
fn get(&self, id_or_name: &str) -> DomainResult<Module>;
fn list(&self) -> DomainResult<Vec<ModuleSummary>>;
fn list_sub_modules(&self, parent_id: &str) -> DomainResult<Vec<SubModuleSummary>> {
Err(DomainError::not_found("sub-module", parent_id))
}
fn get_sub_module(&self, composite_id: &str) -> DomainResult<SubModule> {
Err(DomainError::not_found("sub-module", composite_id))
}
}