sim_lib_expr_tree/
citizen.rs1use sim_citizen::CitizenRegistry;
2use sim_citizen_derive::Citizen;
3use sim_kernel::{Expr, Result, Symbol};
4
5#[derive(Clone, Debug, PartialEq, Citizen)]
10#[citizen(symbol = "expr-tree/SourceRecord", version = 1)]
11pub struct DurableSourceRecord {
12 pub path: String,
14 pub source: Expr,
16 pub revision: u64,
18}
19
20impl Default for DurableSourceRecord {
21 fn default() -> Self {
22 Self {
23 path: "/cell-1".to_owned(),
24 source: Expr::Nil,
25 revision: 0,
26 }
27 }
28}
29
30#[derive(Clone, Debug, Default, PartialEq, Citizen)]
35#[citizen(symbol = "expr-tree/PolicyRecord", version = 1)]
36pub struct DurablePolicyRecord {
37 pub path: String,
39 pub calc_trigger: String,
41 pub source_codec: Option<String>,
43 pub result_codec: Option<String>,
45}
46
47pub fn durable_source_class_symbol() -> Symbol {
49 Symbol::qualified("expr-tree", "SourceRecord")
50}
51
52pub fn durable_policy_class_symbol() -> Symbol {
54 Symbol::qualified("expr-tree", "PolicyRecord")
55}
56
57pub fn expr_tree_citizen_registry() -> Result<CitizenRegistry> {
59 let mut registry = CitizenRegistry::new();
60 registry
61 .register::<DurableSourceRecord>()?
62 .register::<DurablePolicyRecord>()?;
63 Ok(registry)
64}