ckb_jsonrpc_types/
json_schema.rs1use crate::{Byte32, Uint32, Uint64, Uint128};
2use schemars::JsonSchema;
3
4macro_rules! impl_json_schema_for_type {
5 ($type:ty, $inner_ty:ty, $name:expr) => {
6 impl JsonSchema for $type {
7 fn schema_name() -> String {
8 String::from($name)
9 }
10 fn json_schema(gn: &mut schemars::r#gen::SchemaGenerator) -> schemars::schema::Schema {
11 gn.subschema_for::<$inner_ty>().into_object().into()
12 }
13 }
14 };
15}
16
17impl_json_schema_for_type!(Byte32, [u8; 32], "Byte32");
18impl_json_schema_for_type!(Uint32, u32, "Uint32");
19impl_json_schema_for_type!(Uint64, u64, "Uint64");
20impl_json_schema_for_type!(Uint128, u128, "Uint128");
21
22pub fn u256_json_schema(
23 _schemars: &mut schemars::r#gen::SchemaGenerator,
24) -> schemars::schema::Schema {
25 schemars::schema::SchemaObject {
26 instance_type: Some(schemars::schema::InstanceType::String.into()),
27 format: Some("uint256".to_string()),
28 ..Default::default()
29 }
30 .into()
31}
32
33pub fn rational_u256(_schemars: &mut schemars::r#gen::SchemaGenerator) -> schemars::schema::Schema {
34 schemars::schema::SchemaObject {
35 instance_type: Some(schemars::schema::InstanceType::String.into()),
36 format: Some("rational_u256".to_string()),
37 ..Default::default()
38 }
39 .into()
40}