//! Placeholder S3-compatible blob backend (D23).
//!
//! Real implementation is deferred per the trigger-based discipline
//! (see `docs/storage/blob-backends.md` when authored). This module
//! reserves the namespace and the feature flag so a future spike can
//! drop in the impl without breaking consumer APIs.

use crate::backend::BlobBackend;
use crate::error::{Error, Result};
use crate::store::BlobId;

/// S3-compatible blob backend — not yet implemented.
#[derive(Debug, Default)]
pub struct S3Blobs;

impl BlobBackend for S3Blobs {
    fn put(&self, _bytes: &[u8]) -> Result<BlobId> {
        Err(Error::Persist(
            "S3Blobs backend not implemented (D23 placeholder)".to_string(),
        ))
    }

    fn get(&self, _id: &BlobId) -> Result<Vec<u8>> {
        Err(Error::Persist(
            "S3Blobs backend not implemented (D23 placeholder)".to_string(),
        ))
    }

    fn exists(&self, _id: &BlobId) -> bool {
        false
    }

    fn list_prefix(&self, _prefix_hex: &str) -> Result<Vec<BlobId>> {
        Err(Error::Persist(
            "S3Blobs backend not implemented (D23 placeholder)".to_string(),
        ))
    }
}
