Class: ForestAdminDatasourceCustomizer::DSL::ExecutionContext
- Inherits:
-
Object
- Object
- ForestAdminDatasourceCustomizer::DSL::ExecutionContext
- Defined in:
- lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb
Overview
ExecutionContext provides a cleaner API for action execution blocks It wraps the context and result_builder to provide direct access to common methods
Instance Attribute Summary collapse
-
#context ⇒ Object
readonly
Returns the value of attribute context.
-
#result ⇒ Object
readonly
Returns the value of attribute result.
-
#result_builder ⇒ Object
readonly
Returns the value of attribute result_builder.
Instance Method Summary collapse
-
#caller ⇒ Object
Access caller information (user, permissions, etc.).
-
#datasource ⇒ Object
Access the datasource for querying other collections.
-
#error(message = 'Error', html: nil) ⇒ Hash
Return an error result.
-
#file(content:, name: 'file', mime_type: 'application/octet-stream') ⇒ Hash
Return a file download result.
-
#form_value(key) ⇒ Object
Access form values by field name.
-
#initialize(context, result_builder) ⇒ ExecutionContext
constructor
A new instance of ExecutionContext.
-
#record(fields = []) ⇒ Hash
Get a single record (for single actions).
-
#records(fields = []) ⇒ Array<Hash>
Get multiple records (for bulk actions).
-
#redirect(path) ⇒ Hash
Return a redirect result.
-
#success(message = 'Success', invalidated: nil, html: nil) ⇒ Hash
Return a success result.
-
#webhook(url, method: 'POST', headers: {}, body: {}) ⇒ Hash
Return a webhook result.
Constructor Details
#initialize(context, result_builder) ⇒ ExecutionContext
Returns a new instance of ExecutionContext.
19 20 21 22 23 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 19 def initialize(context, result_builder) @context = context @result_builder = result_builder @result = nil end |
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
17 18 19 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 17 def context @context end |
#result ⇒ Object (readonly)
Returns the value of attribute result.
17 18 19 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 17 def result @result end |
#result_builder ⇒ Object (readonly)
Returns the value of attribute result_builder.
17 18 19 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 17 def result_builder @result_builder end |
Instance Method Details
#caller ⇒ Object
Access caller information (user, permissions, etc.)
54 55 56 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 54 def caller @context.caller end |
#datasource ⇒ Object
Access the datasource for querying other collections
48 49 50 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 48 def datasource @context.datasource end |
#error(message = 'Error', html: nil) ⇒ Hash
Return an error result
78 79 80 81 82 83 84 85 86 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 78 def error( = 'Error', html: nil) = {} [:html] = html if html @result = @result_builder.error( message: , options: ) end |
#file(content:, name: 'file', mime_type: 'application/octet-stream') ⇒ Hash
Return a file download result
93 94 95 96 97 98 99 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 93 def file(content:, name: 'file', mime_type: 'application/octet-stream') @result = @result_builder.file( content: content, name: name, mime_type: mime_type ) end |
#form_value(key) ⇒ Object
Access form values by field name
28 29 30 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 28 def form_value(key) @context.get_form_value(key.to_s) end |
#record(fields = []) ⇒ Hash
Get a single record (for single actions)
35 36 37 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 35 def record(fields = []) @context.get_record(fields) end |
#records(fields = []) ⇒ Array<Hash>
Get multiple records (for bulk actions)
42 43 44 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 42 def records(fields = []) @context.get_records(fields) end |
#redirect(path) ⇒ Hash
Return a redirect result
119 120 121 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 119 def redirect(path) @result = @result_builder.redirect_to(path: path) end |
#success(message = 'Success', invalidated: nil, html: nil) ⇒ Hash
Return a success result
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 63 def success( = 'Success', invalidated: nil, html: nil) = {} [:invalidated] = invalidated if invalidated && !invalidated.empty? [:html] = html if html @result = @result_builder.success( message: , options: ) end |
#webhook(url, method: 'POST', headers: {}, body: {}) ⇒ Hash
Return a webhook result
107 108 109 110 111 112 113 114 |
# File 'lib/forest_admin_datasource_customizer/dsl/context/execution_context.rb', line 107 def webhook(url, method: 'POST', headers: {}, body: {}) @result = @result_builder.webhook( url: url, method: method, headers: headers, body: body ) end |