ckb_jsonrpc_types/
json_schema.rs

1use 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}