use crate::{
Result, Rudof,
api::pg_db::PgDbOperations,
formats::{DataFormat, DataReaderMode, DdlDialect, InputSpec},
};
pub struct PgDbDdlBuilder<'a> {
rudof: &'a Rudof,
data: &'a [InputSpec],
dialect: Option<&'a DdlDialect>,
graph_type_name: Option<&'a str>,
data_format: Option<&'a DataFormat>,
base_data: Option<&'a str>,
reader_mode: Option<&'a DataReaderMode>,
}
impl<'a> PgDbDdlBuilder<'a> {
pub(crate) fn new(rudof: &'a Rudof, data: &'a [InputSpec]) -> Self {
Self {
rudof,
data,
dialect: None,
graph_type_name: None,
data_format: None,
base_data: None,
reader_mode: None,
}
}
pub fn with_dialect(mut self, dialect: &'a DdlDialect) -> Self {
self.dialect = Some(dialect);
self
}
pub fn with_graph_type_name(mut self, graph_type_name: &'a str) -> Self {
self.graph_type_name = Some(graph_type_name);
self
}
pub fn with_data_format(mut self, data_format: &'a DataFormat) -> Self {
self.data_format = Some(data_format);
self
}
pub fn with_base_data(mut self, base_data: &'a str) -> Self {
self.base_data = Some(base_data);
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<String> {
<Rudof as PgDbOperations>::pg_db_ddl(
self.rudof,
self.data,
self.dialect,
self.graph_type_name,
self.data_format,
self.base_data,
self.reader_mode,
)
}
}