use crate::Symbol;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum CatalogWritePolicy {
Mutable,
Sealed,
AppendOnly,
Derived,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct CatalogTableSpec {
pub name: Symbol,
pub policy: CatalogWritePolicy,
pub owner: Option<Symbol>,
pub required_fields: Vec<Symbol>,
pub unique_fields: Vec<Vec<Symbol>>,
}
impl CatalogTableSpec {
pub fn new(name: Symbol, policy: CatalogWritePolicy) -> Self {
Self {
name,
policy,
owner: None,
required_fields: Vec::new(),
unique_fields: Vec::new(),
}
}
pub fn with_required_fields(mut self, fields: Vec<Symbol>) -> Self {
self.required_fields = fields;
self
}
}