Reducer Context
SpacetimeDB: Reducer Context ↗
Reducer context is an Effect service yielded from the assembled module.
import * as Effect from "effect/Effect"import * as Stdb from "effect-spacetimedb"
const audit = Stdb.table("audit", { columns: { id: Stdb.u64().primaryKey().autoInc(), sender: Stdb.identity(), message: Stdb.string(), },})
const Audit = Stdb.StdbGroup.make("Audit").add( Stdb.StdbFn.reducer("audit_write", { params: Stdb.struct({ message: Stdb.string() }), }),)
const Module = Stdb.StdbModule.make("app").addTables(audit).add(Audit)const { Db, ReducerCtx } = Module
const AuditLive = Stdb.StdbBuilder.group(Module, "Audit", { audit_write: Effect.fn(function* ({ message }) { const ctx = yield* ReducerCtx const db = yield* Db yield* db.audit.insert({ id: 0n, sender: ctx.sender, message, }) }),})ReducerCtx exposes the sender identity, authenticated sender metadata,
timestamp, connection id, deterministic random stream, UUID helpers, and the
same writable db view available through Db.
effect-spacetimedb exposes context as scoped services rather than a positional
argument: ReducerCtx for reducers, TxCtx inside explicit transaction bodies,
and MutationCtx for helpers that must work in both scopes.
Not affiliated with SpacetimeDB (Clockwork Laboratories) or Effect (Effectful Technologies).