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::sqlite::sqlite_function_generator::SqliteFunctionGenerator;
use crate::sqlite::sqlite_index_generator::SqliteIndexGenerator;
use crate::sqlite::sqlite_other_sql_generator::SqliteOtherSqlGenerator;
use crate::sqlite::sqlite_procedure_generator::SqliteProcedureGenerator;
use crate::sqlite::sqlite_relation_generator::SqliteRelationGenerator;
use crate::sqlite::sqlite_table_generator::SqliteTableGenerator;
use crate::sqlite::sqlite_trigger_generator::SqliteTriggerGenerator;
use crate::sqlite::sqlite_view_generator::SqliteViewGenerator;

pub struct SqliteGenerator {
    sql_generator: DefaultSqlGenerator,
}

impl SqliteGenerator {
    pub fn new(context: GeneratorContext) -> Self {
        let sql_generator = DefaultSqlGenerator::new(
            context.clone(),
            Box::new(SqliteTableGenerator::new(context.clone())),
            Box::new(SqliteRelationGenerator::new(context.clone())),
            Box::new(SqliteIndexGenerator::new(context.clone())),
            Box::new(SqliteFunctionGenerator::new(context.clone())),
            Box::new(SqliteViewGenerator::new(context.clone())),
            Box::new(SqliteProcedureGenerator::new(context.clone())),
            Box::new(SqliteTriggerGenerator::new(context.clone())),
            Box::new(SqliteOtherSqlGenerator::new(context.clone())),
        );

        Self {
            sql_generator,
        }
    }
}

impl SqlGenerator for SqliteGenerator {
    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();
    }
}