use dsh_sdk::schema_store::SchemaStoreClient;
use dsh_sdk::schema_store::types::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = SchemaStoreClient::new();
let schema = r#"
{
"type": "record",
"name": "Test",
"fields": [
{"name": "name", "type": "string"},
{"name": "age", "type": "int"}
]
}
"#;
let subject_name =
SubjectName::new_topic_name_strategy("scratch.topic-name.tenant-name", false); let schema: RawSchemaWithType = schema.try_into()?;
let schema_id = client.subject_add_schema(&subject_name, schema).await?;
println!("Registered schema with id: {}\n", schema_id);
let raw_schema = client.schema(schema_id).await?;
println!("Schema by id {}: {:#?}\n", schema_id, raw_schema);
let schemas = client.subjects().await?;
println!("List all registred subjects: {:#?}\n", schemas);
let subject_name: SubjectName = "scratch.topic-name.tenant-name-value".try_into()?;
let schemas_for_subject = client.subject_all_schemas(&subject_name).await?;
println!("List all schemas for subject: {:#?}\n", schemas_for_subject);
let latest_schema = client
.subject_raw_schema(
&"scratch.topic-name.tenant-name-value".try_into()?,
SubjectVersion::Latest,
)
.await?;
println!("Latest schema for subject: {:#?}\n", latest_schema);
Ok(())
}