use crate::blueprint::conversions::raw_callable2registered_callable;
use crate::blueprint::reflection::RawCallable;
use pavex_bp_schema::{Blueprint as BlueprintSchema, Component, PostProcessingMiddleware};
pub struct RegisteredPostProcessingMiddleware<'a> {
pub(crate) blueprint: &'a mut BlueprintSchema,
pub(crate) component_id: usize,
}
impl<'a> RegisteredPostProcessingMiddleware<'a> {
#[track_caller]
pub fn error_handler(mut self, error_handler: RawCallable) -> Self {
let callable = raw_callable2registered_callable(error_handler);
self.post_processing_middleware().error_handler = Some(callable);
self
}
fn post_processing_middleware(&mut self) -> &mut PostProcessingMiddleware {
let component = &mut self.blueprint.components[self.component_id];
let Component::PostProcessingMiddleware(c) = component else {
unreachable!("The component should be a post-processing middleware")
};
c
}
}