use crate::{
CypherQueryResult, PgDbInfo, Result, Rudof,
api::pg_db::implementations::{connect_pg_db, load_pg_db, pg_db_ddl, query_cypher, reset_pg_db_connection},
formats::{BackendSpec, DataFormat, DataReaderMode, DdlDialect, InputSpec, ShaclFormat},
};
use std::io;
use std::path::Path;
pub trait PgDbOperations {
#[allow(clippy::too_many_arguments)]
fn connect_pg_db(
&mut self,
path: Option<&Path>,
in_memory: bool,
read_only: bool,
engine: Option<&BackendSpec>,
) -> Result<PgDbInfo>;
#[allow(clippy::too_many_arguments)]
fn pg_db_ddl(
&self,
data: &[InputSpec],
dialect: Option<&DdlDialect>,
graph_type_name: Option<&str>,
data_format: Option<&DataFormat>,
base_data: Option<&str>,
reader_mode: Option<&DataReaderMode>,
) -> Result<String>;
#[allow(clippy::too_many_arguments)]
fn load_pg_db<W: io::Write>(
&mut self,
data: &[InputSpec],
db_path: Option<&Path>,
db_read_only: bool,
shapes: Option<&InputSpec>,
shapes_format: Option<&ShaclFormat>,
base_shapes: Option<&str>,
skip_validation: bool,
data_format: Option<&DataFormat>,
base_data: Option<&str>,
reader_mode: Option<&DataReaderMode>,
writer: &mut W,
) -> Result<(usize, usize)>;
fn query_cypher(
&mut self,
query: &InputSpec,
db_path: Option<&Path>,
db_read_only: bool,
) -> Result<CypherQueryResult>;
fn reset_pg_db_connection(&mut self);
}
impl PgDbOperations for Rudof {
fn connect_pg_db(
&mut self,
path: Option<&Path>,
in_memory: bool,
read_only: bool,
engine: Option<&BackendSpec>,
) -> Result<PgDbInfo> {
connect_pg_db(self, path, in_memory, read_only, engine)
}
fn pg_db_ddl(
&self,
data: &[InputSpec],
dialect: Option<&DdlDialect>,
graph_type_name: Option<&str>,
data_format: Option<&DataFormat>,
base_data: Option<&str>,
reader_mode: Option<&DataReaderMode>,
) -> Result<String> {
pg_db_ddl(
self,
data,
dialect,
graph_type_name,
data_format,
base_data,
reader_mode,
)
}
fn load_pg_db<W: io::Write>(
&mut self,
data: &[InputSpec],
db_path: Option<&Path>,
db_read_only: bool,
shapes: Option<&InputSpec>,
shapes_format: Option<&ShaclFormat>,
base_shapes: Option<&str>,
skip_validation: bool,
data_format: Option<&DataFormat>,
base_data: Option<&str>,
reader_mode: Option<&DataReaderMode>,
writer: &mut W,
) -> Result<(usize, usize)> {
load_pg_db(
self,
data,
db_path,
db_read_only,
shapes,
shapes_format,
base_shapes,
skip_validation,
data_format,
base_data,
reader_mode,
writer,
)
}
fn query_cypher(
&mut self,
query: &InputSpec,
db_path: Option<&Path>,
db_read_only: bool,
) -> Result<CypherQueryResult> {
query_cypher(self, query, db_path, db_read_only)
}
fn reset_pg_db_connection(&mut self) {
reset_pg_db_connection(self)
}
}