valence_core/
trait_schema.rs1use crate::schema_api::SchemaPolicyRule;
4
5#[derive(Debug, Clone)]
7pub struct TraitFieldDef {
8 pub name: &'static str,
9 pub field_type: &'static str,
10 pub required: bool,
11}
12
13#[derive(Debug, Clone)]
15pub struct TraitPolicyRules {
16 pub always_allow: &'static [SchemaPolicyRule],
17 pub allow: &'static [SchemaPolicyRule],
18 pub block: &'static [SchemaPolicyRule],
19 pub always_block: &'static [SchemaPolicyRule],
20}
21
22#[derive(Debug, Clone)]
24pub struct TraitPolicies {
25 pub read: Option<&'static TraitPolicyRules>,
26 pub create: Option<&'static TraitPolicyRules>,
27 pub update: Option<&'static TraitPolicyRules>,
28 pub delete: Option<&'static TraitPolicyRules>,
29}
30
31#[derive(Debug, Clone)]
33pub struct TraitDefinition {
34 pub name: &'static str,
35 pub fields: &'static [TraitFieldDef],
36 pub connection_names: &'static [&'static str],
37 pub policies: Option<&'static TraitPolicies>,
38}
39
40pub struct TraitDefinitionInit(pub fn() -> &'static TraitDefinition);
42
43inventory::collect!(TraitDefinitionInit);
44
45pub struct TraitImplementor {
47 pub trait_name: &'static str,
48 pub table_name: &'static str,
49}
50
51inventory::collect!(TraitImplementor);