sql_splitter/
json_schema.rs1use schemars::{generate::SchemaSettings, transform::RestrictFormats, Schema};
7use std::collections::BTreeMap;
8
9pub fn all_schemas() -> BTreeMap<&'static str, Schema> {
12 let settings = SchemaSettings::default().with_transform(RestrictFormats::default());
13 let generator = settings.into_generator();
14
15 let mut schemas = BTreeMap::new();
16
17 schemas.insert(
18 "analyze",
19 generator
20 .clone()
21 .into_root_schema_for::<crate::cmd::analyze::AnalyzeJsonOutput>(),
22 );
23
24 schemas.insert(
25 "convert",
26 generator
27 .clone()
28 .into_root_schema_for::<crate::cmd::convert::ConvertJsonOutput>(),
29 );
30
31 schemas.insert(
32 "graph",
33 generator
34 .clone()
35 .into_root_schema_for::<crate::graph::format::json::ErdJson>(),
36 );
37
38 schemas.insert(
39 "merge",
40 generator
41 .clone()
42 .into_root_schema_for::<crate::cmd::merge::MergeJsonOutput>(),
43 );
44
45 schemas.insert(
46 "redact",
47 generator
48 .clone()
49 .into_root_schema_for::<crate::redactor::RedactStats>(),
50 );
51
52 schemas.insert(
53 "sample",
54 generator
55 .clone()
56 .into_root_schema_for::<crate::cmd::sample::SampleJsonOutput>(),
57 );
58
59 schemas.insert(
60 "shard",
61 generator
62 .clone()
63 .into_root_schema_for::<crate::cmd::shard::ShardJsonOutput>(),
64 );
65
66 schemas.insert(
67 "split",
68 generator
69 .clone()
70 .into_root_schema_for::<crate::cmd::split::SplitJsonOutput>(),
71 );
72
73 schemas.insert(
74 "validate",
75 generator.into_root_schema_for::<crate::validate::ValidationSummary>(),
76 );
77
78 schemas
79}
80
81pub fn get_schema(command: &str) -> Option<Schema> {
83 all_schemas().remove(command)
84}
85
86pub fn schema_names() -> Vec<&'static str> {
88 all_schemas().keys().copied().collect()
89}