use std::io::Error;
use crate::config::{DatabaseSubsetConfig, OnlyTablesConfig, SkipConfig};
use crate::connector::Connector;
use crate::transformer::Transformer;
use crate::types::{OriginalQuery, Query};
pub mod mongodb;
pub mod mongodb_stdin;
pub mod mysql;
pub mod mysql_stdin;
pub mod postgres;
pub mod postgres_stdin;
pub trait Explain: Connector {
fn schema(&self) -> Result<(), Error>;
}
pub trait Source: Connector {
fn read<F: FnMut(OriginalQuery, Query)>(
&self,
options: SourceOptions,
query_callback: F,
) -> Result<(), Error>;
}
pub struct SourceOptions<'a> {
pub transformers: &'a Vec<Box<dyn Transformer>>,
pub skip_config: &'a Vec<SkipConfig>,
pub database_subset: &'a Option<DatabaseSubsetConfig>,
pub only_tables: &'a Vec<OnlyTablesConfig>,
}