#[non_exhaustive]pub struct QueryContext {
pub auth: AuthContext,
pub request: RequestMetadata,
/* private fields */
}Expand description
Context for query functions (read-only database access).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.auth: AuthContext§request: RequestMetadataImplementations§
Source§impl QueryContext
impl QueryContext
Sourcepub fn new(db_pool: PgPool, auth: AuthContext, request: RequestMetadata) -> Self
pub fn new(db_pool: PgPool, auth: AuthContext, request: RequestMetadata) -> Self
Create a new query context.
Sourcepub fn with_env(
db_pool: PgPool,
auth: AuthContext,
request: RequestMetadata,
env_provider: Arc<dyn EnvProvider>,
) -> Self
pub fn with_env( db_pool: PgPool, auth: AuthContext, request: RequestMetadata, env_provider: Arc<dyn EnvProvider>, ) -> Self
Create a query context with a custom environment provider.
Sourcepub fn set_kv(&mut self, kv: Arc<dyn KvHandle>)
pub fn set_kv(&mut self, kv: Arc<dyn KvHandle>)
Attach a KV store handle. Called by the runtime before handing the context to the handler.
Sourcepub fn kv(&self) -> Result<&dyn KvHandle>
pub fn kv(&self) -> Result<&dyn KvHandle>
Access the KV store.
Returns an error if the runtime did not supply a KV handle (this should
not happen in production; it can only occur in unit tests that construct
a bare QueryContext without going through the runtime).
Sourcepub fn db(&self) -> ForgeDb
pub fn db(&self) -> ForgeDb
Database handle with automatic db.query tracing spans.
Works directly with sqlx compile-time checked macros:
ⓘ
sqlx::query_as!(User, "SELECT * FROM users")
.fetch_all(ctx.db())
.await?Sourcepub fn db_conn(&self) -> DbConn<'_>
pub fn db_conn(&self) -> DbConn<'_>
Get a DbConn for use in shared helper functions.
Returns a pool-backed DbConn that can be passed to functions
accepting DbConn<'_> for cross-context reuse.
ⓘ
pub async fn list_items(db: DbConn<'_>) -> Result<Vec<Item>> { ... }
#[forge::query]
pub async fn get_items(ctx: &QueryContext) -> Result<Vec<Item>> {
list_items(ctx.db_conn()).await
}Trait Implementations§
Source§impl AuthenticatedContext for QueryContext
impl AuthenticatedContext for QueryContext
Source§impl EnvAccess for QueryContext
impl EnvAccess for QueryContext
fn env_provider(&self) -> &dyn EnvProvider
fn env(&self, key: &str) -> Option<String>
fn env_or(&self, key: &str, default: &str) -> String
fn env_require(&self, key: &str) -> Result<String>
fn env_parse<T: FromStr>(&self, key: &str) -> Result<T>
Source§fn env_parse_or<T: FromStr>(&self, key: &str, default: T) -> Result<T>
fn env_parse_or<T: FromStr>(&self, key: &str, default: T) -> Result<T>
Returns the default when unset; errors only if the variable is set but unparseable.
fn env_contains(&self, key: &str) -> bool
Auto Trait Implementations§
impl Freeze for QueryContext
impl !RefUnwindSafe for QueryContext
impl Send for QueryContext
impl Sync for QueryContext
impl Unpin for QueryContext
impl UnsafeUnpin for QueryContext
impl !UnwindSafe for QueryContext
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
Mutably borrows from an owned value. Read more
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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