Skip to main content

schema_sql_generator/common/
sql_generator_settings.rs

1use crate::common::generate_options::GenerateOptions;
2use crate::common::output_mode::OutputMode;
3use schema_model::model::database_model::DatabaseModel;
4use schema_model::model::types::{BooleanMode, DatabaseType, ForeignKeyMode};
5use std::rc::Rc;
6
7#[derive(Debug, Clone)]
8pub struct SqlGeneratorSettings {
9    database_type: DatabaseType,
10    database_model: Rc<DatabaseModel>,
11    statement_separator: String,
12    foreign_key_mode: ForeignKeyMode,
13    boolean_mode: BooleanMode,
14    output_mode: OutputMode,
15    target_postgres_version: u32,
16}
17
18impl SqlGeneratorSettings {
19    pub fn new(database_type: DatabaseType, options: &GenerateOptions) -> Self {
20        Self {
21            database_type,
22            database_model : options.database_model.clone(),
23            statement_separator: ";".to_string(),
24            foreign_key_mode: options.foreign_key_mode,
25            boolean_mode: options.boolean_mode,
26            output_mode: options.output_mode,
27            target_postgres_version: options.target_postgres_version,
28        }
29    }
30
31    pub fn database_type(&self) -> DatabaseType {
32        self.database_type
33    }
34
35    pub fn database_model(&self) -> &Rc<DatabaseModel> {
36        &self.database_model
37    }
38
39    pub fn statement_separator(&self) -> &String {
40        &self.statement_separator
41    }
42
43    pub fn foreign_key_mode(&self) -> ForeignKeyMode {
44        self.foreign_key_mode
45    }
46
47    pub fn boolean_mode(&self) -> BooleanMode {
48        self.boolean_mode
49    }
50
51    pub fn output_mode(&self) -> OutputMode {
52        self.output_mode
53    }
54
55    pub fn target_postgres_version(&self) -> u32 {
56        self.target_postgres_version
57    }
58}