use crate::{
schema::app::{BelongsTo, FieldId, FieldTy, Model, ModelId, Schema},
stmt,
};
#[derive(Debug, Clone)]
pub struct HasOne {
pub target: ModelId,
pub expr_ty: stmt::Type,
pub pair: FieldId,
}
impl HasOne {
pub fn target<'a>(&self, schema: &'a Schema) -> &'a Model {
schema.model(self.target)
}
pub fn pair<'a>(&self, schema: &'a Schema) -> &'a BelongsTo {
schema.field(self.pair).ty.as_belongs_to_unwrap()
}
}
impl From<HasOne> for FieldTy {
fn from(value: HasOne) -> Self {
Self::HasOne(value)
}
}