module PatternQueryHelper
Constants
- VERSION
Attributes
active_record_adapter[RW]
Public Class Methods
run_active_record_query(active_record_call, query_helpers, valid_columns=[], single_record=false)
click to toggle source
# File lib/pattern_query_helper.rb, line 20 def self.run_active_record_query(active_record_call, query_helpers, valid_columns=[], single_record=false) run_sql_query(active_record_call.model, active_record_call.to_sql, {}, query_helpers, valid_columns, single_record) end
run_sql_query(model, query, query_params, query_helpers, valid_columns=[], single_record=false)
click to toggle source
# File lib/pattern_query_helper.rb, line 10 def self.run_sql_query(model, query, query_params, query_helpers, valid_columns=[], single_record=false) if single_record single_record_sql_query(model, query, query_params, query_helpers, valid_columns) elsif query_helpers[:per_page] || query_helpers[:page] paginated_sql_query(model, query, query_params, query_helpers, valid_columns) else sql_query(model, query, query_params, query_helpers, valid_columns) end end
Private Class Methods
paginated_sql_query(model, query, query_params, query_helpers, valid_columns)
click to toggle source
# File lib/pattern_query_helper.rb, line 26 def self.paginated_sql_query(model, query, query_params, query_helpers, valid_columns) query_helpers = parse_helpers(query_helpers, valid_columns) query_config = { model: model, query: query, query_params: query_params, page: query_helpers[:pagination][:page], per_page: query_helpers[:pagination][:per_page], filter_string: query_helpers[:filters][:filter_string], filter_params: query_helpers[:filters][:filter_params], sort_string: query_helpers[:sorting], } data = PatternQueryHelper::Sql.sql_query(query_config) data = PatternQueryHelper::Associations.load_associations(data, query_helpers[:associations], query_helpers[:as_json]) count = PatternQueryHelper::Sql.sql_query_count(data) data.map! { |d| d.except(PatternQueryHelper::Sql::QUERY_COUNT_COLUMN) } if query_config[:page] or query_config[:per_page] pagination = PatternQueryHelper::Pagination.create_pagination_payload(count, query_helpers[:pagination]) { pagination: pagination, data: data } end
parse_helpers(query_helpers, valid_columns)
click to toggle source
# File lib/pattern_query_helper.rb, line 92 def self.parse_helpers(query_helpers, valid_columns) valid_columns_map = {} valid_columns.each do |c| valid_columns_map["#{c}"] = c end filtering = PatternQueryHelper::Filtering.create_filters(filters: query_helpers[:filter], valid_columns_map: valid_columns_map) sorting = PatternQueryHelper::Sorting.parse_sorting_params(query_helpers[:sort], valid_columns) associations = PatternQueryHelper::Associations.process_association_params(query_helpers[:include]) pagination = PatternQueryHelper::Pagination.parse_pagination_params(query_helpers[:page], query_helpers[:per_page]) as_json = query_helpers[:as_json] { filters: filtering, sorting: sorting, associations: associations, pagination: pagination, as_json: as_json } end
single_record_sql_query(model, query, query_params, query_helpers, valid_columns)
click to toggle source
# File lib/pattern_query_helper.rb, line 72 def self.single_record_sql_query(model, query, query_params, query_helpers, valid_columns) query_helpers = parse_helpers(query_helpers, valid_columns) query_config = { model: model, query: query, query_params: query_params, filter_string: query_helpers[:filters][:filter_string], filter_params: query_helpers[:filters][:filter_params], sort_string: query_helpers[:sorting], } data = PatternQueryHelper::Sql.single_record_query(query_config) data = PatternQueryHelper::Associations.load_associations(data, query_helpers[:associations], query_helpers[:as_json]) { data: data } end
sql_query(model, query, query_params, query_helpers, valid_columns)
click to toggle source
# File lib/pattern_query_helper.rb, line 52 def self.sql_query(model, query, query_params, query_helpers, valid_columns) query_helpers = parse_helpers(query_helpers, valid_columns) query_config = { model: model, query: query, query_params: query_params, filter_string: query_helpers[:filters][:filter_string], filter_params: query_helpers[:filters][:filter_params], sort_string: query_helpers[:sorting], } data = PatternQueryHelper::Sql.sql_query(query_config) data = PatternQueryHelper::Associations.load_associations(data, query_helpers[:associations], query_helpers[:as_json]) { data: data } end