schema-sql-generator 0.2.0

A set of tools to manage relational database schemas
Documentation
use crate::common::generator_context::GeneratorContext;
use crate::common::sql_generator::{DefaultSqlGenerator, SqlGenerator};
use crate::sqlserver::sqlserver_function_generator::SqlServerFunctionGenerator;
use crate::sqlserver::sqlserver_index_generator::SqlServerIndexGenerator;
use crate::sqlserver::sqlserver_other_sql_generator::SqlServerOtherSqlGenerator;
use crate::sqlserver::sqlserver_procedure_generator::SqlServerProcedureGenerator;
use crate::sqlserver::sqlserver_relation_generator::SqlServerRelationGenerator;
use crate::sqlserver::sqlserver_table_generator::SqlServerTableGenerator;
use crate::sqlserver::sqlserver_trigger_generator::SqlServerTriggerGenerator;
use crate::sqlserver::sqlserver_view_generator::SqlServerViewGenerator;

pub struct SqlServerGenerator {
    sql_generator: DefaultSqlGenerator,
}

impl SqlServerGenerator {
    pub fn new(context: GeneratorContext) -> Self {
        let sql_generator = DefaultSqlGenerator::new(
            context.clone(),
            Box::new(SqlServerTableGenerator::new(context.clone())),
            Box::new(SqlServerRelationGenerator::new(context.clone())),
            Box::new(SqlServerIndexGenerator::new(context.clone())),
            Box::new(SqlServerFunctionGenerator::new(context.clone())),
            Box::new(SqlServerViewGenerator::new(context.clone())),
            Box::new(SqlServerProcedureGenerator::new(context.clone())),
            Box::new(SqlServerTriggerGenerator::new(context.clone())),
            Box::new(SqlServerOtherSqlGenerator::new(context.clone())),
        );

        Self {
            sql_generator,
        }
    }
}

impl SqlGenerator for SqlServerGenerator {
    fn context(&self) -> &GeneratorContext {
        self.sql_generator.context()
    }

    fn generate(&self) {
        self.sql_generator.generate()
    }

    fn output_sql(&self) {
        self.sql_generator.output_sql();
    }

    fn output_header(&self) {
        self.sql_generator.output_header();
    }

    fn output_tables(&self) {
        self.sql_generator.output_tables();
    }

    fn output_relations(&self) {
        self.sql_generator.output_relations();
    }

    fn output_indexes(&self) {
        self.sql_generator.output_indexes();
    }

    fn output_triggers(&self) {
        self.sql_generator.output_triggers();
    }

    fn output_functions(&self) {
        self.sql_generator.output_functions();
    }

    fn output_views(&self) {
        self.sql_generator.output_views();
    }

    fn output_procedures(&self) {
        self.sql_generator.output_procedures();
    }

    fn output_other_sql_top(&self) {
        self.sql_generator.output_other_sql_top();
    }

    fn output_other_sql_bottom(&self) {
        self.sql_generator.output_other_sql_bottom();
    }
}