Class: Exwiw::QueryAst::Select

Inherits:
Object
  • Object
show all
Defined in:
lib/exwiw/query_ast.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSelect

Returns a new instance of Select.



139
140
141
142
143
144
145
# File 'lib/exwiw/query_ast.rb', line 139

def initialize
  @from_table_name = nil
  @columns = []
  @where_clauses = []
  @join_clauses = []
  @select_all = false
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns.



137
138
139
# File 'lib/exwiw/query_ast.rb', line 137

def columns
  @columns
end

#from_table_nameObject (readonly)

Returns the value of attribute from_table_name.



137
138
139
# File 'lib/exwiw/query_ast.rb', line 137

def from_table_name
  @from_table_name
end

#join_clausesObject (readonly)

Returns the value of attribute join_clauses.



137
138
139
# File 'lib/exwiw/query_ast.rb', line 137

def join_clauses
  @join_clauses
end

#select_allObject (readonly)

Returns the value of attribute select_all.



137
138
139
# File 'lib/exwiw/query_ast.rb', line 137

def select_all
  @select_all
end

#where_clausesObject (readonly)

Returns the value of attribute where_clauses.



137
138
139
# File 'lib/exwiw/query_ast.rb', line 137

def where_clauses
  @where_clauses
end

Instance Method Details

#from(table) ⇒ Object



147
148
149
# File 'lib/exwiw/query_ast.rb', line 147

def from(table)
  @from_table_name = table
end

#join(join_clause) ⇒ Object



163
164
165
# File 'lib/exwiw/query_ast.rb', line 163

def join(join_clause)
  @join_clauses << join_clause
end

#select(columns) ⇒ Object



151
152
153
# File 'lib/exwiw/query_ast.rb', line 151

def select(columns)
  @columns = map_column_value(columns)
end

#select_all!Object



155
156
157
# File 'lib/exwiw/query_ast.rb', line 155

def select_all!
  @select_all = true
end

#to_hObject



167
168
169
170
171
172
173
174
# File 'lib/exwiw/query_ast.rb', line 167

def to_h
  {
    from: from_table_name,
    columns: select_all ? "*" : columns.map { |c| { name: c.name, value: c.value } },
    joins: join_clauses.map(&:to_h),
    where: where_clauses.map { |w| w.is_a?(String) ? w : w.to_h },
  }
end

#where(where_clause) ⇒ Object



159
160
161
# File 'lib/exwiw/query_ast.rb', line 159

def where(where_clause)
  @where_clauses << where_clause
end