use syn::Ident;
use super::ReferentialAction;
#[derive(Debug, Default, Clone)]
pub struct StorageConfig {
pub is_id: bool,
pub is_auto: bool,
pub belongs_to: Option<Ident>,
pub on_delete: Option<ReferentialAction>
}
impl StorageConfig {
#[must_use]
pub fn is_relation(&self) -> bool {
self.belongs_to.is_some()
}
}
#[cfg(test)]
mod tests {
use proc_macro2::Span;
use super::*;
#[test]
fn default_is_not_special() {
let config = StorageConfig::default();
assert!(!config.is_id);
assert!(!config.is_auto);
assert!(!config.is_relation());
assert!(config.on_delete.is_none());
}
#[test]
fn belongs_to_is_relation() {
let config = StorageConfig {
is_id: false,
is_auto: false,
belongs_to: Some(Ident::new("User", Span::call_site())),
on_delete: None
};
assert!(config.is_relation());
}
#[test]
fn belongs_to_with_on_delete() {
let config = StorageConfig {
is_id: false,
is_auto: false,
belongs_to: Some(Ident::new("User", Span::call_site())),
on_delete: Some(ReferentialAction::Cascade)
};
assert!(config.is_relation());
assert_eq!(config.on_delete, Some(ReferentialAction::Cascade));
}
}