diff --git a/crates/sdk/src/default_main.rs b/crates/sdk/src/default_main.rs index 27b1173..1ba7d27 100644 --- a/crates/sdk/src/default_main.rs +++ b/crates/sdk/src/default_main.rs @@ -26,6 +26,7 @@ use crate::connector::{Connector, ConnectorSetup, ErrorResponse, Result}; use crate::fetch_metrics::fetch_metrics; use crate::json_rejection::JsonRejection; use crate::json_response::JsonResponse; +use crate::state::ServerState; use crate::tracing::{init_tracing, make_span, on_response}; #[derive(Parser)] @@ -138,37 +139,6 @@ struct CheckHealthCommand { type Port = u16; -#[derive(Debug)] -pub struct ServerState { - configuration: C::Configuration, - state: C::State, - metrics: Registry, -} - -impl Clone for ServerState -where - C::Configuration: Clone, - C::State: Clone, -{ - fn clone(&self) -> Self { - Self { - configuration: self.configuration.clone(), - state: self.state.clone(), - metrics: self.metrics.clone(), - } - } -} - -impl ServerState { - pub fn new(configuration: C::Configuration, state: C::State, metrics: Registry) -> Self { - Self { - configuration, - state, - metrics, - } - } -} - /// A default main function for a connector. /// /// The intent is that this function can replace your `main` function diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index a4741cd..6b0f7fc 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -4,6 +4,7 @@ pub mod default_main; pub mod fetch_metrics; pub mod json_rejection; pub mod json_response; +pub mod state; pub mod tracing; pub use ndc_models as models; diff --git a/crates/sdk/src/state.rs b/crates/sdk/src/state.rs new file mode 100644 index 0000000..e612e85 --- /dev/null +++ b/crates/sdk/src/state.rs @@ -0,0 +1,36 @@ +use crate::connector::Connector; + +#[derive(Debug)] +pub struct ServerState { + pub configuration: C::Configuration, + pub state: C::State, + pub metrics: prometheus::Registry, +} + +impl Clone for ServerState +where + C::Configuration: Clone, + C::State: Clone, +{ + fn clone(&self) -> Self { + Self { + configuration: self.configuration.clone(), + state: self.state.clone(), + metrics: self.metrics.clone(), + } + } +} + +impl ServerState { + pub fn new( + configuration: C::Configuration, + state: C::State, + metrics: prometheus::Registry, + ) -> Self { + Self { + configuration, + state, + metrics, + } + } +}