batch_mode_process_response/
save_failed_entries.rs

1// ---------------- [ File: src/save_failed_entries.rs ]
2crate::ix!();
3
4pub async fn save_failed_entries(
5    workspace:      &dyn BatchWorkspaceInterface,
6    failed_entries: &[&BatchResponseRecord],
7) -> Result<(), ErrorSavingFailedBatchEntries> {
8
9    info!("saving failed entries: {:#?}", failed_entries);
10
11    // Serialize the failed entries to JSON Lines format
12    let mut serialized_entries = String::new();
13    for entry in failed_entries {
14        let json_line = serde_json::to_string(entry)?;
15        serialized_entries.push_str(&json_line);
16        serialized_entries.push('\n');
17    }
18
19    // Append to the failed entries file
20    use tokio::io::AsyncWriteExt;
21    let mut file = tokio::fs::OpenOptions::new()
22        .create(true)
23        .append(true)
24        .open(workspace.failed_items_dir())
25        .await?;
26    file.write_all(serialized_entries.as_bytes()).await?;
27
28    Ok(())
29}