use serde::Serialize;
#[derive(Serialize)]
pub(crate) struct IngestFileEvent<'a> {
pub file: &'a str,
pub name: &'a str,
pub status: &'a str,
pub truncated: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub original_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original_filename: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub action: Option<String>,
pub body_length: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub backend_invoked: Option<&'a str>,
}
#[derive(Serialize)]
pub(crate) struct IngestDryRunBudget<'a> {
pub budget: bool,
pub file: &'a str,
pub name: &'a str,
pub bytes: usize,
pub chunk_count: usize,
pub token_count: usize,
pub partition_count: usize,
pub exceeds_limits: bool,
}
#[derive(Serialize)]
pub(crate) struct IngestSummary {
pub summary: bool,
pub dir: String,
pub pattern: String,
pub recursive: bool,
pub files_total: usize,
pub files_succeeded: usize,
pub files_failed: usize,
pub files_skipped: usize,
pub elapsed_ms: u64,
}
#[derive(Debug)]
pub(crate) struct FileSuccess {
pub memory_id: i64,
pub action: String,
pub body_length: usize,
pub backend_invoked: Option<&'static str>,
}
#[derive(Serialize)]
pub(crate) struct StageProgressEvent<'a> {
pub schema_version: u8,
pub event: &'a str,
pub path: &'a str,
pub ms: u64,
pub entities: usize,
pub relationships: usize,
}