use crate::{Result, Rudof, api::materialize::MaterializeOperations, formats::ResultDataFormat};
use std::io;
pub struct MaterializeBuilder<'a, W: io::Write> {
rudof: &'a Rudof,
writer: &'a mut W,
initial_node_iri: Option<&'a str>,
result_format: Option<&'a ResultDataFormat>,
}
impl<'a, W: io::Write> MaterializeBuilder<'a, W> {
pub(crate) fn new(rudof: &'a Rudof, writer: &'a mut W) -> Self {
Self {
rudof,
writer,
initial_node_iri: None,
result_format: None,
}
}
pub fn with_initial_node_iri(mut self, iri: &'a str) -> Self {
self.initial_node_iri = Some(iri);
self
}
pub fn with_result_format(mut self, format: &'a ResultDataFormat) -> Self {
self.result_format = Some(format);
self
}
pub fn execute(self) -> Result<()> {
<Rudof as MaterializeOperations>::materialize(
self.rudof,
self.initial_node_iri,
self.result_format,
self.writer,
)
}
}