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.



115
116
117
118
119
120
121
# File 'lib/exwiw/query_ast.rb', line 115

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.



113
114
115
# File 'lib/exwiw/query_ast.rb', line 113

def columns
  @columns
end

#from_table_nameObject (readonly)

Returns the value of attribute from_table_name.



113
114
115
# File 'lib/exwiw/query_ast.rb', line 113

def from_table_name
  @from_table_name
end

#join_clausesObject (readonly)

Returns the value of attribute join_clauses.



113
114
115
# File 'lib/exwiw/query_ast.rb', line 113

def join_clauses
  @join_clauses
end

#select_allObject (readonly)

Returns the value of attribute select_all.



113
114
115
# File 'lib/exwiw/query_ast.rb', line 113

def select_all
  @select_all
end

#where_clausesObject (readonly)

Returns the value of attribute where_clauses.



113
114
115
# File 'lib/exwiw/query_ast.rb', line 113

def where_clauses
  @where_clauses
end

Instance Method Details

#from(table) ⇒ Object



123
124
125
# File 'lib/exwiw/query_ast.rb', line 123

def from(table)
  @from_table_name = table
end

#join(join_clause) ⇒ Object



139
140
141
# File 'lib/exwiw/query_ast.rb', line 139

def join(join_clause)
  @join_clauses << join_clause
end

#select(columns) ⇒ Object



127
128
129
# File 'lib/exwiw/query_ast.rb', line 127

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

#select_all!Object



131
132
133
# File 'lib/exwiw/query_ast.rb', line 131

def select_all!
  @select_all = true
end

#to_hObject



143
144
145
146
147
148
149
150
# File 'lib/exwiw/query_ast.rb', line 143

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



135
136
137
# File 'lib/exwiw/query_ast.rb', line 135

def where(where_clause)
  @where_clauses << where_clause
end