schema_registry_api/domain/subject/
mod.rs

1mod name;
2
3use crate::{SchemaId, SchemaReference, SchemaType, SchemaVersion};
4
5pub use self::name::*;
6
7/// A subject an associated version
8#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
9pub struct SubjectVersion {
10    /// Name of the subject
11    pub subject: SubjectName,
12    /// Version of the returned schema
13    pub version: SchemaVersion,
14}
15
16/// A subject
17#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct Subject {
20    /// Name of the subject
21    pub subject: SubjectName,
22    /// Id of the schema
23    pub id: SchemaId,
24    /// Version of the schema
25    pub version: SchemaVersion,
26    /// The schema type
27    #[serde(rename = "schema_type", default)]
28    pub schema_type: SchemaType,
29    /// The schema
30    pub schema: String,
31}
32
33/// Register a schema
34#[derive(Debug, Clone, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
35#[serde(rename_all = "camelCase")]
36pub struct RegisterSchema {
37    /// The schema string
38    pub schema: String,
39    /// The schema type
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub schema_type: Option<SchemaType>,
42    /// The schema references
43    #[serde(skip_serializing_if = "Vec::is_empty")]
44    pub references: Vec<SchemaReference>,
45}
46
47/// Registered schema result
48#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
49pub struct RegisteredSchema {
50    /// The schema id
51    pub id: SchemaId,
52}