icydb_schema/validate/
mod.rs1pub mod naming;
4pub mod relation;
5
6use crate::{
7 error::ErrorTree,
8 node::{Schema, VisitableNode},
9 visit::ValidateVisitor,
10};
11
12pub(crate) fn validate_schema(schema: &Schema) -> Result<(), ErrorTree> {
14 let mut errors = validate_nodes(schema);
16
17 validate_global(schema, &mut errors);
19
20 errors.result()
21}
22
23fn validate_nodes(schema: &Schema) -> ErrorTree {
25 let mut visitor = ValidateVisitor::new();
26 schema.accept(&mut visitor);
27
28 visitor.errors
29}
30
31fn validate_global(schema: &Schema, errors: &mut ErrorTree) {
33 naming::validate_entity_naming(schema, errors);
34 relation::validate_same_canister_relations(schema, errors);
35}