Module: Pureapi::Model
- Included in:
- MongoidModel
- Defined in:
- lib/pureapi/model.rb
Overview
Implement methods use for handle with table records like
- Methods in as_json
Defined Under Namespace
Modules: Pagination
Constant Summary collapse
- COMPARISON_OPERATORS =
{ eq: '=', ne: '<>', gt: '>', lt: '<', gte: '>=', lte: '<=', like: 'LIKE', nlike: 'NOT LIKE', regex: 'REGEXP', }
- NULL_OPERATORS =
{ 'null' => nil, 'blank' => [nil, ''], }
- LOGICAL_OPERATORS =
{ in: 'IN' }
- COMPARISON_OPERATORS_INVERT =
COMPARISON_OPERATORS.invert
- LOGICAL_OPERATORS_INVERT =
LOGICAL_OPERATORS.invert
- NULL_OPERATOR_KEYS =
NULL_OPERATORS.keys
Instance Method Summary collapse
-
#advanced_search(advanced_params) ⇒ Object
return criterias.where({}) end.
-
#asjson_fields ⇒ Object
Define default fields use for asjson on includes E.g { channel: [:id, :code, :name], include: Channel.asjson_fields, course: [:id, :code, :name] }.
-
#compcond_columns ⇒ Object
Define array of columns use for comparison conditions E.g [:id, :name, :channel_course_id, :status].
-
#compconds(params = []) ⇒ Object
Comparsion operator conditions method Array
paramscontains hash = o, v :f is column name :o is comparsion operator :v is value. -
#default_includes ⇒ Object
Define default includes of active records E.g [:channel, :course].
-
#default_onlyasjsons ⇒ Object
Define default fields use for as_jsons.
-
#full_search(params, advanced_params) ⇒ Object
Provide search function 2 type: normal and advanced Required setup advanced_search methods.
-
#incond_columns ⇒ Object
Define array of columns use for in conditions (logical) E.g [:id, :name, :channel_course_id, :status].
- #json_method_includes ⇒ Object
-
#json_methods ⇒ Object
return default array contains methods for as_json Eg.
-
#logicconds(params = []) ⇒ Object
Comparsion operator conditions method Array
paramscontains hash = o, v :f is column name :o is comparsion operator :v is value. -
#paginate(params) ⇒ Object
Require params is hash contain Integer :page, :per_page.
Instance Method Details
#advanced_search(advanced_params) ⇒ Object
return criterias.where({}) end
66 67 68 |
# File 'lib/pureapi/model.rb', line 66 def advanced_search(advanced_params) return self.where({}) end |
#asjson_fields ⇒ Object
Define default fields use for asjson on includes E.g { channel: [:id, :code, :name], include: Channel.asjson_fields, course: [:id, :code, :name] }
148 149 150 |
# File 'lib/pureapi/model.rb', line 148 def asjson_fields {} end |
#compcond_columns ⇒ Object
Define array of columns use for comparison conditions E.g [:id, :name, :channel_course_id, :status]
126 127 128 |
# File 'lib/pureapi/model.rb', line 126 def compcond_columns [:id] end |
#compconds(params = []) ⇒ Object
Comparsion operator conditions method
Array params contains hash = o, v
:f is column name
:o is comparsion operator
:v is value
93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/pureapi/model.rb', line 93 def compconds(params = []) criterias = self params.each do |param| if param[:o] == COMPARISON_OPERATORS[:eq] criterias = criterias.where(param[:f] => param[:v]) else criterias = criterias.where("`#{self.table_name}`.`#{param[:f]}` #{param[:o]} ?", param[:v]) end end return criterias.where({}) end |
#default_includes ⇒ Object
Define default includes of active records E.g [:channel, :course]
138 139 140 |
# File 'lib/pureapi/model.rb', line 138 def default_includes [] end |
#default_onlyasjsons ⇒ Object
Define default fields use for as_jsons
157 158 159 |
# File 'lib/pureapi/model.rb', line 157 def default_onlyasjsons self.column_names.map(&:to_sym) end |
#full_search(params, advanced_params) ⇒ Object
Provide search function 2 type: normal and advanced Required setup advanced_search methods
ActionController::Parameters _params, contain fields use .where()
ActionController::Parameters _advanced_params, detail in advanced_search method
Or
Hash _params, contain fields use .where()
Hash _advanced_params, detail in advanced_search method
78 79 80 81 82 83 84 85 86 |
# File 'lib/pureapi/model.rb', line 78 def full_search(params, advanced_params) _params = params.delete_if { |k, v| v.blank? } criterias = self criterias = _params.blank? ? criterias : criterias.where(_params.to_h) criterias = advanced_params.blank? ? criterias : criterias.advanced_search(advanced_params.to_h) return criterias.where({}) end |
#incond_columns ⇒ Object
Define array of columns use for in conditions (logical) E.g [:id, :name, :channel_course_id, :status]
132 133 134 |
# File 'lib/pureapi/model.rb', line 132 def incond_columns [:id] end |
#json_method_includes ⇒ Object
152 153 154 |
# File 'lib/pureapi/model.rb', line 152 def json_method_includes {} end |
#json_methods ⇒ Object
return default array contains methods for as_json Eg. [:status_name, :path_detail, :restrictions, :channel_course_code]
39 40 41 |
# File 'lib/pureapi/model.rb', line 39 def json_methods [] end |
#logicconds(params = []) ⇒ Object
Comparsion operator conditions method
Array params contains hash = o, v
:f is column name
:o is comparsion operator
:v is value
112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/pureapi/model.rb', line 112 def logicconds(params = []) criterias = self params.each do |param| if param[:o] == LOGICAL_OPERATORS[:in] criterias = criterias.where(param[:f] => param[:v]) end end return criterias.where({}) end |
#paginate(params) ⇒ Object
Require params is hash contain Integer :page, :per_page
162 163 164 |
# File 'lib/pureapi/model.rb', line 162 def paginate(params) self.limit(params[:per_page]).offset((params[:page] - 1) * params[:per_page]) end |