use crate::prelude::*;
use core::any::Any;
mod column;
mod index;
mod param;
mod table;
mod to_sql;
mod tuple;
mod view;
pub use column::*;
pub use index::*;
pub use param::*;
pub use table::*;
pub use to_sql::*;
pub use view::*;
use crate::sql::SQL;
pub trait SQLSchema<'a, T, V: SQLParam + 'a>: ToSQL<'a, V> {
const NAME: &'static str;
const TYPE: T;
const SQL: &'static str;
fn sql(&self) -> SQL<'a, V> {
SQL::raw(Self::SQL)
}
}
pub trait SQLSchemaType: core::fmt::Debug + Any + Send + Sync {}
pub trait SQLSchemaImpl: Any + Send + Sync {
fn create_statements(&self) -> crate::error::Result<Box<dyn Iterator<Item = String> + '_>>;
}