use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
pub enum RelationshipResolution {
#[default]
Auto,
AlwaysAssociative,
AlwaysMerge,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
pub enum SpecializationStrategy {
#[default]
OneTablePerClass,
SingleTable,
OneTablePerChild,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
pub enum ComplexAttributeStrategy {
#[default]
SeparateTable,
Flatten,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConvertOptions {
pub relationship: RelationshipResolution,
pub specialization: SpecializationStrategy,
pub complex_attribute: ComplexAttributeStrategy,
pub modern_naming: bool,
pub sanitize_identifiers: bool,
}
impl ConvertOptions {
pub fn pk_suffix(&self) -> &'static str {
if self.modern_naming { "_id" } else { "_pk" }
}
pub fn fk_suffix(&self) -> &'static str {
if self.modern_naming { "_id" } else { "_fk" }
}
}