json_eval_rs/jsoneval/
mod.rs1use std::sync::{Arc, Mutex};
2
3use crate::jsoneval::eval_cache::EvalCache;
4use crate::jsoneval::eval_data::EvalData;
5
6use crate::jsoneval::table_metadata::TableMetadata;
7
8use crate::rlogic::{
9 LogicId, RLogic,
10};
11use crate::jsoneval::types::DependentItem;
12
13use indexmap::{IndexMap, IndexSet};
14
15use serde_json::Value;
16
17pub mod cache;
18pub mod cancellation;
19pub mod dependents;
20pub mod eval_cache;
21pub mod eval_data;
22pub mod evaluate;
23pub mod getters;
24pub mod core;
25pub mod json_parser;
26pub mod layout;
27pub mod logic;
28pub mod parsed_schema;
29pub mod parsed_schema_cache;
30pub mod path_utils;
31pub mod subform_methods;
32pub mod table_evaluate;
33pub mod table_metadata;
34pub mod types;
35pub mod validation;
36
37pub struct JSONEval {
38 pub schema: Arc<Value>,
39 pub engine: Arc<RLogic>,
40 pub evaluations: Arc<IndexMap<String, LogicId>>,
42 pub tables: Arc<IndexMap<String, Value>>,
43 pub table_metadata: Arc<IndexMap<String, TableMetadata>>,
45 pub dependencies: Arc<IndexMap<String, IndexSet<String>>>,
46 pub sorted_evaluations: Arc<Vec<Vec<String>>>,
49 pub dependents_evaluations: Arc<IndexMap<String, Vec<DependentItem>>>,
52 pub rules_evaluations: Arc<Vec<String>>,
54 pub fields_with_rules: Arc<Vec<String>>,
56 pub others_evaluations: Arc<Vec<String>>,
58 pub value_evaluations: Arc<Vec<String>>,
60 pub layout_paths: Arc<Vec<String>>,
62 pub options_templates: Arc<Vec<(String, String, String)>>,
64 pub subforms: IndexMap<String, Box<JSONEval>>,
67
68 pub reffed_by: Arc<IndexMap<String, Vec<String>>>,
70
71 pub conditional_hidden_fields: Arc<Vec<String>>,
73 pub conditional_readonly_fields: Arc<Vec<String>>,
75
76 pub context: Value,
77 pub data: Value,
78 pub evaluated_schema: Value,
79 pub eval_data: EvalData,
80 pub eval_cache: EvalCache,
82 pub cache_enabled: bool,
85 pub(crate) eval_lock: Mutex<()>,
87 pub(crate) cached_msgpack_schema: Option<Vec<u8>>,
90}