feat(cli/org): org document edit via --file + purge removes attachments
This commit is contained in:
@@ -17,10 +17,6 @@ use relicario_core::{
|
||||
/// so this mirrors the personal-vault default
|
||||
/// `AttachmentCaps::per_attachment_max_bytes` at
|
||||
/// crates/relicario-core/src/settings.rs:116.
|
||||
// Attachment API — consumed by `org add document`, Document edit, and purge
|
||||
// landing in Tasks C2/C3; `load_attachment` additionally backs a future
|
||||
// org document read/extract. Allow dead_code until those consumers land.
|
||||
#[allow(dead_code)]
|
||||
pub const DEFAULT_ORG_ATTACHMENT_MAX_BYTES: u64 = 10 * 1024 * 1024;
|
||||
|
||||
pub struct UnlockedOrgVault {
|
||||
@@ -126,14 +122,12 @@ impl UnlockedOrgVault {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn attachment_path(&self, collection_slug: &str, item_id: &ItemId, att_id: &AttachmentId) -> PathBuf {
|
||||
self.root.join("attachments").join(collection_slug)
|
||||
.join(item_id.as_str()).join(format!("{}.enc", att_id.as_str()))
|
||||
}
|
||||
|
||||
/// Encrypt-already-done blob: persist it and return the repo-relative path for git staging.
|
||||
#[allow(dead_code)]
|
||||
pub fn save_attachment(&self, collection_slug: &str, item_id: &ItemId, enc: &EncryptedAttachment) -> Result<String> {
|
||||
let path = self.attachment_path(collection_slug, item_id, &enc.id);
|
||||
if let Some(parent) = path.parent() {
|
||||
@@ -143,6 +137,7 @@ impl UnlockedOrgVault {
|
||||
Ok(format!("attachments/{}/{}/{}.enc", collection_slug, item_id.as_str(), enc.id.as_str()))
|
||||
}
|
||||
|
||||
// Retained for a future `org document read/extract` command (mirrors `org_meta_path` convention).
|
||||
#[allow(dead_code)]
|
||||
pub fn load_attachment(&self, collection_slug: &str, item_id: &ItemId, att_id: &AttachmentId) -> Result<Zeroizing<Vec<u8>>> {
|
||||
let path = self.attachment_path(collection_slug, item_id, att_id);
|
||||
@@ -152,7 +147,6 @@ impl UnlockedOrgVault {
|
||||
|
||||
/// Remove an item's whole attachment directory. Missing dir is NOT an error
|
||||
/// (mirrors `remove_item`'s NotFound-tolerant behavior, for partial-write recovery).
|
||||
#[allow(dead_code)]
|
||||
pub fn remove_item_attachments(&self, collection_slug: &str, item_id: &ItemId) -> Result<()> {
|
||||
let dir = self.root.join("attachments").join(collection_slug).join(item_id.as_str());
|
||||
match fs::remove_dir_all(&dir) {
|
||||
|
||||
Reference in New Issue
Block a user