Module: Pureapi::PostgresModel

Extended by:
ActiveSupport::Concern
Includes:
Model
Defined in:
lib/pureapi/postgres_model.rb

Overview

Provide methods (override, polymorphic) for use data handling # => comfortable when use postgresql

Defined Under Namespace

Modules: Operators

Constant Summary collapse

REFLECT_OPERATORS =
Operators.constants.inject({}) do |memo, const_name|
  item = Operators.const_get(const_name)
  memo[item[:id]] = item[:is]
  memo
end
PERMIT_OPERATORS =
Operators.constants.inject({}) do |memo, const_name|
  item = Operators.const_get(const_name)
  memo[item[:id]] = item[:permit]
  memo
end

Constants included from Model

Model::COMPARISON_OPERATORS, Model::COMPARISON_OPERATORS_INVERT, Model::LOGICAL_OPERATORS, Model::LOGICAL_OPERATORS_INVERT, Model::NULL_OPERATORS, Model::NULL_OPERATOR_KEYS

Instance Method Summary collapse

Methods included from Model

#_include_search, #_json_fields, #_search_fields, #advanced_search, #as_json_fields, #asjson_fields, #compcond_columns, #compcond_fields, #compcond_match, #compcond_regexp, #compcond_regexp2nd, #compcond_search, #default_includes, #default_onlyasjsons, #full_search, #get_includes, #include_entities, #incond_columns, #json_method_includes, #json_methods, #logicconds, #of_entities, #paginate

Instance Method Details

#_self_search(only_params) ⇒ Object

Search by params of attributes of model



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/pureapi/postgres_model.rb', line 59

def _self_search only_params
  criterias = self

  only_params.each do |filter|
    case filter[:o]
    when Operators::EQ[:id], Operators::IN[:id]
      criterias = criterias.where(filter[:f] => filter[:v])
    when Operators::ISNIL[:id], Operators::ISNNIL[:id]
      criterias = criterias.where("\"#{self.table_name}\".\"#{filter[:f]}\" #{REFLECT_OPERATORS[filter[:o]]}")
    else
      criterias = criterias.where("\"#{self.table_name}\".\"#{filter[:f]}\" #{REFLECT_OPERATORS[filter[:o]]} ?", filter[:v])
    end
  end

  return criterias.where({})
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



44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/pureapi/postgres_model.rb', line 44

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