use schema_model::model::column::Column;
use schema_model::model::table::Table;
use crate::common::column_generator::{ColumnGenerator, DefaultColumnGenerator};
use crate::common::generator_context::GeneratorContext;
use crate::sqlserver::sqlserver_column_type_generator::SqlServerColumnTypeGenerator;
pub struct SqlServerColumnGenerator {
column_generator: DefaultColumnGenerator,
}
impl SqlServerColumnGenerator {
pub fn new(context: GeneratorContext) -> Self {
Self {
column_generator: DefaultColumnGenerator::new(
context.clone(),
Box::new(SqlServerColumnTypeGenerator::new(context.clone())),
),
}
}
}
impl ColumnGenerator for SqlServerColumnGenerator {
fn column_definitions(&self, table: &Table) -> Vec<String> {
self.column_generator.column_definitions(table)
}
fn column_sql(&self, table: &Table, column: &Column) -> String {
self.column_generator.column_sql(table, column)
}
fn column_options(&self, table: &Table, column: &Column) -> String {
self.column_generator.column_options(table, column)
}
fn default_value(&self, table: &Table, column: &Column) -> Option<String> {
self.column_generator.default_value(table, column)
}
}