use crate::{CompatibilityResult, RegisterSchema, SchemaRegistryError, SchemaVersion, SubjectName};
use super::SchemaRegistry;
#[derive(Debug)]
pub struct CompatibilityClient<'sr> {
pub(super) sr: &'sr SchemaRegistry,
}
impl CompatibilityClient<'_> {
#[tracing::instrument(skip(self))]
pub async fn check_version(
&self,
subject: &SubjectName,
version: SchemaVersion,
schema: &RegisterSchema,
verbose: Option<bool>,
) -> Result<CompatibilityResult, SchemaRegistryError> {
let path = format!("compatibility/subjects/{subject}/versions/{version}");
let mut url = self.sr.base_url.join(&path)?;
if let Some(verbose) = verbose {
let query = format!("verbose={verbose}");
url.set_query(Some(&query));
}
self.sr.post(url, schema).await
}
#[tracing::instrument(skip(self))]
pub async fn check_versions(
&self,
subject: &SubjectName,
schema: &RegisterSchema,
verbose: Option<bool>,
) -> Result<CompatibilityResult, SchemaRegistryError> {
let path = format!("compatibility/subjects/{subject}/versions");
let mut url = self.sr.base_url.join(&path)?;
if let Some(verbose) = verbose {
let query = format!("verbose={verbose}");
url.set_query(Some(&query));
}
self.sr.post(url, schema).await
}
}