extern crate self as noema_actix_webapi;
pub mod actix;
pub mod background_task;
pub mod bootstrap;
pub mod clock;
pub mod config;
pub mod cors;
pub mod db;
pub mod error;
pub mod hasher;
pub mod http_client;
pub mod logger;
pub mod modules;
pub mod page;
pub mod request;
pub mod uow;
pub mod validation;
pub mod ws;
pub use background_task::{BackgroundTask, background_task, spawn_background_tasks};
pub use bootstrap::{Application, Error, start};
pub use clock::{Clock, SystemClock};
pub use config::{
ApplicationConfig, CorsConfig, DatabaseConfig, DatabasePoolConfig, Environment,
HttpClientConfig, HttpConfig, LogConfig,
};
pub use cors::{apply_cors_from, cors, cors_from};
pub use db::PgPool;
pub use error::{
CODE_DATABASE, CODE_INTERNAL, CODE_UNAUTHORIZED, CODE_UNAVAILABLE, CODE_VALIDATION, ErrorBody,
HttpError, HttpResult, MappedError, error_response, error_ws_envelope, map_error,
};
pub use hasher::{Argon2Hasher, Hasher};
pub use http_client::{
HttpClient, HttpClientError, Method, OutboundRequest, OutboundResponse, ReqwestHttpClient,
};
pub use logger::{Logger, TracingLogger};
pub use modules::{Infrastructure, Module, Modules, Presentation};
pub use page::{DEFAULT_PAGE, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, PageRequest, PageResult};
pub use request::{
IDEMPOTENCY_HEADER, RequestContext, RequestError, RequestExtra, RequestScope, request_context,
};
pub use uow::{Tx, UnitOfWork};
pub use validation::{
ValidationError, push_result, require_email, require_in_range, require_non_empty,
};
pub use ws::{
Session, SessionContext, SessionHub, SessionId, WsConnection, WsError, WsFanoutMessage,
connect, on_ws_publish, process_origin,
};
pub mod prelude {
pub use crate::background_task::{BackgroundTask, background_task, spawn_background_tasks};
pub use crate::bootstrap::{Application, start};
pub use crate::clock::Clock;
pub use crate::config::{
ApplicationConfig, CorsConfig, DatabasePoolConfig, Environment, HttpClientConfig,
HttpConfig, LogConfig,
};
pub use crate::cors::{cors, cors_from};
pub use crate::error::{
ErrorBody, HttpError, HttpResult, MappedError, error_response, error_ws_envelope, map_error,
};
pub use crate::hasher::Hasher;
pub use crate::http_client::{HttpClient, OutboundRequest, OutboundResponse};
pub use crate::logger::Logger;
pub use crate::modules::{Infrastructure, Module, Modules, Presentation};
pub use crate::page::{PageRequest, PageResult};
pub use crate::request::{
IDEMPOTENCY_HEADER, RequestContext, RequestError, RequestExtra, RequestScope,
request_context,
};
pub use crate::uow::{Tx, UnitOfWork};
pub use crate::validation::{
ValidationError, push_result, require_email, require_in_range, require_non_empty,
};
pub use crate::with_transaction;
pub use crate::ws::{
Session, SessionContext, SessionHub, SessionId, WsConnection, WsError, WsFanoutMessage,
connect, on_ws_publish, process_origin,
};
pub use noema::resolve;
pub use noema::send;
}
noema::dependency!(singleton, ApplicationConfig);
noema::dependency!(singleton, PgPool);
noema::dependency!(singleton, SessionHub);
noema::dependency_as!(singleton, UnitOfWork: crate::uow::PsqlUnitOfWork);
noema::dependency_as!(singleton, Logger: crate::logger::TracingLogger);
noema::dependency_as!(singleton, Hasher: crate::hasher::Argon2Hasher);
noema::dependency_as!(singleton, Clock: crate::clock::SystemClock);
noema::dependency_as!(singleton, HttpClient: crate::http_client::ReqwestHttpClient);