Skip to main content

zart_api/
state.rs

1//! Shared Axum application state.
2
3use std::sync::Arc;
4use zart::DurableApi;
5use zart::DurableScheduler;
6
7/// State injected into every route handler via Axum's `State` extractor.
8#[derive(Clone)]
9pub struct AppState {
10    pub durable: Arc<dyn DurableApi>,
11}
12
13impl AppState {
14    pub fn new(durable: Arc<dyn DurableApi>) -> Self {
15        Self { durable }
16    }
17}
18
19/// State for admin route handlers.
20///
21/// Requires a concrete `DurableScheduler` because admin operations use
22/// concrete return types (not object-safe trait methods).
23#[derive(Clone)]
24pub struct AdminState {
25    pub scheduler: Arc<DurableScheduler>,
26}