use crate::schema_api::SchemaPolicyRule;
#[derive(Debug, Clone)]
pub struct TraitFieldDef {
pub name: &'static str,
pub field_type: &'static str,
pub required: bool,
}
#[derive(Debug, Clone)]
pub struct TraitPolicyRules {
pub always_allow: &'static [SchemaPolicyRule],
pub allow: &'static [SchemaPolicyRule],
pub block: &'static [SchemaPolicyRule],
pub always_block: &'static [SchemaPolicyRule],
}
#[derive(Debug, Clone)]
pub struct TraitPolicies {
pub read: Option<&'static TraitPolicyRules>,
pub create: Option<&'static TraitPolicyRules>,
pub update: Option<&'static TraitPolicyRules>,
pub delete: Option<&'static TraitPolicyRules>,
}
#[derive(Debug, Clone)]
pub struct TraitDefinition {
pub name: &'static str,
pub fields: &'static [TraitFieldDef],
pub connection_names: &'static [&'static str],
pub policies: Option<&'static TraitPolicies>,
}
pub struct TraitDefinitionInit(pub fn() -> &'static TraitDefinition);
inventory::collect!(TraitDefinitionInit);
pub struct TraitImplementor {
pub trait_name: &'static str,
pub table_name: &'static str,
}
inventory::collect!(TraitImplementor);