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 are buffered and only inserted after the transaction commits successfully.

BEGIN
  ├── ctx.db().execute(...)
  ├── ctx.dispatch_job("send_email", ...)  // buffered
  └── return Ok(result)
COMMIT
  └── INSERT INTO forge_jobs (buffered jobs)

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).
OutboxBuffer
PendingJob
PendingWorkflow
QueryContext
Context for query functions (read-only database access).
RequestMetadata
Request metadata available to all functions.

Enums§

ForgeConn
Connection wrapper that implements sqlx’s Executor trait with automatic db.query tracing spans.

Traits§

TokenIssuer
Token issuer for signing JWTs.

Type Aliases§

JobInfoLookup
Callback type for looking up job info by name.