Module: ForestAdminAgent::Utils::IsSegmentQueryAllowedOnConnection
- Defined in:
- lib/forest_admin_agent/utils/is_segment_query_allowed_on_connection.rb
Class Method Summary collapse
-
.allowed?(collection_permissions, segment_query, connection_name) ⇒ Boolean
Check if a segment query is allowed on a specific connection This handles both single queries and UNION queries for multi-segment operations.
Class Method Details
.allowed?(collection_permissions, segment_query, connection_name) ⇒ Boolean
Check if a segment query is allowed on a specific connection This handles both single queries and UNION queries for multi-segment operations
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/forest_admin_agent/utils/is_segment_query_allowed_on_connection.rb', line 6 def self.allowed?(, segment_query, connection_name) return false if connection_name.nil? || connection_name.empty? # Get all queries for the specified connection queries = [:liveQuerySegments] .select { |segment| segment[:connectionName] == connection_name } .map { |segment| segment[:query] } # Handle UNION queries made by the FRONT to display available actions # Smart Actions restricted to segment when a Smart Action is available on multiple SQL segments union_queries = segment_query.split('/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION ') if union_queries.length > 1 = queries.to_set { |query| query.gsub(/;\s*\z/i, '').strip } return union_queries.all? { |union_query| .include?(union_query.strip) } end queries.any?(segment_query) end |