Class: Tutuf::VisualQuery::Single

Inherits:
Common
  • Object
show all
Defined in:
lib/tutuf/visual_query/single.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Common

connection, #filters_to_a, quote_ident, quote_relation_name

Constructor Details

#initialize(params) ⇒ Single

Returns a new instance of Single.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/tutuf/visual_query/single.rb', line 5

def initialize(params)
  @relations = parse_relations(params['relations'])
  @filters = params['filters']
  @parsed_filters = filters_to_a do |schema, rel_name, col_name, op, val|
    "#{quote_column_name('schema' => schema, 'rel_name'=>rel_name,'col_name' => col_name)} #{sanitize_operator(op)} #{ val == 'NULL' ?  val : quote(val) }"
  end.join(" AND ")
  @join_conditions = params['join_conditions']
  if params['action'] == "create"
    @parsed_columns = columns_to_sql_for_saving(params['columns'],params['all_columns'],params['all_selected_columns'],params['balanced'])
  else
    @parsed_columns = columns_to_sql(params['columns'],params['all_columns'])
  end

  @sort_conditions = []
  unless params['sort_conditions'].blank?
    params['sort_conditions'].map do |key, val|
      if params['all_columns'].detect{ |all| val['rel_name'] == all['rel_name'] && val['col_name'] == all['col_name']  } &&
         ( val['direction'].blank? || val['direction'] == 'ASC' || val['direction'] == 'DESC' )
           @sort_conditions[key.to_i] = val
      end
    end
    @sort_conditions.compact!
  end
end

Instance Attribute Details

#filtersObject (readonly)

Returns the value of attribute filters.



30
31
32
# File 'lib/tutuf/visual_query/single.rb', line 30

def filters
  @filters
end

#join_conditionsObject (readonly)

Returns the value of attribute join_conditions.



30
31
32
# File 'lib/tutuf/visual_query/single.rb', line 30

def join_conditions
  @join_conditions
end

#parsed_columnsObject (readonly)

Returns the value of attribute parsed_columns.



30
31
32
# File 'lib/tutuf/visual_query/single.rb', line 30

def parsed_columns
  @parsed_columns
end

#parsed_filtersObject (readonly)

Returns the value of attribute parsed_filters.



30
31
32
# File 'lib/tutuf/visual_query/single.rb', line 30

def parsed_filters
  @parsed_filters
end

#relationsObject (readonly)

Returns the value of attribute relations.



30
31
32
# File 'lib/tutuf/visual_query/single.rb', line 30

def relations
  @relations
end

Instance Method Details

#queryObject



32
33
34
35
36
37
38
39
# File 'lib/tutuf/visual_query/single.rb', line 32

def query
  return nil if relations.nil? || relations.empty?
  # debugger
  query_string = "SELECT #{parsed_columns} FROM #{join_relations}"
  query_string += " WHERE #{parsed_filters}" unless parsed_filters.blank?
  query_string += " ORDER BY #{@sort_conditions.map{ |sc| "#{quote_ident(sc['rel_name'])}.#{quote_ident(sc['col_name'])} #{sc['direction']}" }.join(',')}" unless @sort_conditions.blank?
  query_string.force_encoding('UTF-8')
end