agtrace_runtime/storage/
fs.rs1use crate::{Error, Result};
2use agtrace_index::Database;
3
4#[derive(Debug, Clone)]
5pub struct RawFileContent {
6 pub path: String,
7 pub content: String,
8}
9
10pub fn get_raw_files(db: &Database, session_id: &str) -> Result<Vec<RawFileContent>> {
11 let resolved_id = if session_id.len() < 36 {
13 db.find_session_by_prefix(session_id)?
14 .ok_or_else(|| Error::InvalidOperation(format!("Session not found: {}", session_id)))?
15 } else {
16 session_id.to_string()
17 };
18
19 let log_files = db.get_session_files(&resolved_id)?;
20
21 let mut contents = Vec::new();
22 for log_file in &log_files {
23 let content = std::fs::read_to_string(&log_file.path)?;
24 contents.push(RawFileContent {
25 path: log_file.path.clone(),
26 content,
27 });
28 }
29
30 Ok(contents)
31}