Class: SqlStmt
- Inherits:
-
Object
- Object
- SqlStmt
- Defined in:
- lib/sqlstmt/sqlstmt.rb,
lib/sqlstmt/build.rb
Overview
unless there is something better to return, all methods return self so they can be chained together
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Instance Method Summary collapse
-
#add_row(row) ⇒ Object
used with INSERT VALUES statements only.
- #delete(*tables) ⇒ Object
-
#distinct ⇒ Object
less commonly used methods.
-
#fields ⇒ Object
temporary transition methods.
- #get(*exprs) ⇒ Object
- #group_by(expr) ⇒ Object
- #having(*expr) ⇒ Object
- #ignore ⇒ Object
-
#includes_table?(table_to_find) ⇒ Boolean
methods to analyze what the statement contains.
-
#initialize ⇒ SqlStmt
constructor
A new instance of SqlStmt.
- #initialize_copy(_orig) ⇒ Object
- #insert ⇒ Object
-
#into(into_table) ⇒ Object
used with INSERT statements only.
- #join(table, *exprs) ⇒ Object
- #joins ⇒ Object
- #left_join(table, *exprs) ⇒ Object
- #limit(clause) ⇒ Object
- #no_where ⇒ Object
- #optional_where ⇒ Object
- #order_by(expr) ⇒ Object
- #outfile(str) ⇒ Object
- #replace ⇒ Object
-
#select ⇒ Object
pick statement type.
- #set(field, value) ⇒ Object
- #setq(field, value) ⇒ Object
- #straight_join ⇒ Object
-
#table(table_str, use_index = nil) ⇒ Object
common operations.
- #tables ⇒ Object
- #to_s ⇒ Object (also: #to_sql)
- #update ⇒ Object
- #where(*expr) ⇒ Object
- #wheres ⇒ Object
- #with_rollup ⇒ Object
Constructor Details
#initialize ⇒ SqlStmt
Returns a new instance of SqlStmt.
19 20 21 |
# File 'lib/sqlstmt/sqlstmt.rb', line 19 def initialize @data = SqlStmtLib::SqlData.new end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
17 18 19 |
# File 'lib/sqlstmt/sqlstmt.rb', line 17 def data @data end |
Instance Method Details
#add_row(row) ⇒ Object
used with INSERT VALUES statements only
150 151 152 |
# File 'lib/sqlstmt/sqlstmt.rb', line 150 def add_row(row) @data.rows << row end |
#delete(*tables) ⇒ Object
58 59 60 61 62 |
# File 'lib/sqlstmt/sqlstmt.rb', line 58 def delete(*tables) set_statement_type('delete') @data.tables_to_delete = tables return self end |
#distinct ⇒ Object
less commonly used methods
156 157 158 159 |
# File 'lib/sqlstmt/sqlstmt.rb', line 156 def distinct @data.distinct = true return self end |
#fields ⇒ Object
temporary transition methods
28 29 30 |
# File 'lib/sqlstmt/sqlstmt.rb', line 28 def fields return @data.fields end |
#get(*exprs) ⇒ Object
96 97 98 99 100 |
# File 'lib/sqlstmt/sqlstmt.rb', line 96 def get(*exprs) @data.fields.concat(exprs) @data.called_get = true return self end |
#group_by(expr) ⇒ Object
118 119 120 121 |
# File 'lib/sqlstmt/sqlstmt.rb', line 118 def group_by(expr) @data.group_by = expr return self end |
#having(*expr) ⇒ Object
133 134 135 136 |
# File 'lib/sqlstmt/sqlstmt.rb', line 133 def having(*expr) @data.having.concat(expr) return self end |
#ignore ⇒ Object
171 172 173 174 |
# File 'lib/sqlstmt/sqlstmt.rb', line 171 def ignore @data.ignore = 'IGNORE ' return self end |
#includes_table?(table_to_find) ⇒ Boolean
methods to analyze what the statement contains
182 183 184 185 186 |
# File 'lib/sqlstmt/sqlstmt.rb', line 182 def includes_table?(table_to_find) retval = @data.tables.find { |table| (table.name == table_to_find) || (table.alias == table_to_find) } retval ||= @data.joins.find { |_, table, _| table_names_match?(table, table_to_find) } return retval end |
#initialize_copy(_orig) ⇒ Object
23 24 25 |
# File 'lib/sqlstmt/sqlstmt.rb', line 23 def initialize_copy(_orig) @data = @data.dup end |
#insert ⇒ Object
54 55 56 |
# File 'lib/sqlstmt/sqlstmt.rb', line 54 def insert return set_statement_type('insert') end |
#into(into_table) ⇒ Object
used with INSERT statements only
144 145 146 147 |
# File 'lib/sqlstmt/sqlstmt.rb', line 144 def into(into_table) @data.into_table = into_table return self end |
#join(table, *exprs) ⇒ Object
73 74 75 |
# File 'lib/sqlstmt/sqlstmt.rb', line 73 def join(table, *exprs) return add_join('JOIN', table, exprs) end |
#joins ⇒ Object
36 37 38 |
# File 'lib/sqlstmt/sqlstmt.rb', line 36 def joins return @data.joins end |
#left_join(table, *exprs) ⇒ Object
77 78 79 |
# File 'lib/sqlstmt/sqlstmt.rb', line 77 def left_join(table, *exprs) return add_join('LEFT JOIN', table, exprs) end |
#limit(clause) ⇒ Object
128 129 130 131 |
# File 'lib/sqlstmt/sqlstmt.rb', line 128 def limit(clause) @data.limit = clause return self end |
#no_where ⇒ Object
86 87 88 89 |
# File 'lib/sqlstmt/sqlstmt.rb', line 86 def no_where @data.where_behavior = :exclude return self end |
#optional_where ⇒ Object
91 92 93 94 |
# File 'lib/sqlstmt/sqlstmt.rb', line 91 def optional_where @data.where_behavior = :optional return self end |
#order_by(expr) ⇒ Object
123 124 125 126 |
# File 'lib/sqlstmt/sqlstmt.rb', line 123 def order_by(expr) @data.order_by = expr return self end |
#outfile(str) ⇒ Object
176 177 178 179 |
# File 'lib/sqlstmt/sqlstmt.rb', line 176 def outfile(str) @data.outfile = " INTO OUTFILE #{str}" return self end |
#replace ⇒ Object
166 167 168 169 |
# File 'lib/sqlstmt/sqlstmt.rb', line 166 def replace @data.replace = true return self end |
#select ⇒ Object
pick statement type
46 47 48 |
# File 'lib/sqlstmt/sqlstmt.rb', line 46 def select return set_statement_type('select') end |
#set(field, value) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/sqlstmt/sqlstmt.rb', line 102 def set(field, value) raise "trying to include field #{field} again" if @data.fields.include?(field) # this is to support the special case of INSERT INTO table SELECT * FROM ... # where * specified with no matching insert field list specified if field @data.fields << field end value = value.is_a?(String) ? value : value.to_sql @data.values << value return self end |
#setq(field, value) ⇒ Object
114 115 116 |
# File 'lib/sqlstmt/sqlstmt.rb', line 114 def setq(field, value) return set(field, value.to_sql) end |
#straight_join ⇒ Object
161 162 163 164 |
# File 'lib/sqlstmt/sqlstmt.rb', line 161 def straight_join @data.straight_join = true return self end |
#table(table_str, use_index = nil) ⇒ Object
common operations
66 67 68 69 70 71 |
# File 'lib/sqlstmt/sqlstmt.rb', line 66 def table(table_str, use_index = nil) parts = table_str.split(' ') table_obj = SqlStmtLib::SqlTable.new(table_str, parts[0], parts[1], use_index) @data.tables << table_obj return self end |
#tables ⇒ Object
32 33 34 |
# File 'lib/sqlstmt/sqlstmt.rb', line 32 def tables return @data.tables end |
#to_s ⇒ Object Also known as: to_sql
5 6 7 8 |
# File 'lib/sqlstmt/build.rb', line 5 def to_s SqlStmtLib::MysqlChecker.new(@data).run return SqlStmtLib::MysqlBuilder.new(@data).build_stmt end |
#update ⇒ Object
50 51 52 |
# File 'lib/sqlstmt/sqlstmt.rb', line 50 def update return set_statement_type('update') end |
#where(*expr) ⇒ Object
81 82 83 84 |
# File 'lib/sqlstmt/sqlstmt.rb', line 81 def where(*expr) @data.wheres.concat(expr) return self end |
#wheres ⇒ Object
40 41 42 |
# File 'lib/sqlstmt/sqlstmt.rb', line 40 def wheres return @data.wheres end |
#with_rollup ⇒ Object
138 139 140 141 |
# File 'lib/sqlstmt/sqlstmt.rb', line 138 def with_rollup @data.with_rollup = true return self end |