schema_sql_generator/common/
generator_context.rs1use std::cell::RefCell;
2use std::rc::Rc;
3use crate::common::sql_generator_settings::SqlGeneratorSettings;
4use crate::common::sql_writer::SqlWriter;
5
6#[derive(Clone)]
7pub struct GeneratorContext {
8 settings: Rc<SqlGeneratorSettings>,
9 writer: Rc<RefCell<SqlWriter>>,
10}
11
12impl GeneratorContext {
13 pub fn new(settings: SqlGeneratorSettings, writer: SqlWriter) -> Self {
14 Self {
15 settings: Rc::new(settings),
16 writer: Rc::new(RefCell::new(writer)),
17 }
18 }
19
20 pub fn settings(&self) -> &SqlGeneratorSettings {
21 &self.settings
22 }
23
24 pub fn shared_settings(&self) -> Rc<SqlGeneratorSettings> {
25 Rc::clone(&self.settings)
26 }
27
28 pub fn writer(&self) -> Rc<RefCell<SqlWriter>> {
29 Rc::clone(&self.writer)
30 }
31
32 pub fn with_writer<F>(&self, f: F)
33 where
34 F: FnOnce(&mut SqlWriter),
35 {
36 let mut writer = self.writer.borrow_mut();
37 f(&mut writer);
38 }
39}