#[cfg(feature = "ws")]
pub use autumn_macros::ws;
pub use autumn_macros::{
cached, delete, get, main, post, put, routes, scheduled, secured, service, static_get,
static_routes, tasks,
};
#[cfg(feature = "maud")]
pub use maud::{Markup, PreEscaped, html};
#[cfg(feature = "db")]
pub use crate::db::Db;
pub use crate::extract::Form;
pub use crate::extract::Json;
pub use crate::extract::Path;
pub use crate::extract::Query;
#[cfg(feature = "flash")]
pub use crate::flash::{Flash, FlashLevel, FlashMessage};
#[cfg(feature = "htmx")]
pub use crate::htmx::HxRequest;
#[cfg(feature = "htmx")]
pub use crate::htmx::HxResponseExt;
pub use crate::sse::{Event, Sse};
pub use crate::error::{AutumnError, AutumnResult};
pub use crate::validation::{Valid, ValidateExt, Validated};
#[cfg(feature = "db")]
pub use crate::hooks::{
DraftField, FieldDiff, MutationContext, MutationHooks, MutationOp, Patch, UpdateDraft,
};
pub use crate::auth::Auth;
pub use crate::session::Session;
pub use crate::security::CsrfToken;
pub use crate::state::AppState;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn prelude_types_are_accessible() {
#[cfg(feature = "db")]
let _state = AppState {
extensions: std::sync::Arc::new(
std::sync::Mutex::new(std::collections::HashMap::new()),
),
pool: None,
profile: None,
started_at: std::time::Instant::now(),
health_detailed: false,
probes: crate::probe::ProbeState::ready_for_test(),
metrics: crate::middleware::MetricsCollector::new(),
log_levels: crate::actuator::LogLevels::new("info"),
task_registry: crate::actuator::TaskRegistry::new(),
config_props: crate::actuator::ConfigProperties::default(),
#[cfg(feature = "ws")]
channels: crate::channels::Channels::new(32),
#[cfg(feature = "ws")]
shutdown: tokio_util::sync::CancellationToken::new(),
};
#[cfg(not(feature = "db"))]
let _state = AppState {
extensions: std::sync::Arc::new(
std::sync::Mutex::new(std::collections::HashMap::new()),
),
profile: None,
started_at: std::time::Instant::now(),
health_detailed: false,
probes: crate::probe::ProbeState::ready_for_test(),
metrics: crate::middleware::MetricsCollector::new(),
log_levels: crate::actuator::LogLevels::new("info"),
task_registry: crate::actuator::TaskRegistry::new(),
config_props: crate::actuator::ConfigProperties::default(),
#[cfg(feature = "ws")]
channels: crate::channels::Channels::new(32),
#[cfg(feature = "ws")]
shutdown: tokio_util::sync::CancellationToken::new(),
};
let _err: AutumnResult<()> = Ok(());
}
#[test]
fn json_type_works_through_prelude() {
let json: Json<&str> = Json("ok");
assert_eq!(json.0, "ok");
}
#[test]
fn error_types_work_through_prelude() {
let err = AutumnError::bad_request_msg("test");
let result: AutumnResult<()> = Err(err);
assert!(result.is_err());
}
#[cfg(feature = "maud")]
#[test]
fn maud_types_work_through_prelude() {
let markup: Markup = html! { "hello" };
assert!(markup.into_string().contains("hello"));
}
}