sea_query/
schema.rs

1//! Schema definition & alternations statements
2
3use crate::{ForeignKeyStatement, IndexStatement, TableStatement, backend::SchemaBuilder};
4
5#[allow(clippy::large_enum_variant)]
6#[derive(Debug, Clone)]
7#[non_exhaustive]
8pub enum SchemaStatement {
9    TableStatement(TableStatement),
10    IndexStatement(IndexStatement),
11    ForeignKeyStatement(ForeignKeyStatement),
12}
13
14pub trait SchemaStatementBuilder {
15    /// Build corresponding SQL statement for certain database backend and return SQL string
16    fn build<T: SchemaBuilder>(&self, schema_builder: T) -> String;
17
18    /// Build corresponding SQL statement for certain database backend and return SQL string
19    fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String;
20
21    /// Build corresponding SQL statement for certain database backend and return SQL string
22    fn to_string<T: SchemaBuilder>(&self, schema_builder: T) -> String {
23        self.build(schema_builder)
24    }
25}