Class: ForestAdminAgent::Routes::Resources::NativeQuery
- Inherits:
-
AbstractAuthenticatedRoute
- Object
- AbstractRoute
- AbstractAuthenticatedRoute
- ForestAdminAgent::Routes::Resources::NativeQuery
- Includes:
- Builder, Http::Exceptions, QueryHandler, Utils, ForestAdminDatasourceToolkit::Components::Charts, ForestAdminDatasourceToolkit::Exceptions
- Defined in:
- lib/forest_admin_agent/routes/resources/native_query.rb
Instance Method Summary collapse
Methods included from QueryHandler
#execute_query, #inject_context_variables, #parse_query_segment
Methods inherited from AbstractAuthenticatedRoute
#build, #format_attributes, #redacted_full_projection, #redacted_projection_with_pks
Methods inherited from AbstractRoute
#add_route, #build, #initialize, #routes
Constructor Details
This class inherits a constructor from ForestAdminAgent::Routes::AbstractRoute
Instance Method Details
#handle_request(args = {}) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/forest_admin_agent/routes/resources/native_query.rb', line 28 def handle_request(args = {}) context = build(args) query = args[:params][:query].strip QueryValidator.valid?(query) unless args[:params][:connectionName] raise ForestAdminAgent::Http::Exceptions::UnprocessableError, 'Missing native query connection attribute' end context..can_chart?(args[:params]) query, context_variables = inject_record_id(query, args[:params]) type = validate_and_get_type(args[:params][:type]) result = execute_query( context.datasource, query, args[:params][:connectionName], context., context.caller, context_variables ) { content: Serializer::ForestChartSerializer.serialize(send(:"make_#{type}", result)) } end |
#setup_routes ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/forest_admin_agent/routes/resources/native_query.rb', line 15 def setup_routes add_route( 'forest_native_query', 'post', '/_internal/native_query', lambda { |args| handle_request(args) } ) self end |