use super::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ApplicationDependency {
application_id: ApplicationId,
version_requirement: String,
optional: bool,
}
impl ApplicationDependency {
pub fn new(
application_id: ApplicationId,
version_requirement: impl Into<String>,
optional: bool,
) -> ContractResult<Self> {
let dependency = Self {
application_id,
version_requirement: version_requirement.into(),
optional,
};
dependency.validate()?;
Ok(dependency)
}
pub fn application_id(&self) -> &ApplicationId {
&self.application_id
}
pub fn version_requirement(&self) -> &str {
&self.version_requirement
}
pub fn is_optional(&self) -> bool {
self.optional
}
pub(crate) fn validate(&self) -> ContractResult<()> {
validate_text(
"dependency.version_requirement",
&self.version_requirement,
128,
)
}
}