use crate::{
Result, Rudof,
api::shacl::ShaclOperations,
formats::{DataReaderMode, InputSpec, ShaclFormat},
};
pub struct LoadShaclShapesBuilder<'a> {
rudof: &'a mut Rudof,
schema: Option<&'a InputSpec>,
schema_format: Option<&'a ShaclFormat>,
base: Option<&'a str>,
reader_mode: Option<&'a DataReaderMode>,
}
impl<'a> LoadShaclShapesBuilder<'a> {
pub(crate) fn new(rudof: &'a mut Rudof) -> Self {
Self {
rudof,
schema: None,
schema_format: None,
base: None,
reader_mode: None,
}
}
pub fn with_shacl_schema(mut self, schema: &'a InputSpec) -> Self {
self.schema = Some(schema);
self
}
pub fn with_shacl_schema_format(mut self, schema_format: &'a ShaclFormat) -> Self {
self.schema_format = Some(schema_format);
self
}
pub fn with_base(mut self, base: &'a str) -> Self {
self.base = Some(base);
self
}
pub fn with_reader_mode(mut self, reader_mode: &'a DataReaderMode) -> Self {
self.reader_mode = Some(reader_mode);
self
}
pub fn execute(self) -> Result<()> {
<Rudof as ShaclOperations>::load_shacl_schema(
self.rudof,
self.schema,
self.schema_format,
self.base,
self.reader_mode,
)
}
}