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::table_generator::{DefaultTableGenerator, TableGenerator};
use schema_model::model::table::Table;
use crate::postgresql::postgres_column_constraint_generator::PostgresColumnConstraintGenerator;
use crate::postgresql::postgres_column_generator::PostgresColumnGenerator;
use crate::postgresql::postgres_index_generator::PostgresIndexGenerator;
use crate::postgresql::postgres_key_generator::PostgresKeyGenerator;
use crate::postgresql::postgres_table_constraint_generator::PostgresTableConstraintGenerator;

pub struct PostgresTableGenerator {
    table_generator: DefaultTableGenerator,
}

impl PostgresTableGenerator {
    pub fn new(context: GeneratorContext) -> Self {
        Self {
            table_generator: DefaultTableGenerator::new(
                context.clone(),
                Box::new(PostgresColumnGenerator::new(context.clone())),
                Box::new(PostgresKeyGenerator::new(context.clone())),
                Box::new(PostgresColumnConstraintGenerator::new(context.clone())),
                Box::new(PostgresTableConstraintGenerator::new(context.clone())),
                Box::new(PostgresIndexGenerator::new(context.clone())),
            ),
        }
    }
}

impl TableGenerator for PostgresTableGenerator {
    fn output_tables(&self) {
        self.table_generator.output_tables();
    }

    fn output_table(&self, table: &Table) {
        self.table_generator.output_table_header(table);
    }

    fn output_table_header(&self, table: &Table) {
        self.table_generator.output_table_header(table);
    }

    fn output_table_definition(&self, table: &Table) {
        self.table_generator.output_table_definition(table);
    }

    fn output_table_footer(&self, table: &Table) {
        self.table_generator.output_table_footer(table);
    }

    fn output_indexes(&self, table: &Table) {
        self.table_generator.output_indexes(table);
    }

    fn output_initial_data(&self, table: &Table) {
        self.table_generator.output_initial_data(table);
    }
}