schema-sql-generator 0.2.0

A set of tools to manage relational database schemas
Documentation
use crate::common::column_constraint_generator::{ColumnConstraintGenerator, DefaultColumnConstraintGenerator};
use crate::common::generator_context::GeneratorContext;
use schema_model::model::column_type::ColumnType;
use schema_model::model::table::Table;

pub struct PostgresColumnConstraintGenerator {
    column_constraint_generator: DefaultColumnConstraintGenerator,
}

impl PostgresColumnConstraintGenerator {
    pub fn new(context: GeneratorContext) -> Self {
        Self {
            column_constraint_generator: DefaultColumnConstraintGenerator::new(context),
        }
    }
}

impl ColumnConstraintGenerator for PostgresColumnConstraintGenerator {
    fn column_check_constraints(&self, table: &Table) -> Vec<String> {
        let boolean_mode = self.column_constraint_generator.context().settings().boolean_mode();
        table.columns_with_check_constraints(boolean_mode)
            .iter()
            .filter(|col| col.column_type() != ColumnType::Enum)
            .map(|col| self.column_constraint_generator.generate_constraint(table, col))
            .collect()
    }
}