#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ModelNameSource {
#[default]
TitleFirst,
PropertyKeyFirst,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum DedupeMode {
Disabled,
Functional,
#[default]
Full,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CodeGenSettings {
pub model_name_source: ModelNameSource,
pub dedupe_mode: DedupeMode,
}
impl Default for CodeGenSettings {
fn default() -> Self {
Self {
model_name_source: ModelNameSource::TitleFirst,
dedupe_mode: DedupeMode::Full,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct CodeGenSettingsBuilder {
model_name_source: Option<ModelNameSource>,
dedupe_mode: Option<DedupeMode>,
}
impl CodeGenSettingsBuilder {
#[must_use]
pub fn model_name_source(mut self, value: ModelNameSource) -> Self {
self.model_name_source = Some(value);
self
}
#[must_use]
pub fn dedupe_mode(mut self, value: DedupeMode) -> Self {
self.dedupe_mode = Some(value);
self
}
#[must_use]
pub fn build(self) -> CodeGenSettings {
CodeGenSettings {
model_name_source: self.model_name_source.unwrap_or_default(),
dedupe_mode: self.dedupe_mode.unwrap_or_default(),
}
}
}
impl CodeGenSettings {
#[must_use]
pub fn builder() -> CodeGenSettingsBuilder {
CodeGenSettingsBuilder::default()
}
}