Class: Tutuf::VisualQuery::Single
- Defined in:
- lib/tutuf/visual_query/single.rb
Instance Attribute Summary collapse
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
-
#join_conditions ⇒ Object
readonly
Returns the value of attribute join_conditions.
-
#parsed_columns ⇒ Object
readonly
Returns the value of attribute parsed_columns.
-
#parsed_filters ⇒ Object
readonly
Returns the value of attribute parsed_filters.
-
#relations ⇒ Object
readonly
Returns the value of attribute relations.
Instance Method Summary collapse
-
#initialize(params) ⇒ Single
constructor
A new instance of Single.
- #query ⇒ Object
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
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
30 31 32 |
# File 'lib/tutuf/visual_query/single.rb', line 30 def filters @filters end |
#join_conditions ⇒ Object (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_columns ⇒ Object (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_filters ⇒ Object (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 |
#relations ⇒ Object (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
#query ⇒ Object
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 |