mod mysql;
mod postgres;
pub use mysql::{MARIADB, MYSQL};
pub use postgres::PG;
use crate::db::plan::Column;
use crate::db::reference::TableRef;
pub trait Platform: Send + Sync {
fn name(&self) -> &'static str;
fn bind(&self, n: usize, ty: &str) -> String;
fn placeholder(&self, n: usize) -> String;
fn cast_text(&self, expr: &str) -> String;
fn insert_no_columns(&self, table: &str) -> String;
fn returning(&self, pk: &[&Column]) -> Option<String>;
fn is_timestamplike(&self, ty: &str) -> bool;
fn wants_client_uuid(&self, col: &Column) -> bool;
fn check_bindable(&self, col: &Column) -> Result<(), String>;
fn introspect(&self, tref: &TableRef) -> (String, Vec<Option<String>>);
fn next_sequence(&self, seq: &str) -> Option<(String, Vec<Option<String>>)>;
fn session_setup(&self, search_path: &[String]) -> Result<Vec<String>, String>;
}