Class: Textus::Hooks::Context
- Inherits:
-
Object
- Object
- Textus::Hooks::Context
- Defined in:
- lib/textus/hooks/context.rb
Overview
A narrow handle passed to user hooks in place of the raw Store. All writes route back through the RoleScope so authorization, audit logging, and schema validation always fire.
Instance Attribute Summary collapse
-
#correlation_id ⇒ Object
readonly
Returns the value of attribute correlation_id.
-
#role ⇒ Object
readonly
Returns the value of attribute role.
Class Method Summary collapse
Instance Method Summary collapse
- #audit(verb, key:) ⇒ Object
- #backend ⇒ Object
- #delete(key) ⇒ Object
- #deps(key) ⇒ Object
- #freshness(key) ⇒ Object
-
#get(key) ⇒ Object
read — a pure-observation surface: nothing here ingests.
-
#initialize(scope:) ⇒ Context
constructor
A new instance of Context.
- #inspect ⇒ Object
- #list ⇒ Object
-
#publish_followup(event) ⇒ Object
fan-out.
-
#put(key) ⇒ Object
write (authorized + audited).
Constructor Details
#initialize(scope:) ⇒ Context
Returns a new instance of Context.
21 22 23 24 25 |
# File 'lib/textus/hooks/context.rb', line 21 def initialize(scope:) @scope = scope @role = scope.role @correlation_id = scope.correlation_id end |
Instance Attribute Details
#correlation_id ⇒ Object (readonly)
Returns the value of attribute correlation_id.
9 10 11 |
# File 'lib/textus/hooks/context.rb', line 9 def correlation_id @correlation_id end |
#role ⇒ Object (readonly)
Returns the value of attribute role.
9 10 11 |
# File 'lib/textus/hooks/context.rb', line 9 def role @role end |
Class Method Details
Instance Method Details
#audit(verb, key:) ⇒ Object
45 46 47 |
# File 'lib/textus/hooks/context.rb', line 45 def audit(verb, key:, **) @scope.container.audit_log.append(role: @role, verb: verb, key: key, **) end |
#backend ⇒ Object
27 28 29 |
# File 'lib/textus/hooks/context.rb', line 27 def backend @scope end |
#delete(key) ⇒ Object
43 |
# File 'lib/textus/hooks/context.rb', line 43 def delete(key, **) = @scope.key_delete(key, **) |
#deps(key) ⇒ Object
38 |
# File 'lib/textus/hooks/context.rb', line 38 def deps(key) = @scope.deps(key) |
#freshness(key) ⇒ Object
39 |
# File 'lib/textus/hooks/context.rb', line 39 def freshness(key) = @scope.freshness(key) |
#get(key) ⇒ Object
read — a pure-observation surface: nothing here ingests. Since ADR 0089 ‘get` itself is a pure read (the read-through that once forced this surface to opt out is gone, so the old re-entrancy/deadlock guard is no longer needed); `list`/`deps`/`freshness` are reads too. A hook observes current state and never triggers an I/O cascade.
36 |
# File 'lib/textus/hooks/context.rb', line 36 def get(key) = pure_reader.call(key) |
#inspect ⇒ Object
54 55 56 |
# File 'lib/textus/hooks/context.rb', line 54 def inspect "#<Textus::Hooks::Context role=#{@role} correlation_id=#{@correlation_id}>" end |
#list ⇒ Object
37 |
# File 'lib/textus/hooks/context.rb', line 37 def list(**) = @scope.list(**) |
#publish_followup(event) ⇒ Object
fan-out
50 51 52 |
# File 'lib/textus/hooks/context.rb', line 50 def publish_followup(event, **) @scope.container.events.publish(event, ctx: self, **) end |
#put(key) ⇒ Object
write (authorized + audited)
42 |
# File 'lib/textus/hooks/context.rb', line 42 def put(key, **) = @scope.put(key, **) |