Skip to main content

Server

Struct Server 

Source
pub struct Server { /* private fields */ }
Expand description

Represents the high-level server controller responsible for loading configuration, applying custom setup, and running the application.

This structure encapsulates CLI arguments, server settings, and an optional configuration callback for the Actix-Web service.

Implementations§

Source§

impl Server

Source

pub fn global() -> Result<&'static (dyn GlobalServer + Send + Sync)>

Returns a reference to the globally initialized Server.

§Examples
use rust_microservice::Server;

let server = Server::global();
Source

pub fn global_server() -> Option<&'static Server>

Returns a reference to the globally initialized Server, if it exists.

This function provides access to the global server instance managed through the GlobalServer trait.

§Examples
use rust_microservice::Server;

let server = Server::global_server();
Source

pub fn set_global(server: Server)

Sets the global Server instance.

This function should be called exactly once, typically during application startup.

§Examples
use rust_microservice::Server;

let server = Server::new("0.1.3".to_string(), None);
Server::set_global(server);
Source

pub fn new(app_version: String, banner: Option<String>) -> Self

Creates a new empty Server instance with no configuration loaded.

Useful as the starting point for building and initializing the server lifecycle.

Source

pub async fn new_with_settings(settings: Settings) -> Result<Self>

Source

pub async fn init(self) -> Result<Self>

Loads CLI arguments and resolves the application configuration.

This method parses command-line arguments, attempts to load the server settings, and stores both inside the Server instance. Panics if configuration loading fails.

§Returns

The updated Server instance.

Source

pub fn configure(self, fnconfig: Option<fn(&mut ServiceConfig)>) -> Self

Applies a custom Actix-Web configuration callback to the server.

This allows the application to register routes or middlewares before the server is executed.

§Parameters
  • fnconfig: Optional function used to configure ServiceConfig.
§Returns

The updated Server instance.

Source

pub async fn intialize_database(self) -> Result<Self>

Initializes the database connections using the previously loaded settings.

This method creates and initializes all required database connections, including the BigQuery client, based on the application settings. It must be called after the settings have been loaded.

§Behavior
  • Validates that the application settings are available.
  • Instantiates the ServerDatabase using the provided settings.
  • Stores the initialized database instance in the application state.
  • Retrieves and logs the list of available BigQuery tables.
§Panics

This method will panic if:

  • The settings have not been loaded before calling this method.
§Returns

Returns Self with the database field initialized.

§Example
use rust_microservice::Server;

async fn start_server() -> rust_microservice::Result<(), String> {
    let server = Server::new("0.1.3".to_string(), None)
        .init()
        .await
        .map_err(|e|e.to_string())?
        .intialize_database()
        .await
        .map_err(|e|e.to_string())?;

    Ok(())
}
Source

pub async fn run(&self)

Executes the server using the previously loaded settings and CLI input.

If both arguments and settings are available, this method delegates execution to the CLI dispatcher, starting the server workflow.

Trait Implementations§

Source§

impl Clone for Server

Source§

fn clone(&self) -> Server

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Server

Default implementation for the Server structure.

Source§

fn default() -> Self

Returns a default instance of the Server structure.

This method is used to provide a default instance of the server when no configuration is provided.

§Returns

A default instance of the Server structure.

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoResult<T> for T

Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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