Skip to main content

Module context

Module context 

Source
Expand description

Execution contexts for queries and mutations.

Every function receives a context providing access to:

  • Database connection (pool or transaction)
  • Authentication state (user ID, roles, claims)
  • Request metadata (request ID, trace ID, client IP)
  • Environment variables
  • Job/workflow dispatch (mutations only)

§QueryContext vs MutationContext

FeatureQueryContextMutationContext
DatabasePool (read-only)Transaction or pool
Dispatch jobsNoYes
Start workflowsNoYes
HTTP clientNoYes (circuit breaker)

§Transactional Mutations

When transactional = true (default), mutations run in a transaction. Jobs and workflows dispatched during the mutation insert their rows on the same transaction, so they only become visible to workers once the mutation commits and are rolled back if it fails.

BEGIN
  ├── ctx.tx().execute(...)
  ├── ctx.dispatch_job("send_email", ...)  // INSERT into forge_jobs on this tx
  └── return Ok(result)
COMMIT

Structs§

AuthContext
Authentication context available to all functions.
AuthTokenTtl
Token TTL configuration resolved from [auth] in forge.toml.
ForgeDb
Pool wrapper that adds db.query tracing spans to every database operation.
MutationContext
Context for mutation functions (transactional database access).
QueryContext
Context for query functions (read-only database access).
RequestMetadata
Request metadata available to all functions.

Enums§

DbConn
Abstraction over pool and transaction connections.
ForgeConn
Connection wrapper that implements sqlx’s Executor trait with automatic db.query tracing spans.

Traits§

TokenIssuer
Token issuer for signing JWTs.