use pyo3::prelude::*;
use crate::core::WriterCore;
use super::util::extract_key;
#[pyclass(name = "_FuseWriter")]
pub struct FuseWriter {
inner: WriterCore,
}
#[pymethods]
impl FuseWriter {
#[new]
fn new() -> Self {
Self {
inner: WriterCore::new(),
}
}
fn add_object_raw(&mut self, raw_bytes: &[u8]) -> usize {
self.inner.add_object(raw_bytes)
}
fn add_key(&mut self, key: &Bound<'_, PyAny>, obj_id: usize) -> PyResult<()> {
Ok(self.inner.add_key(&extract_key(key)?, obj_id)?)
}
fn build(&self, path: &str) -> PyResult<()> {
let report = self.inner.build(path)?;
println!(
"✅ {} — {} objects · {} keys · {:.1} KB",
path,
report.num_objects,
report.num_keys,
report.file_size as f64 / 1024.0,
);
Ok(())
}
fn __repr__(&self) -> String {
format!(
"_FuseWriter(objects={}, keys={})",
self.inner.num_objects(),
self.inner.num_keys(),
)
}
}