use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct KafkaStreamRecord {
pub topic: String,
pub partition: i32,
pub offset: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp_ms: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
pub value: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub headers: Vec<KafkaHeader>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct KafkaHeader {
pub name: String,
pub value: String,
}
impl KafkaStreamRecord {
pub fn value_bytes(&self) -> &[u8] {
self.value.as_bytes()
}
pub fn key_bytes(&self) -> Option<&[u8]> {
self.key.as_deref().map(str::as_bytes)
}
}
pub type BytesTopicBatch = KafkaStreamRecord;