use crate::ast::{Expr, IndexKey, TableKeyConstraint};
#[derive(Debug, Clone)]
pub struct EnforcedKey {
pub constraint: TableKeyConstraint,
pub keys: Vec<IndexKey>,
pub index: Option<uqa_core::RelationIdentity>,
pub predicate: Option<Box<Expr>>,
pub constraint_owned: bool,
}
impl std::ops::Deref for EnforcedKey {
type Target = TableKeyConstraint;
fn deref(&self) -> &Self::Target {
&self.constraint
}
}
impl From<TableKeyConstraint> for EnforcedKey {
fn from(constraint: TableKeyConstraint) -> Self {
Self {
keys: constraint
.columns
.iter()
.cloned()
.map(IndexKey::Column)
.collect(),
index: None,
constraint,
predicate: None,
constraint_owned: true,
}
}
}