Skip to main content

json_eval_rs/jsoneval/
mod.rs

1
2use std::collections::HashMap;
3use std::sync::{Arc, Mutex};
4
5use crate::jsoneval::eval_cache::EvalCache;
6use crate::jsoneval::eval_data::EvalData;
7
8use crate::jsoneval::table_metadata::TableMetadata;
9
10use crate::rlogic::{
11    LogicId, RLogic,
12};
13use crate::jsoneval::types::DependentItem;
14
15use indexmap::{IndexMap, IndexSet};
16
17use serde_json::Value;
18
19pub mod cache;
20pub mod cancellation;
21pub mod dependents;
22pub mod eval_cache;
23pub mod eval_data;
24pub mod evaluate;
25pub mod getters;
26pub mod core;
27pub mod json_parser;
28pub mod layout;
29pub mod logic;
30pub mod parsed_schema;
31pub mod parsed_schema_cache;
32pub mod path_utils;
33pub mod subform_methods;
34pub mod table_evaluate;
35pub mod table_metadata;
36pub mod types;
37pub mod validation;
38
39pub struct JSONEval {
40    pub schema: Arc<Value>,
41    pub engine: Arc<RLogic>,
42    pub evaluations: Arc<IndexMap<String, LogicId>>,
43    pub tables: Arc<IndexMap<String, Value>>,
44    pub table_metadata: Arc<IndexMap<String, TableMetadata>>,
45    pub dependencies: Arc<IndexMap<String, IndexSet<String>>>,
46    pub sorted_evaluations: Arc<Vec<Vec<String>>>,
47    pub dependents_evaluations: Arc<IndexMap<String, Vec<DependentItem>>>,
48    pub rules_evaluations: Arc<Vec<String>>,
49    pub fields_with_rules: Arc<Vec<String>>,
50    pub others_evaluations: Arc<Vec<String>>,
51    pub value_evaluations: Arc<Vec<String>>,
52    pub layout_paths: Arc<Vec<String>>,
53    pub options_templates: Arc<Vec<(String, String, String)>>,
54    pub subforms: IndexMap<String, Box<JSONEval>>,
55
56    pub reffed_by: Arc<IndexMap<String, Vec<String>>>,
57
58    pub conditional_hidden_fields: Arc<Vec<String>>,
59    pub conditional_readonly_fields: Arc<Vec<String>>,
60
61    pub context: Value,
62    pub data: Value,
63    pub evaluated_schema: Value,
64    pub eval_data: EvalData,
65    pub eval_cache: EvalCache,
66    pub cache_enabled: bool,
67    pub(crate) eval_lock: Mutex<()>,
68    pub(crate) cached_msgpack_schema: Option<Vec<u8>>,
69    pub(crate) regex_cache: std::sync::RwLock<HashMap<String, regex::Regex>>,
70}