Skip to main content

ModuleRegistry

Struct ModuleRegistry 

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

Registry for managing Backbone modules

The registry handles:

  • Module registration
  • Dependency resolution and ordering
  • Migration path discovery
  • Module lifecycle (boot, shutdown)

Implementations§

Source§

impl ModuleRegistry

Source

pub fn new() -> Self

Creates a new empty module registry

Source

pub fn register<M: BackboneModule + 'static>( &mut self, module: M, ) -> ModuleRegistryResult<()>

Registers a module with the registry

§Arguments
  • module - The module to register
§Returns

An error if a module with the same name is already registered

Source

pub fn register_arc( &mut self, module: Arc<dyn BackboneModule>, ) -> ModuleRegistryResult<()>

Registers an Arc-wrapped module with the registry

Source

pub fn len(&self) -> usize

Returns the number of registered modules

Source

pub fn is_empty(&self) -> bool

Returns true if no modules are registered

Source

pub fn get(&self, name: &str) -> Option<Arc<dyn BackboneModule>>

Gets a module by name

Source

pub fn module_names(&self) -> Vec<String>

Returns all module names

Source

pub fn modules_ordered( &mut self, ) -> ModuleRegistryResult<Vec<Arc<dyn BackboneModule>>>

Returns all modules in dependency order

Modules with no dependencies come first, followed by modules whose dependencies have already been returned.

§Returns

An error if there are circular dependencies or unknown dependencies

Source

pub fn all_migration_paths( &mut self, ) -> ModuleRegistryResult<Vec<MigrationInfo>>

Returns all migration paths in dependency order

§Returns

A vector of (module_name, migrations_path) tuples

Source

pub fn all_seed_paths(&mut self) -> ModuleRegistryResult<Vec<SeedInfo>>

Returns all seed paths in dependency order

Source

pub async fn boot_all(&mut self) -> Result<()>

Boots all modules in dependency order

Source

pub async fn shutdown_all(&mut self) -> Result<()>

Shuts down all modules in reverse dependency order

Source

pub async fn health_check_all(&self) -> HashMap<String, bool>

Performs health checks on all modules

Source

pub fn print_summary(&self)

Prints a summary of registered modules

Trait Implementations§

Source§

impl Default for ModuleRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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