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

Class Method Summary collapse

Class Attribute Details

.active_record_adapterObject

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