Skip to main content

NestForgeFactory

Struct NestForgeFactory 

Source
pub struct NestForgeFactory<M: ModuleDefinition> { /* private fields */ }
Expand description

The main entry point for creating a NestForge application.

It handles the bootstrap process:

  1. Creating the DI Container.
  2. Initializing the Module Graph (resolving imports and providers).
  3. Merging all Controller routers into a single Axum app.
  4. Attaching global middleware, guards, interceptors, and exception filters.

§Example

use nestforge_http::NestForgeFactory;

#[tokio::main]
async fn main() {
    let app = NestForgeFactory::<AppModule>::create()
        .expect("failed to start")
        .listen(3000)
        .await;
}

Implementations§

Source§

impl<M: ModuleDefinition> NestForgeFactory<M>

Source

pub fn create() -> Result<Self>

Creates a new application instance from the root module.

This triggers the DI container initialization and module lifecycle hooks (e.g., on_module_init).

Source

pub fn with_global_prefix(self, prefix: impl Into<String>) -> Self

Sets a global prefix for all routes (e.g., “api”).

Source

pub fn with_version(self, version: impl Into<String>) -> Self

Sets a global API version for all routes (e.g., “v1”).

Source

pub fn use_guard<G>(self) -> Self
where G: Guard + Default,

Registers a global guard.

Global guards run for every route in the application.

Source

pub fn use_interceptor<I>(self) -> Self
where I: Interceptor + Default,

Registers a global interceptor.

Global interceptors wrap every route handler.

Source

pub fn use_exception_filter<F>(self) -> Self

Registers a global exception filter.

Catches unhandled exceptions from any route.

Source

pub fn use_middleware<T>(self) -> Self

Applies middleware to the application.

Use the builder to select which routes the middleware applies to.

Source

pub fn configure_middleware<F>(self, configure: F) -> Self
where F: FnOnce(&mut MiddlewareConsumer),

Advanced middleware configuration using a consumer builder.

Source

pub fn with_auth_resolver<F, Fut>(self, resolver: F) -> Self
where F: Fn(Option<String>, Container) -> Fut + Send + Sync + 'static, Fut: Future<Output = Result<Option<AuthIdentity>, HttpException>> + Send + 'static,

Sets the authentication resolver.

This function is called for every request to resolve the AuthIdentity from the bearer token.

Source

pub fn merge_router(self, router: Router<Container>) -> Self

Merges an external Axum router into the application.

Useful for integrating other libraries or raw Axum handlers.

Source

pub fn container(&self) -> &Container

Returns a reference to the underlying DI Container.

Source

pub fn into_router(self) -> Router

Consumes the factory and returns the fully configured Axum Router.

Use this if you want to run the app with your own server (e.g. Lambda, Shuttle).

Source

pub async fn listen(self, port: u16) -> Result<()>

Starts the HTTP server on the specified port.

This will block the current thread (it should be awaited). Upon shutdown (Ctrl+C), it runs the on_module_destroy and on_application_shutdown hooks.

Auto Trait Implementations§

§

impl<M> Freeze for NestForgeFactory<M>

§

impl<M> !RefUnwindSafe for NestForgeFactory<M>

§

impl<M> Send for NestForgeFactory<M>

§

impl<M> Sync for NestForgeFactory<M>

§

impl<M> Unpin for NestForgeFactory<M>
where M: Unpin,

§

impl<M> UnsafeUnpin for NestForgeFactory<M>

§

impl<M> !UnwindSafe for NestForgeFactory<M>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoInjectableResult<T> for T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,