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.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.active_record_adapterObject

Returns the value of attribute active_record_adapter.



116
117
118
# File 'lib/pattern_query_helper.rb', line 116

def active_record_adapter
  @active_record_adapter
end

Class Method Details

.active_record_query(active_record_call, url_params) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'lib/pattern_query_helper.rb', line 74

def self.active_record_query(active_record_call, url_params)
  parse_params(url_params)
  filtered_query = PatternQueryHelper::Filtering.filter_active_record_query(active_record_call, @filtering)
  sorted_query = PatternQueryHelper::Sorting.sort_active_record_query(active_record_call, @sorting)
  with_associations = PatternQueryHelper::Associations.load_associations(sorted_query, @associations)
  {
    data: with_associations
  }
end

.paginated_active_record_query(active_record_call, url_params) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/pattern_query_helper.rb', line 84

def self.paginated_active_record_query(active_record_call, url_params)
  parse_params(url_params)
  filtered_query = PatternQueryHelper::Filtering.filter_active_record_query(active_record_call, @filtering)
  sorted_query = PatternQueryHelper::Sorting.sort_active_record_query(active_record_call, @sorting)
  paginated_query = PatternQueryHelper::Pagination.paginate_active_record_query(sorted_query, @pagination)
  with_associations = PatternQueryHelper::Associations.load_associations(paginated_query, @associations)
  pagination = PatternQueryHelper::Pagination.create_pagination_payload(sorted_query.count, @pagination)
  {
    pagination: pagination,
    data: with_associations
  }
end

.paginated_sql_query(model, query, query_params, url_params) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/pattern_query_helper.rb', line 9

def self.paginated_sql_query(model, query, query_params, url_params)
  parse_params(url_params)

  query_config = {
    model: model,
    query: query,
    query_params: query_params,
    page: @pagination[:page],
    per_page: @pagination[:per_page],
    filter_string: @filtering[:filter_string],
    filter_params: @filtering[:filter_params],
    sort_string: @sorting,
  }

  data = PatternQueryHelper::Sql.sql_query(query_config)
  data = PatternQueryHelper::Associations.load_associations(data, @associations)
  count = PatternQueryHelper::Sql.sql_query_count(query_config)
  pagination = PatternQueryHelper::Pagination.create_pagination_payload(count, @pagination)

  {
    pagination: pagination,
    data: data
  }
end

.parse_params(params) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/pattern_query_helper.rb', line 101

def self.parse_params(params)
  @filtering = PatternQueryHelper::Filtering.create_filters(params[:filter])
  @sorting = PatternQueryHelper::Sorting.parse_sorting_params(params)
  @associations = PatternQueryHelper::Associations.process_association_params(params)
  @pagination = PatternQueryHelper::Pagination.parse_pagination_params(params)

  {
    filters: @filtering,
    sorting: @sorting,
    associations: @associations,
    pagination: @pagination
  }
end

.single_record_active_record_queryObject



97
98
99
# File 'lib/pattern_query_helper.rb', line 97

def self.single_record_active_record_query
  # TODO: Add Logic to this method
end

.single_record_sql_query(model, query, query_params, url_params) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/pattern_query_helper.rb', line 54

def self.single_record_sql_query(model, query, query_params, url_params)
  parse_params(url_params)

  query_config = {
    model: model,
    query: query,
    query_params: query_params,
    filter_string: @filtering[:filter_string],
    filter_params: @filtering[:filter_params],
    sort_string: @sorting,
  }

  data = PatternQueryHelper::Sql.single_record_query(query_config)
  data = PatternQueryHelper::Associations.load_associations(data, @associations)

  {
    data: data
  }
end

.sql_query(model, query, query_params, url_params) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/pattern_query_helper.rb', line 34

def self.sql_query(model, query, query_params, url_params)
  parse_params(url_params)

  query_config = {
    model: model,
    query: query,
    query_params: query_params,
    filter_string: @filtering[:filter_string],
    filter_params: @filtering[:filter_params],
    sort_string: @sorting,
  }

  data = PatternQueryHelper::Sql.sql_query(query_config)
  data = PatternQueryHelper::Associations.load_associations(data, @associations)

  {
    data: data
  }
end