feat: real XMP sidecar adapter, replaces LogSidecarWriter stubs
- adapters-sidecar: XmpSidecarWriter using xmp_toolkit - Writes StructuredData → XMP with EXIF/DC/XMP namespace routing - Reads XMP back to StructuredData - Wired into bootstrap + worker, deleted both LogSidecarWriter stubs
This commit is contained in:
@@ -13,6 +13,7 @@ application = { workspace = true }
|
||||
adapters-auth = { workspace = true }
|
||||
|
||||
adapters-storage = { workspace = true, features = ["s3"] }
|
||||
adapters-sidecar = { workspace = true }
|
||||
adapters-nats = { workspace = true }
|
||||
adapters-event-transport = { workspace = true }
|
||||
async-nats = { workspace = true }
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pub mod config;
|
||||
pub mod factory;
|
||||
pub mod log_sidecar_writer;
|
||||
pub mod services;
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
use async_trait::async_trait;
|
||||
use domain::{errors::DomainError, ports::SidecarWriterPort, value_objects::StructuredData};
|
||||
|
||||
pub struct LogSidecarWriter;
|
||||
|
||||
#[async_trait]
|
||||
impl SidecarWriterPort for LogSidecarWriter {
|
||||
fn format_name(&self) -> &str {
|
||||
"log_noop"
|
||||
}
|
||||
|
||||
async fn write_sidecar(&self, _data: &StructuredData, path: &str) -> Result<(), DomainError> {
|
||||
tracing::info!(path, "sidecar write (no-op)");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn read_sidecar(&self, path: &str) -> Result<StructuredData, DomainError> {
|
||||
tracing::info!(path, "sidecar read (no-op)");
|
||||
Ok(StructuredData::new())
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ use tracing::info;
|
||||
|
||||
mod config;
|
||||
mod factory;
|
||||
mod log_sidecar_writer;
|
||||
mod services;
|
||||
|
||||
#[tokio::main]
|
||||
|
||||
@@ -9,13 +9,12 @@ use application::sidecar::{
|
||||
};
|
||||
use presentation::state::SidecarHandlers;
|
||||
|
||||
use crate::log_sidecar_writer::LogSidecarWriter;
|
||||
|
||||
pub fn build(pool: &PgPool) -> SidecarHandlers {
|
||||
let metadata_repo = Arc::new(PostgresAssetMetadataRepository::new(pool.clone()));
|
||||
let asset_repo = Arc::new(PostgresAssetRepository::new(pool.clone()));
|
||||
let sidecar_repo = Arc::new(PostgresSidecarRepository::new(pool.clone()));
|
||||
let sidecar_writer: Arc<LogSidecarWriter> = Arc::new(LogSidecarWriter);
|
||||
let sidecar_writer: Arc<adapters_sidecar::XmpSidecarWriter> =
|
||||
Arc::new(adapters_sidecar::XmpSidecarWriter);
|
||||
|
||||
let export = Arc::new(ExportSidecarHandler::new(
|
||||
metadata_repo.clone(),
|
||||
|
||||
Reference in New Issue
Block a user