pub struct GearCtx { /* private fields */ }Implementations§
Source§impl GearCtx
impl GearCtx
Sourcepub fn new(
gear_name: impl Into<Arc<str>>,
instance_id: Uuid,
config_provider: Arc<dyn ConfigProvider>,
client_hub: Arc<ClientHub>,
cancellation_token: CancellationToken,
) -> Self
pub fn new( gear_name: impl Into<Arc<str>>, instance_id: Uuid, config_provider: Arc<dyn ConfigProvider>, client_hub: Arc<ClientHub>, cancellation_token: CancellationToken, ) -> Self
Create a new gear-scoped context with all required fields.
Attach a database entrypoint with with_db (feature db).
Sourcepub fn with_db(self, db: DBProvider<DbError>) -> Self
pub fn with_db(self, db: DBProvider<DbError>) -> Self
Attach the per-gear database entrypoint.
pub fn gear_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 gears 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 gear-scoped DB entrypoint for secure database operations.
Returns None if no database is configured for this gear.
§Security
The returned DBProvider<toolkit_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
gears that require database access.
§Errors
Returns an error if the database is not configured for this gear.
§Example
let db = ctx.db_required()?;
let conn = db.conn()?;
let user = svc.get_user(&conn, &scope, id).await?;Sourcepub fn config<T: DeserializeOwned>(&self) -> Result<T, ConfigError>
pub fn config<T: DeserializeOwned>(&self) -> Result<T, ConfigError>
Deserialize the gear’s config section into T.
This reads the gears.<name>.config object for the current gear and
deserializes it into the requested type.
§Errors
Returns ConfigError if the gear config is missing or deserialization fails.
Sourcepub fn config_or_default<T: DeserializeOwned + Default>(
&self,
) -> Result<T, ConfigError>
pub fn config_or_default<T: DeserializeOwned + Default>( &self, ) -> Result<T, ConfigError>
Deserialize the gear’s config section into T, or use defaults if missing.
This method uses lenient configuration loading: if the gear is not present in config,
has no config section, or the gear entry is not an object, it returns T::default().
This allows gears to exist without configuration sections in the main config file.
It extracts the ‘config’ field from: gears.<name> = { database: ..., config: ... }
§Example
#[derive(serde::Deserialize, Default)]
struct MyConfig {
api_key: String,
timeout_ms: u64,
}
let config: MyConfig = ctx.config_or_default()?;§Errors
Returns ConfigError if deserialization fails.
Sourcepub fn config_expanded<T>(&self) -> Result<T, ConfigError>where
T: DeserializeOwned + ExpandVars,
pub fn config_expanded<T>(&self) -> Result<T, ConfigError>where
T: DeserializeOwned + ExpandVars,
Sourcepub fn config_expanded_or_default<T>(&self) -> Result<T, ConfigError>
pub fn config_expanded_or_default<T>(&self) -> Result<T, ConfigError>
Like config_or_default(), but additionally expands ${VAR}
placeholders
in fields marked with #[expand_vars] (requires #[derive(ExpandVars)] on the config
struct).
Gears that do not need environment variable expansion should use
config_or_default().
§Example
#[derive(serde::Deserialize, Default, ExpandVars)]
struct MyConfig {
#[expand_vars]
api_key: String,
timeout_ms: u64,
}
let config: MyConfig = ctx.config_expanded_or_default()?;§Errors
Returns ConfigError if deserialization fails or if environment variable expansion fails.
Sourcepub fn raw_config(&self) -> &Value
pub fn raw_config(&self) -> &Value
Get the raw JSON value of the gear’s config section.
Returns the ‘config’ field from: gears.
Sourcepub fn without_db(&self) -> GearCtx
pub fn without_db(&self) -> GearCtx
Create a derivative context with the same references but no DB handle. Useful for gears that don’t require database access.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for GearCtx
impl !UnwindSafe for GearCtx
impl Freeze for GearCtx
impl Send for GearCtx
impl Sync for GearCtx
impl Unpin for GearCtx
impl UnsafeUnpin for GearCtx
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>
renamed to 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>where
T: Sized,
fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>where
T: Sized,
Secured wrapper. Read more