pub struct ModuleCtx { /* private fields */ }Implementations§
Source§impl ModuleCtx
impl ModuleCtx
Sourcepub fn new(
module_name: impl Into<Arc<str>>,
instance_id: Uuid,
config_provider: Arc<dyn ConfigProvider>,
client_hub: Arc<ClientHub>,
cancellation_token: CancellationToken,
db: Option<DBProvider<DbError>>,
) -> Self
pub fn new( module_name: impl Into<Arc<str>>, instance_id: Uuid, config_provider: Arc<dyn ConfigProvider>, client_hub: Arc<ClientHub>, cancellation_token: CancellationToken, db: Option<DBProvider<DbError>>, ) -> Self
Create a new module-scoped context with all required fields.
pub fn module_name(&self) -> &str
Sourcepub fn instance_id(&self) -> Uuid
pub fn instance_id(&self) -> Uuid
Returns the process-level instance ID.
This is a unique identifier for this process instance, shared by all modules in the same process. It is generated once at bootstrap.
pub fn config_provider(&self) -> &dyn ConfigProvider
Sourcepub fn client_hub(&self) -> Arc<ClientHub>
pub fn client_hub(&self) -> Arc<ClientHub>
Get the ClientHub for dependency resolution.
pub fn cancellation_token(&self) -> &CancellationToken
Sourcepub fn db(&self) -> Option<DBProvider<DbError>>
pub fn db(&self) -> Option<DBProvider<DbError>>
Get a module-scoped DB entrypoint for secure database operations.
Returns None if no database is configured for this module.
§Security
The returned DBProvider<modkit_db::DbError>:
- Is cheap to clone (shares an internal
Db) - Provides
conn()for non-transactional access (fails inside tx via guard) - Provides
transaction(..)for transactional operations
§Example
let db = ctx.db().ok_or_else(|| anyhow!("no db"))?;
let conn = db.conn()?;
let user = svc.get_user(&conn, &scope, id).await?;Sourcepub fn db_required(&self) -> Result<DBProvider<DbError>>
pub fn db_required(&self) -> Result<DBProvider<DbError>>
Get a database handle, returning an error if not configured.
This is a convenience method that combines db() with an error for
modules that require database access.
§Errors
Returns an error if the database is not configured for this module.
§Example
let db = ctx.db_required()?;
let conn = db.conn()?;
let user = svc.get_user(&conn, &scope, id).await?;pub fn current_module(&self) -> Option<&str>
Sourcepub fn config<T: DeserializeOwned + Default>(&self) -> Result<T, ConfigError>
pub fn config<T: DeserializeOwned + Default>(&self) -> Result<T, ConfigError>
Deserialize the module’s config section into T, or use defaults if missing.
This method uses lenient configuration loading: if the module is not present in config,
has no config section, or the module entry is not an object, it returns T::default().
This allows modules to exist without configuration sections in the main config file.
It extracts the ‘config’ field from: modules.<name> = { database: ..., config: ... }
§Example
#[derive(serde::Deserialize, Default)]
struct MyConfig {
api_key: String,
timeout_ms: u64,
}
let config: MyConfig = ctx.config()?;§Errors
Returns ConfigError if deserialization fails.
Sourcepub fn raw_config(&self) -> &Value
pub fn raw_config(&self) -> &Value
Get the raw JSON value of the module’s config section.
Returns the ‘config’ field from: modules.
Sourcepub fn without_db(&self) -> ModuleCtx
pub fn without_db(&self) -> ModuleCtx
Create a derivative context with the same references but no DB handle. Useful for modules that don’t require database access.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ModuleCtx
impl !RefUnwindSafe for ModuleCtx
impl Send for ModuleCtx
impl Sync for ModuleCtx
impl Unpin for ModuleCtx
impl UnsafeUnpin for ModuleCtx
impl !UnwindSafe for ModuleCtx
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> WithSecurityContext for T
impl<T> WithSecurityContext for T
Source§fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>
fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>
Secured wrapper. Read more