Module: PatternQueryHelper
- Defined in:
- lib/pattern_query_helper.rb,
lib/pattern_query_helper/sql.rb,
lib/pattern_query_helper/sorting.rb,
lib/pattern_query_helper/version.rb,
lib/pattern_query_helper/filtering.rb,
lib/pattern_query_helper/pagination.rb,
lib/pattern_query_helper/associations.rb
Defined Under Namespace
Classes: Associations, Filtering, Pagination, Sorting, Sql
Constant Summary collapse
- VERSION =
"0.2.4"
Class Attribute Summary collapse
-
.active_record_adapter ⇒ Object
Returns the value of attribute active_record_adapter.
Class Method Summary collapse
- .paginated_sql_query(model, query, query_params, query_helpers, valid_columns) ⇒ Object
- .parse_helpers(query_helpers, valid_columns) ⇒ Object
- .run_active_record_query(active_record_call, query_helpers, valid_columns = [], single_record = false) ⇒ Object
- .run_sql_query(model, query, query_params, query_helpers, valid_columns = [], single_record = false) ⇒ Object
- .single_record_sql_query(model, query, query_params, query_helpers, valid_columns) ⇒ Object
- .sql_query(model, query, query_params, query_helpers, valid_columns) ⇒ Object
Class Attribute Details
.active_record_adapter ⇒ Object
Returns the value of attribute active_record_adapter.
112 113 114 |
# File 'lib/pattern_query_helper.rb', line 112 def active_record_adapter @active_record_adapter end |
Class Method Details
.paginated_sql_query(model, query, query_params, query_helpers, valid_columns) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 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(query_config) pagination = PatternQueryHelper::Pagination.create_pagination_payload(count, query_helpers[:pagination]) { pagination: pagination, data: data } end |
.parse_helpers(query_helpers, valid_columns) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/pattern_query_helper.rb', line 91 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(query_helpers[:filter], 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 |
.run_active_record_query(active_record_call, query_helpers, valid_columns = [], single_record = false) ⇒ Object
20 21 22 |
# 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) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# 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 |
.single_record_sql_query(model, query, query_params, query_helpers, valid_columns) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/pattern_query_helper.rb', line 71 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) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pattern_query_helper.rb', line 51 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 |